@@ -512,121 +512,167 @@ protected Map<String, Object> transform(final DomainResponse response) {
512512 }
513513 }
514514
515- static class Enterprise extends AbstractBase <EnterpriseResponse , EnterpriseResponse > {
515+ record CacheableEnterpriseResponse (
516+ Integer countryConfidence ,
517+ Boolean isInEuropeanUnion ,
518+ String countryIsoCode ,
519+ String countryName ,
520+ String continentCode ,
521+ String continentName ,
522+ String regionIsoCode ,
523+ String regionName ,
524+ Integer cityConfidence ,
525+ String cityName ,
526+ String timezone ,
527+ Double latitude ,
528+ Double longitude ,
529+ Integer accuracyRadius ,
530+ String postalCode ,
531+ Integer postalConfidence ,
532+ Long asn ,
533+ String organizationName ,
534+ boolean isHostingProvider ,
535+ boolean isTorExitNode ,
536+ boolean isAnonymousVpn ,
537+ boolean isAnonymous ,
538+ boolean isPublicProxy ,
539+ boolean isResidentialProxy ,
540+ String domain ,
541+ String isp ,
542+ String ispOrganization ,
543+ String mobileCountryCode ,
544+ String mobileNetworkCode ,
545+ String userType ,
546+ String connectionType ,
547+ Boolean registeredCountryIsInEuropeanUnion ,
548+ String registeredCountryIsoCode ,
549+ String registeredCountryName
550+ ) {}
551+
552+ static class Enterprise extends AbstractBase <EnterpriseResponse , Result <CacheableEnterpriseResponse >> {
516553 Enterprise (final Set <Database .Property > properties ) {
517554 super (properties , EnterpriseResponse .class , EnterpriseResponse ::new );
518555 }
519556
520557 @ Override
521- protected EnterpriseResponse cacheableRecord (EnterpriseResponse response ) {
522- return response ;
558+ protected Result <CacheableEnterpriseResponse > cacheableRecord (EnterpriseResponse response ) {
559+ final com .maxmind .geoip2 .record .Country country = response .getCountry ();
560+ final Continent continent = response .getContinent ();
561+ final Subdivision subdivision = response .getMostSpecificSubdivision ();
562+ final com .maxmind .geoip2 .record .City city = response .getCity ();
563+ final Location location = response .getLocation ();
564+ final Postal postal = response .getPostal ();
565+ final com .maxmind .geoip2 .record .Country registeredCountry = response .getRegisteredCountry ();
566+ final Traits traits = response .getTraits ();
567+
568+ return new Result <>(
569+ new CacheableEnterpriseResponse (
570+ country .getConfidence (),
571+ isInEuropeanUnion (country ),
572+ country .getIsoCode (),
573+ country .getName (),
574+ continent .getCode (),
575+ continent .getName (),
576+ regionIsoCode (country , subdivision ),
577+ subdivision .getName (),
578+ city .getConfidence (),
579+ city .getName (),
580+ location .getTimeZone (),
581+ location .getLatitude (),
582+ location .getLongitude (),
583+ location .getAccuracyRadius (),
584+ postal .getCode (),
585+ postal .getConfidence (),
586+ traits .getAutonomousSystemNumber (),
587+ traits .getAutonomousSystemOrganization (),
588+ traits .isHostingProvider (),
589+ traits .isTorExitNode (),
590+ traits .isAnonymousVpn (),
591+ traits .isAnonymous (),
592+ traits .isPublicProxy (),
593+ traits .isResidentialProxy (),
594+ traits .getDomain (),
595+ traits .getIsp (),
596+ traits .getOrganization (),
597+ traits .getMobileCountryCode (),
598+ traits .getMobileNetworkCode (),
599+ traits .getUserType (),
600+ traits .getConnectionType () == null ? null : traits .getConnectionType ().toString (),
601+ isInEuropeanUnion (registeredCountry ),
602+ registeredCountry .getIsoCode (),
603+ registeredCountry .getName ()
604+ ),
605+ traits .getIpAddress (),
606+ traits .getNetwork ().toString ()
607+ );
523608 }
524609
525610 @ Override
526- protected Map <String , Object > transform (final EnterpriseResponse response ) {
527- com .maxmind .geoip2 .record .Country country = response .getCountry ();
528- com .maxmind .geoip2 .record .Country registeredCountry = response .getRegisteredCountry ();
529- com .maxmind .geoip2 .record .City city = response .getCity ();
530- Location location = response .getLocation ();
531- Continent continent = response .getContinent ();
532- Subdivision subdivision = response .getMostSpecificSubdivision ();
533- Postal postal = response .getPostal ();
534-
535- Long asn = response .getTraits ().getAutonomousSystemNumber ();
536- String organizationName = response .getTraits ().getAutonomousSystemOrganization ();
537- Network network = response .getTraits ().getNetwork ();
538-
539- String isp = response .getTraits ().getIsp ();
540- String ispOrganization = response .getTraits ().getOrganization ();
541- String mobileCountryCode = response .getTraits ().getMobileCountryCode ();
542- String mobileNetworkCode = response .getTraits ().getMobileNetworkCode ();
543-
544- boolean isHostingProvider = response .getTraits ().isHostingProvider ();
545- boolean isTorExitNode = response .getTraits ().isTorExitNode ();
546- boolean isAnonymousVpn = response .getTraits ().isAnonymousVpn ();
547- boolean isAnonymous = response .getTraits ().isAnonymous ();
548- boolean isPublicProxy = response .getTraits ().isPublicProxy ();
549- boolean isResidentialProxy = response .getTraits ().isResidentialProxy ();
550-
551- String userType = response .getTraits ().getUserType ();
552-
553- String domain = response .getTraits ().getDomain ();
554-
555- ConnectionTypeResponse .ConnectionType connectionType = response .getTraits ().getConnectionType ();
611+ protected Map <String , Object > transform (final Result <CacheableEnterpriseResponse > result ) {
612+ CacheableEnterpriseResponse response = result .result ();
556613
557614 Map <String , Object > data = new HashMap <>();
558615 for (Database .Property property : this .properties ) {
559616 switch (property ) {
560- case IP -> data .put ("ip" , response . getTraits (). getIpAddress ());
617+ case IP -> data .put ("ip" , result . ip ());
561618 case COUNTRY_CONFIDENCE -> {
562- Integer countryConfidence = country .getConfidence ();
563- if (countryConfidence != null ) {
564- data .put ("country_confidence" , countryConfidence );
619+ if (response .countryConfidence != null ) {
620+ data .put ("country_confidence" , response .countryConfidence );
565621 }
566622 }
567623 case COUNTRY_IN_EUROPEAN_UNION -> {
568- Boolean isInEuropeanUnion = isInEuropeanUnion (country );
569- if (isInEuropeanUnion != null ) {
570- data .put ("country_in_european_union" , isInEuropeanUnion );
624+ if (response .isInEuropeanUnion != null ) {
625+ data .put ("country_in_european_union" , response .isInEuropeanUnion );
571626 }
572627 }
573628 case COUNTRY_ISO_CODE -> {
574- String countryIsoCode = country .getIsoCode ();
575- if (countryIsoCode != null ) {
576- data .put ("country_iso_code" , countryIsoCode );
629+ if (response .countryIsoCode != null ) {
630+ data .put ("country_iso_code" , response .countryIsoCode );
577631 }
578632 }
579633 case COUNTRY_NAME -> {
580- String countryName = country .getName ();
581- if (countryName != null ) {
582- data .put ("country_name" , countryName );
634+ if (response .countryName != null ) {
635+ data .put ("country_name" , response .countryName );
583636 }
584637 }
585638 case CONTINENT_CODE -> {
586- String continentCode = continent .getCode ();
587- if (continentCode != null ) {
588- data .put ("continent_code" , continentCode );
639+ if (response .continentCode != null ) {
640+ data .put ("continent_code" , response .continentCode );
589641 }
590642 }
591643 case CONTINENT_NAME -> {
592- String continentName = continent .getName ();
593- if (continentName != null ) {
594- data .put ("continent_name" , continentName );
644+ if (response .continentName != null ) {
645+ data .put ("continent_name" , response .continentName );
595646 }
596647 }
597648 case REGION_ISO_CODE -> {
598- String regionIsoCode = regionIsoCode (country , subdivision );
599- if (regionIsoCode != null ) {
600- data .put ("region_iso_code" , regionIsoCode );
649+ if (response .regionIsoCode != null ) {
650+ data .put ("region_iso_code" , response .regionIsoCode );
601651 }
602652 }
603653 case REGION_NAME -> {
604- String subdivisionName = subdivision .getName ();
605- if (subdivisionName != null ) {
606- data .put ("region_name" , subdivisionName );
654+ if (response .regionName != null ) {
655+ data .put ("region_name" , response .regionName );
607656 }
608657 }
609658 case CITY_CONFIDENCE -> {
610- Integer cityConfidence = city .getConfidence ();
611- if (cityConfidence != null ) {
612- data .put ("city_confidence" , cityConfidence );
659+ if (response .cityConfidence != null ) {
660+ data .put ("city_confidence" , response .cityConfidence );
613661 }
614662 }
615663 case CITY_NAME -> {
616- String cityName = city .getName ();
617- if (cityName != null ) {
618- data .put ("city_name" , cityName );
664+ if (response .cityName != null ) {
665+ data .put ("city_name" , response .cityName );
619666 }
620667 }
621668 case TIMEZONE -> {
622- String locationTimeZone = location .getTimeZone ();
623- if (locationTimeZone != null ) {
624- data .put ("timezone" , locationTimeZone );
669+ if (response .timezone != null ) {
670+ data .put ("timezone" , response .timezone );
625671 }
626672 }
627673 case LOCATION -> {
628- Double latitude = location . getLatitude () ;
629- Double longitude = location . getLongitude () ;
674+ Double latitude = response . latitude ;
675+ Double longitude = response . longitude ;
630676 if (latitude != null && longitude != null ) {
631677 Map <String , Object > locationObject = HashMap .newHashMap (2 );
632678 locationObject .put ("lat" , latitude );
@@ -635,103 +681,101 @@ protected Map<String, Object> transform(final EnterpriseResponse response) {
635681 }
636682 }
637683 case ACCURACY_RADIUS -> {
638- Integer accuracyRadius = location .getAccuracyRadius ();
639- if (accuracyRadius != null ) {
640- data .put ("accuracy_radius" , accuracyRadius );
684+ if (response .accuracyRadius != null ) {
685+ data .put ("accuracy_radius" , response .accuracyRadius );
641686 }
642687 }
643688 case POSTAL_CODE -> {
644- if (postal . getCode () != null ) {
645- data .put ("postal_code" , postal . getCode () );
689+ if (response . postalCode != null ) {
690+ data .put ("postal_code" , response . postalCode );
646691 }
647692 }
648693 case POSTAL_CONFIDENCE -> {
649- if (postal . getConfidence () != null ) {
650- data .put ("postal_confidence" , postal . getConfidence () );
694+ if (response . postalConfidence != null ) {
695+ data .put ("postal_confidence" , response . postalConfidence );
651696 }
652697 }
653698 case ASN -> {
654- if (asn != null ) {
655- data .put ("asn" , asn );
699+ if (response . asn != null ) {
700+ data .put ("asn" , response . asn );
656701 }
657702 }
658703 case ORGANIZATION_NAME -> {
659- if (organizationName != null ) {
660- data .put ("organization_name" , organizationName );
704+ if (response . organizationName != null ) {
705+ data .put ("organization_name" , response . organizationName );
661706 }
662707 }
663708 case NETWORK -> {
664- if (network != null ) {
665- data .put ("network" , network . toString ());
709+ if (result . network () != null ) {
710+ data .put ("network" , result . network ());
666711 }
667712 }
668713 case HOSTING_PROVIDER -> {
669- data .put ("hosting_provider" , isHostingProvider );
714+ data .put ("hosting_provider" , response . isHostingProvider );
670715 }
671716 case TOR_EXIT_NODE -> {
672- data .put ("tor_exit_node" , isTorExitNode );
717+ data .put ("tor_exit_node" , response . isTorExitNode );
673718 }
674719 case ANONYMOUS_VPN -> {
675- data .put ("anonymous_vpn" , isAnonymousVpn );
720+ data .put ("anonymous_vpn" , response . isAnonymousVpn );
676721 }
677722 case ANONYMOUS -> {
678- data .put ("anonymous" , isAnonymous );
723+ data .put ("anonymous" , response . isAnonymous );
679724 }
680725 case PUBLIC_PROXY -> {
681- data .put ("public_proxy" , isPublicProxy );
726+ data .put ("public_proxy" , response . isPublicProxy );
682727 }
683728 case RESIDENTIAL_PROXY -> {
684- data .put ("residential_proxy" , isResidentialProxy );
729+ data .put ("residential_proxy" , response . isResidentialProxy );
685730 }
686731 case DOMAIN -> {
687- if (domain != null ) {
688- data .put ("domain" , domain );
732+ if (response . domain != null ) {
733+ data .put ("domain" , response . domain );
689734 }
690735 }
691736 case ISP -> {
692- if (isp != null ) {
693- data .put ("isp" , isp );
737+ if (response . isp != null ) {
738+ data .put ("isp" , response . isp );
694739 }
695740 }
696741 case ISP_ORGANIZATION_NAME -> {
697- if (ispOrganization != null ) {
698- data .put ("isp_organization_name" , ispOrganization );
742+ if (response . ispOrganization != null ) {
743+ data .put ("isp_organization_name" , response . ispOrganization );
699744 }
700745 }
701746 case MOBILE_COUNTRY_CODE -> {
702- if (mobileCountryCode != null ) {
703- data .put ("mobile_country_code" , mobileCountryCode );
747+ if (response . mobileCountryCode != null ) {
748+ data .put ("mobile_country_code" , response . mobileCountryCode );
704749 }
705750 }
706751 case MOBILE_NETWORK_CODE -> {
707- if (mobileNetworkCode != null ) {
708- data .put ("mobile_network_code" , mobileNetworkCode );
752+ if (response . mobileNetworkCode != null ) {
753+ data .put ("mobile_network_code" , response . mobileNetworkCode );
709754 }
710755 }
711756 case USER_TYPE -> {
712- if (userType != null ) {
713- data .put ("user_type" , userType );
757+ if (response . userType != null ) {
758+ data .put ("user_type" , response . userType );
714759 }
715760 }
716761 case CONNECTION_TYPE -> {
717- if (connectionType != null ) {
718- data .put ("connection_type" , connectionType . toString () );
762+ if (response . connectionType != null ) {
763+ data .put ("connection_type" , response . connectionType );
719764 }
720765 }
721766 case REGISTERED_COUNTRY_IN_EUROPEAN_UNION -> {
722- Boolean isInEuropeanUnion = isInEuropeanUnion (registeredCountry );
723- if (isInEuropeanUnion != null ) {
724- data .put ("registered_country_in_european_union" , isInEuropeanUnion );
767+ if (response .registeredCountryIsInEuropeanUnion != null ) {
768+ data .put ("registered_country_in_european_union" , response .registeredCountryIsInEuropeanUnion );
725769 }
726770 }
727771 case REGISTERED_COUNTRY_ISO_CODE -> {
728- if (registeredCountry . getIsoCode () != null ) {
729- data .put ("registered_country_iso_code" , registeredCountry . getIsoCode () );
772+ if (response . registeredCountryIsoCode != null ) {
773+ data .put ("registered_country_iso_code" , response . registeredCountryIsoCode );
730774 }
731775 }
732776 case REGISTERED_COUNTRY_NAME -> {
733- if (registeredCountry . getName () != null ) {
734- data .put ("registered_country_name" , registeredCountry . getName () );
777+ if (response . registeredCountryName != null ) {
778+ data .put ("registered_country_name" , response . registeredCountryName );
735779 }
736780 }
737781 }
0 commit comments