22
33from __future__ import annotations
44
5- from typing import Any , Optional , Tuple , Type , TypeVar , Union
5+ from typing import Any , Dict , Optional , Tuple , Union
66
77from urllib3 .util .retry import Retry
88
99from justserpapi .api .google_api_api import GoogleAPIApi
1010from justserpapi .api_client import ApiClient
1111from justserpapi .configuration import Configuration
12- from justserpapi .models .responses import (
13- BasePayloadModel ,
14- GoogleAIOverviewResponse ,
15- GoogleAutocompleteResponse ,
16- GoogleImagesSearchResponse ,
17- GoogleMapsSearchResponse ,
18- GoogleNewsSearchResponse ,
19- GoogleSearchResponse ,
20- GoogleShoppingSearchResponse ,
21- )
2212
2313TimeoutValue = Optional [Union [float , Tuple [float , float ]]]
24- T = TypeVar ( "T" , bound = BasePayloadModel )
14+ JSONDict = Dict [ str , Any ]
2515
2616DEFAULT_HOST = "https://api.justserpapi.com"
2717DEFAULT_TIMEOUT : TimeoutValue = 30.0
@@ -52,41 +42,42 @@ def _with_timeout(self, kwargs: dict[str, Any]) -> dict[str, Any]:
5242 kwargs ["_request_timeout" ] = self ._timeout
5343 return kwargs
5444
55- def _typed_call (self , method_name : str , response_model : Type [ T ], ** kwargs : Any ) -> T :
45+ def _json_call (self , method_name : str , ** kwargs : Any ) -> JSONDict :
5646 payload = getattr (self ._api , method_name )(** self ._with_timeout (kwargs ))
57- if isinstance (payload , response_model ):
58- return payload
5947 if isinstance (payload , dict ):
60- return response_model .model_validate (payload )
61- return response_model .model_validate ({"payload" : payload })
48+ return payload
49+ raise TypeError (
50+ "%s returned %s instead of a JSON object."
51+ % (method_name , type (payload ).__name__ )
52+ )
6253
6354
6455class GoogleMapsResource (_GoogleBaseResource ):
65- def search (self , * , query : str , ** kwargs : Any ) -> GoogleMapsSearchResponse :
66- return self ._typed_call ("maps_search" , GoogleMapsSearchResponse , query = query , ** kwargs )
56+ def search (self , * , query : str , ** kwargs : Any ) -> JSONDict :
57+ return self ._json_call ("maps_search" , query = query , ** kwargs )
6758
6859
6960class GoogleNewsResource (_GoogleBaseResource ):
70- def search (self , * , query : str , ** kwargs : Any ) -> GoogleNewsSearchResponse :
71- return self ._typed_call ("news_search" , GoogleNewsSearchResponse , query = query , ** kwargs )
61+ def search (self , * , query : str , ** kwargs : Any ) -> JSONDict :
62+ return self ._json_call ("news_search" , query = query , ** kwargs )
7263
7364
7465class GoogleImagesResource (_GoogleBaseResource ):
75- def search (self , * , query : str , ** kwargs : Any ) -> GoogleImagesSearchResponse :
76- return self ._typed_call ("images_search" , GoogleImagesSearchResponse , query = query , ** kwargs )
66+ def search (self , * , query : str , ** kwargs : Any ) -> JSONDict :
67+ return self ._json_call ("images_search" , query = query , ** kwargs )
7768
7869
7970class GoogleShoppingResource (_GoogleBaseResource ):
80- def search (self , * , query : str , ** kwargs : Any ) -> GoogleShoppingSearchResponse :
81- return self ._typed_call ("shopping_search" , GoogleShoppingSearchResponse , query = query , ** kwargs )
71+ def search (self , * , query : str , ** kwargs : Any ) -> JSONDict :
72+ return self ._json_call ("shopping_search" , query = query , ** kwargs )
8273
8374
8475class GoogleAIResource (_GoogleBaseResource ):
85- def overview (self , * , url : str , ** kwargs : Any ) -> GoogleAIOverviewResponse :
86- return self ._typed_call ("ai_overview" , GoogleAIOverviewResponse , url = url , ** kwargs )
76+ def overview (self , * , url : str , ** kwargs : Any ) -> JSONDict :
77+ return self ._json_call ("ai_overview" , url = url , ** kwargs )
8778
88- def mode (self , * , query : str , ** kwargs : Any ) -> GoogleAIOverviewResponse :
89- return self ._typed_call ("ai_mode" , GoogleAIOverviewResponse , query = query , ** kwargs )
79+ def mode (self , * , query : str , ** kwargs : Any ) -> JSONDict :
80+ return self ._json_call ("ai_mode" , query = query , ** kwargs )
9081
9182
9283class GoogleResource (_GoogleBaseResource ):
@@ -101,11 +92,11 @@ def __init__(self, api_client: ApiClient, timeout: TimeoutValue) -> None:
10192 self .shopping = GoogleShoppingResource (api , timeout )
10293 self .ai = GoogleAIResource (api , timeout )
10394
104- def search (self , * , query : str , ** kwargs : Any ) -> GoogleSearchResponse :
105- return self ._typed_call ("search" , GoogleSearchResponse , query = query , ** kwargs )
95+ def search (self , * , query : str , ** kwargs : Any ) -> JSONDict :
96+ return self ._json_call ("search" , query = query , ** kwargs )
10697
107- def autocomplete (self , * , query : str , ** kwargs : Any ) -> GoogleAutocompleteResponse :
108- return self ._typed_call ("autocomplete" , GoogleAutocompleteResponse , query = query , ** kwargs )
98+ def autocomplete (self , * , query : str , ** kwargs : Any ) -> JSONDict :
99+ return self ._json_call ("autocomplete" , query = query , ** kwargs )
109100
110101
111102class Client :
0 commit comments