@@ -73,6 +73,22 @@ public function geocodeQuery(GeocodeQuery $query): Collection
7373 $ url = sprintf ('%s&language=%s ' , $ url , $ query ->getLocale ());
7474 }
7575
76+ return $ this ->executeQuery ($ url );
77+
78+ }
79+
80+ public function reverseQuery (ReverseQuery $ query ): Collection
81+ {
82+ throw new UnsupportedOperation ('The Ipstack provider is not able to do reverse geocoding. ' );
83+ }
84+
85+ public function getName (): string
86+ {
87+ return 'ipstack ' ;
88+ }
89+
90+ private function executeQuery (string $ url ): AddressCollection
91+ {
7692 $ body = $ this ->getUrlContents ($ url );
7793 $ data = json_decode ($ body , true );
7894
@@ -99,26 +115,17 @@ public function geocodeQuery(GeocodeQuery $query): Collection
99115 return new AddressCollection ([]);
100116 }
101117
102- $ locations [] = Address::createFromArray ([
103- 'providedBy ' => $ this ->getName (),
104- 'latitude ' => $ data ['latitude ' ] ?: null ,
105- 'longitude ' => $ data ['longitude ' ] ?: null ,
106- 'locality ' => $ data ['city ' ] ?: null ,
107- 'postalCode ' => $ data ['zip ' ] ?: null ,
108- 'country ' => $ data ['country_name ' ] ?: null ,
109- 'countryCode ' => $ data ['country_code ' ] ?: null ,
118+ return new AddressCollection ([
119+ Address::createFromArray ([
120+ 'providedBy ' => $ this ->getName (),
121+ 'latitude ' => $ data ['latitude ' ] ?? null ,
122+ 'longitude ' => $ data ['longitude ' ] ?? null ,
123+ 'locality ' => $ data ['city ' ] ?? null ,
124+ 'postalCode ' => $ data ['zip ' ] ?? null ,
125+ 'country ' => $ data ['country_name ' ] ?? null ,
126+ 'adminLevels ' => isset ($ data ['region_name ' ]) ? [['name ' => $ data ['region_name ' ], 'level ' => 1 ]] : [],
127+ 'countryCode ' => $ data ['country_code ' ] ?? null ,
128+ ])
110129 ]);
111-
112- return new AddressCollection ($ locations );
113- }
114-
115- public function reverseQuery (ReverseQuery $ query ): Collection
116- {
117- throw new UnsupportedOperation ('The Ipstack provider is not able to do reverse geocoding. ' );
118- }
119-
120- public function getName (): string
121- {
122- return 'ipstack ' ;
123130 }
124131}
0 commit comments