@@ -480,121 +480,167 @@ protected Map<String, Object> transform(final DomainResponse response) {
480480 }
481481 }
482482
483- static class Enterprise extends AbstractBase <EnterpriseResponse , EnterpriseResponse > {
483+ record CacheableEnterpriseResponse (
484+ Integer countryConfidence ,
485+ Boolean isInEuropeanUnion ,
486+ String countryIsoCode ,
487+ String countryName ,
488+ String continentCode ,
489+ String continentName ,
490+ String regionIsoCode ,
491+ String regionName ,
492+ Integer cityConfidence ,
493+ String cityName ,
494+ String timezone ,
495+ Double latitude ,
496+ Double longitude ,
497+ Integer accuracyRadius ,
498+ String postalCode ,
499+ Integer postalConfidence ,
500+ Long asn ,
501+ String organizationName ,
502+ boolean isHostingProvider ,
503+ boolean isTorExitNode ,
504+ boolean isAnonymousVpn ,
505+ boolean isAnonymous ,
506+ boolean isPublicProxy ,
507+ boolean isResidentialProxy ,
508+ String domain ,
509+ String isp ,
510+ String ispOrganization ,
511+ String mobileCountryCode ,
512+ String mobileNetworkCode ,
513+ String userType ,
514+ String connectionType ,
515+ Boolean registeredCountryIsInEuropeanUnion ,
516+ String registeredCountryIsoCode ,
517+ String registeredCountryName
518+ ) {}
519+
520+ static class Enterprise extends AbstractBase <EnterpriseResponse , Result <CacheableEnterpriseResponse >> {
484521 Enterprise (final Set <Database .Property > properties ) {
485522 super (properties , EnterpriseResponse .class , EnterpriseResponse ::new );
486523 }
487524
488525 @ Override
489- protected EnterpriseResponse cacheableRecord (EnterpriseResponse response ) {
490- return response ;
526+ protected Result <CacheableEnterpriseResponse > cacheableRecord (EnterpriseResponse response ) {
527+ final com .maxmind .geoip2 .record .Country country = response .getCountry ();
528+ final Continent continent = response .getContinent ();
529+ final Subdivision subdivision = response .getMostSpecificSubdivision ();
530+ final com .maxmind .geoip2 .record .City city = response .getCity ();
531+ final Location location = response .getLocation ();
532+ final Postal postal = response .getPostal ();
533+ final com .maxmind .geoip2 .record .Country registeredCountry = response .getRegisteredCountry ();
534+ final Traits traits = response .getTraits ();
535+
536+ return new Result <>(
537+ new CacheableEnterpriseResponse (
538+ country .getConfidence (),
539+ isInEuropeanUnion (country ),
540+ country .getIsoCode (),
541+ country .getName (),
542+ continent .getCode (),
543+ continent .getName (),
544+ regionIsoCode (country , subdivision ),
545+ subdivision .getName (),
546+ city .getConfidence (),
547+ city .getName (),
548+ location .getTimeZone (),
549+ location .getLatitude (),
550+ location .getLongitude (),
551+ location .getAccuracyRadius (),
552+ postal .getCode (),
553+ postal .getConfidence (),
554+ traits .getAutonomousSystemNumber (),
555+ traits .getAutonomousSystemOrganization (),
556+ traits .isHostingProvider (),
557+ traits .isTorExitNode (),
558+ traits .isAnonymousVpn (),
559+ traits .isAnonymous (),
560+ traits .isPublicProxy (),
561+ traits .isResidentialProxy (),
562+ traits .getDomain (),
563+ traits .getIsp (),
564+ traits .getOrganization (),
565+ traits .getMobileCountryCode (),
566+ traits .getMobileNetworkCode (),
567+ traits .getUserType (),
568+ traits .getConnectionType () == null ? null : traits .getConnectionType ().toString (),
569+ isInEuropeanUnion (registeredCountry ),
570+ registeredCountry .getIsoCode (),
571+ registeredCountry .getName ()
572+ ),
573+ traits .getIpAddress (),
574+ traits .getNetwork ().toString ()
575+ );
491576 }
492577
493578 @ Override
494- protected Map <String , Object > transform (final EnterpriseResponse response ) {
495- com .maxmind .geoip2 .record .Country country = response .getCountry ();
496- com .maxmind .geoip2 .record .Country registeredCountry = response .getRegisteredCountry ();
497- com .maxmind .geoip2 .record .City city = response .getCity ();
498- Location location = response .getLocation ();
499- Continent continent = response .getContinent ();
500- Subdivision subdivision = response .getMostSpecificSubdivision ();
501- Postal postal = response .getPostal ();
502-
503- Long asn = response .getTraits ().getAutonomousSystemNumber ();
504- String organizationName = response .getTraits ().getAutonomousSystemOrganization ();
505- Network network = response .getTraits ().getNetwork ();
506-
507- String isp = response .getTraits ().getIsp ();
508- String ispOrganization = response .getTraits ().getOrganization ();
509- String mobileCountryCode = response .getTraits ().getMobileCountryCode ();
510- String mobileNetworkCode = response .getTraits ().getMobileNetworkCode ();
511-
512- boolean isHostingProvider = response .getTraits ().isHostingProvider ();
513- boolean isTorExitNode = response .getTraits ().isTorExitNode ();
514- boolean isAnonymousVpn = response .getTraits ().isAnonymousVpn ();
515- boolean isAnonymous = response .getTraits ().isAnonymous ();
516- boolean isPublicProxy = response .getTraits ().isPublicProxy ();
517- boolean isResidentialProxy = response .getTraits ().isResidentialProxy ();
518-
519- String userType = response .getTraits ().getUserType ();
520-
521- String domain = response .getTraits ().getDomain ();
522-
523- ConnectionTypeResponse .ConnectionType connectionType = response .getTraits ().getConnectionType ();
579+ protected Map <String , Object > transform (final Result <CacheableEnterpriseResponse > result ) {
580+ CacheableEnterpriseResponse response = result .result ();
524581
525582 Map <String , Object > data = new HashMap <>();
526583 for (Database .Property property : this .properties ) {
527584 switch (property ) {
528- case IP -> data .put ("ip" , response . getTraits (). getIpAddress ());
585+ case IP -> data .put ("ip" , result . ip ());
529586 case COUNTRY_CONFIDENCE -> {
530- Integer countryConfidence = country .getConfidence ();
531- if (countryConfidence != null ) {
532- data .put ("country_confidence" , countryConfidence );
587+ if (response .countryConfidence != null ) {
588+ data .put ("country_confidence" , response .countryConfidence );
533589 }
534590 }
535591 case COUNTRY_IN_EUROPEAN_UNION -> {
536- Boolean isInEuropeanUnion = isInEuropeanUnion (country );
537- if (isInEuropeanUnion != null ) {
538- data .put ("country_in_european_union" , isInEuropeanUnion );
592+ if (response .isInEuropeanUnion != null ) {
593+ data .put ("country_in_european_union" , response .isInEuropeanUnion );
539594 }
540595 }
541596 case COUNTRY_ISO_CODE -> {
542- String countryIsoCode = country .getIsoCode ();
543- if (countryIsoCode != null ) {
544- data .put ("country_iso_code" , countryIsoCode );
597+ if (response .countryIsoCode != null ) {
598+ data .put ("country_iso_code" , response .countryIsoCode );
545599 }
546600 }
547601 case COUNTRY_NAME -> {
548- String countryName = country .getName ();
549- if (countryName != null ) {
550- data .put ("country_name" , countryName );
602+ if (response .countryName != null ) {
603+ data .put ("country_name" , response .countryName );
551604 }
552605 }
553606 case CONTINENT_CODE -> {
554- String continentCode = continent .getCode ();
555- if (continentCode != null ) {
556- data .put ("continent_code" , continentCode );
607+ if (response .continentCode != null ) {
608+ data .put ("continent_code" , response .continentCode );
557609 }
558610 }
559611 case CONTINENT_NAME -> {
560- String continentName = continent .getName ();
561- if (continentName != null ) {
562- data .put ("continent_name" , continentName );
612+ if (response .continentName != null ) {
613+ data .put ("continent_name" , response .continentName );
563614 }
564615 }
565616 case REGION_ISO_CODE -> {
566- String regionIsoCode = regionIsoCode (country , subdivision );
567- if (regionIsoCode != null ) {
568- data .put ("region_iso_code" , regionIsoCode );
617+ if (response .regionIsoCode != null ) {
618+ data .put ("region_iso_code" , response .regionIsoCode );
569619 }
570620 }
571621 case REGION_NAME -> {
572- String subdivisionName = subdivision .getName ();
573- if (subdivisionName != null ) {
574- data .put ("region_name" , subdivisionName );
622+ if (response .regionName != null ) {
623+ data .put ("region_name" , response .regionName );
575624 }
576625 }
577626 case CITY_CONFIDENCE -> {
578- Integer cityConfidence = city .getConfidence ();
579- if (cityConfidence != null ) {
580- data .put ("city_confidence" , cityConfidence );
627+ if (response .cityConfidence != null ) {
628+ data .put ("city_confidence" , response .cityConfidence );
581629 }
582630 }
583631 case CITY_NAME -> {
584- String cityName = city .getName ();
585- if (cityName != null ) {
586- data .put ("city_name" , cityName );
632+ if (response .cityName != null ) {
633+ data .put ("city_name" , response .cityName );
587634 }
588635 }
589636 case TIMEZONE -> {
590- String locationTimeZone = location .getTimeZone ();
591- if (locationTimeZone != null ) {
592- data .put ("timezone" , locationTimeZone );
637+ if (response .timezone != null ) {
638+ data .put ("timezone" , response .timezone );
593639 }
594640 }
595641 case LOCATION -> {
596- Double latitude = location . getLatitude () ;
597- Double longitude = location . getLongitude () ;
642+ Double latitude = response . latitude ;
643+ Double longitude = response . longitude ;
598644 if (latitude != null && longitude != null ) {
599645 Map <String , Object > locationObject = new HashMap <>();
600646 locationObject .put ("lat" , latitude );
@@ -603,103 +649,101 @@ protected Map<String, Object> transform(final EnterpriseResponse response) {
603649 }
604650 }
605651 case ACCURACY_RADIUS -> {
606- Integer accuracyRadius = location .getAccuracyRadius ();
607- if (accuracyRadius != null ) {
608- data .put ("accuracy_radius" , accuracyRadius );
652+ if (response .accuracyRadius != null ) {
653+ data .put ("accuracy_radius" , response .accuracyRadius );
609654 }
610655 }
611656 case POSTAL_CODE -> {
612- if (postal . getCode () != null ) {
613- data .put ("postal_code" , postal . getCode () );
657+ if (response . postalCode != null ) {
658+ data .put ("postal_code" , response . postalCode );
614659 }
615660 }
616661 case POSTAL_CONFIDENCE -> {
617- if (postal . getConfidence () != null ) {
618- data .put ("postal_confidence" , postal . getConfidence () );
662+ if (response . postalConfidence != null ) {
663+ data .put ("postal_confidence" , response . postalConfidence );
619664 }
620665 }
621666 case ASN -> {
622- if (asn != null ) {
623- data .put ("asn" , asn );
667+ if (response . asn != null ) {
668+ data .put ("asn" , response . asn );
624669 }
625670 }
626671 case ORGANIZATION_NAME -> {
627- if (organizationName != null ) {
628- data .put ("organization_name" , organizationName );
672+ if (response . organizationName != null ) {
673+ data .put ("organization_name" , response . organizationName );
629674 }
630675 }
631676 case NETWORK -> {
632- if (network != null ) {
633- data .put ("network" , network . toString ());
677+ if (result . network () != null ) {
678+ data .put ("network" , result . network ());
634679 }
635680 }
636681 case HOSTING_PROVIDER -> {
637- data .put ("hosting_provider" , isHostingProvider );
682+ data .put ("hosting_provider" , response . isHostingProvider );
638683 }
639684 case TOR_EXIT_NODE -> {
640- data .put ("tor_exit_node" , isTorExitNode );
685+ data .put ("tor_exit_node" , response . isTorExitNode );
641686 }
642687 case ANONYMOUS_VPN -> {
643- data .put ("anonymous_vpn" , isAnonymousVpn );
688+ data .put ("anonymous_vpn" , response . isAnonymousVpn );
644689 }
645690 case ANONYMOUS -> {
646- data .put ("anonymous" , isAnonymous );
691+ data .put ("anonymous" , response . isAnonymous );
647692 }
648693 case PUBLIC_PROXY -> {
649- data .put ("public_proxy" , isPublicProxy );
694+ data .put ("public_proxy" , response . isPublicProxy );
650695 }
651696 case RESIDENTIAL_PROXY -> {
652- data .put ("residential_proxy" , isResidentialProxy );
697+ data .put ("residential_proxy" , response . isResidentialProxy );
653698 }
654699 case DOMAIN -> {
655- if (domain != null ) {
656- data .put ("domain" , domain );
700+ if (response . domain != null ) {
701+ data .put ("domain" , response . domain );
657702 }
658703 }
659704 case ISP -> {
660- if (isp != null ) {
661- data .put ("isp" , isp );
705+ if (response . isp != null ) {
706+ data .put ("isp" , response . isp );
662707 }
663708 }
664709 case ISP_ORGANIZATION_NAME -> {
665- if (ispOrganization != null ) {
666- data .put ("isp_organization_name" , ispOrganization );
710+ if (response . ispOrganization != null ) {
711+ data .put ("isp_organization_name" , response . ispOrganization );
667712 }
668713 }
669714 case MOBILE_COUNTRY_CODE -> {
670- if (mobileCountryCode != null ) {
671- data .put ("mobile_country_code" , mobileCountryCode );
715+ if (response . mobileCountryCode != null ) {
716+ data .put ("mobile_country_code" , response . mobileCountryCode );
672717 }
673718 }
674719 case MOBILE_NETWORK_CODE -> {
675- if (mobileNetworkCode != null ) {
676- data .put ("mobile_network_code" , mobileNetworkCode );
720+ if (response . mobileNetworkCode != null ) {
721+ data .put ("mobile_network_code" , response . mobileNetworkCode );
677722 }
678723 }
679724 case USER_TYPE -> {
680- if (userType != null ) {
681- data .put ("user_type" , userType );
725+ if (response . userType != null ) {
726+ data .put ("user_type" , response . userType );
682727 }
683728 }
684729 case CONNECTION_TYPE -> {
685- if (connectionType != null ) {
686- data .put ("connection_type" , connectionType . toString () );
730+ if (response . connectionType != null ) {
731+ data .put ("connection_type" , response . connectionType );
687732 }
688733 }
689734 case REGISTERED_COUNTRY_IN_EUROPEAN_UNION -> {
690- Boolean isInEuropeanUnion = isInEuropeanUnion (registeredCountry );
691- if (isInEuropeanUnion != null ) {
692- data .put ("registered_country_in_european_union" , isInEuropeanUnion );
735+ if (response .registeredCountryIsInEuropeanUnion != null ) {
736+ data .put ("registered_country_in_european_union" , response .registeredCountryIsInEuropeanUnion );
693737 }
694738 }
695739 case REGISTERED_COUNTRY_ISO_CODE -> {
696- if (registeredCountry . getIsoCode () != null ) {
697- data .put ("registered_country_iso_code" , registeredCountry . getIsoCode () );
740+ if (response . registeredCountryIsoCode != null ) {
741+ data .put ("registered_country_iso_code" , response . registeredCountryIsoCode );
698742 }
699743 }
700744 case REGISTERED_COUNTRY_NAME -> {
701- if (registeredCountry . getName () != null ) {
702- data .put ("registered_country_name" , registeredCountry . getName () );
745+ if (response . registeredCountryName != null ) {
746+ data .put ("registered_country_name" , response . registeredCountryName );
703747 }
704748 }
705749 }
0 commit comments