2121use GuzzleHttp \Client ;
2222use Mapkit \JWT ;
2323use Exception ;
24+ use function GuzzleHttp \default_user_agent ;
2425
2526/**
2627 * Class GeoService
@@ -763,13 +764,9 @@ private static function _latLngFromAddress_Mapbox ($token, $address, $country):
763764 $ url = str_replace ('.json ' , rawurlencode (', ' . $ country ) . '.json ' , $ url );
764765 }
765766
766- $ referer = Craft::$ app ->getRequest ()->getIsConsoleRequest ()
767- ? Craft::getAlias ('@web ' )
768- : Craft::$ app ->urlManager ->getHostInfo ();
769-
770767 $ data = (string ) static ::_client ()->get ($ url , [
771768 'headers ' => [
772- 'referer ' => $ referer ,
769+ 'referer ' => static :: _referer () ,
773770 ]
774771 ])->getBody ();
775772 $ data = Json::decodeIfJson ($ data );
@@ -796,13 +793,10 @@ private static function _latLngFromAddress_Nominatim ($address, $country): ?arra
796793 $ url .= '&country= ' . rawurlencode ($ country );
797794 }
798795
799- $ referer = Craft::$ app ->getRequest ()->getIsConsoleRequest ()
800- ? Craft::getAlias ('@web ' )
801- : Craft::$ app ->urlManager ->getHostInfo ();
802-
803796 $ data = (string ) static ::_client ()->get ($ url , [
804797 'headers ' => [
805- 'referer ' => $ referer
798+ 'referer ' => static ::_referer (),
799+ 'user-agent ' => static ::_userAgent (),
806800 ]
807801 ])->getBody ();
808802 $ data = Json::decodeIfJson ($ data );
@@ -891,13 +885,10 @@ private static function _addressFromLatLng_Nominatim ($lat, $lng): ?array
891885 $ url .= '&accept-language= ' . Craft::$ app ->locale ->getLanguageID ();
892886 $ url .= '&lat= ' . rawurlencode ($ lat ) . '&lon= ' . rawurldecode ($ lng );
893887
894- $ referer = Craft::$ app ->getRequest ()->getIsConsoleRequest ()
895- ? Craft::getAlias ('@web ' )
896- : Craft::$ app ->urlManager ->getHostInfo ();
897-
898888 $ data = (string ) static ::_client ()->get ($ url , [
899889 'headers ' => [
900- 'referer ' => $ referer
890+ 'referer ' => static ::_referer (),
891+ 'user-agent ' => static ::_userAgent (),
901892 ]
902893 ])->getBody ();
903894 $ data = Json::decodeIfJson ($ data );
@@ -930,6 +921,21 @@ private static function _client ()
930921 return $ client ;
931922 }
932923
924+ private static function _referer ()
925+ {
926+ return Craft::$ app ->getRequest ()->getIsConsoleRequest ()
927+ ? Craft::getAlias ('@web ' )
928+ : Craft::$ app ->urlManager ->getHostInfo ();
929+ }
930+
931+ private static function _userAgent ()
932+ {
933+ // User agent form based on Craft::createGuzzleClient
934+ return 'Craft/ ' . Craft::$ app ->getVersion ()
935+ . ' ' . default_user_agent ()
936+ . ' ' . static ::_referer ();
937+ }
938+
933939 private static function _validateCountryCode (string $ code ): bool
934940 {
935941 return in_array (strtoupper ($ code ), array_keys (static ::$ countries ));
0 commit comments