Skip to content

Commit dc2ae8b

Browse files
committed
remove decoder object
1 parent 2723efd commit dc2ae8b

2 files changed

Lines changed: 10 additions & 24 deletions

File tree

serpapi/serpapi.py

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class HttpClient:
88
"""Simple HTTP client wrapper around urllib3"""
99

1010
BACKEND = 'https://serpapi.com'
11-
SUPPORTED_DECODER = ['json', 'html', 'object']
11+
SUPPORTED_DECODER = ['json', 'html']
1212

1313
def __init__(self, parameter: dict = None):
1414
"""Initialize a SerpApi Client with the default parameters provided.
@@ -45,7 +45,6 @@ def start(self, path: str, parameter: dict = None, decoder: str = 'json'):
4545
The response is decoded using the selected decoder:
4646
- html: raw HTML response
4747
- json: deep dict contains search results
48-
- object: containing search results as a dynamic object
4948
5049
Parameters:
5150
---
@@ -60,16 +59,11 @@ def start(self, path: str, parameter: dict = None, decoder: str = 'json'):
6059
6160
Returns:
6261
---
63-
dict|str|object
62+
dict|str
6463
decoded HTTP response"""
6564
# track client language
6665
self.parameter['source'] = 'serpapi-python:' + __version__
67-
68-
# set output type
69-
if decoder == 'object':
70-
self.parameter['output'] = 'json'
71-
else:
72-
self.parameter['output'] = decoder
66+
self.parameter['output'] = decoder
7367

7468
# merge parameter defaults and overrides
7569
fields = self.parameter.copy()
@@ -106,7 +100,7 @@ def decode(self, response: any, decoder: str):
106100
return payload
107101

108102
raise SerpApiException("Invalid decoder: " +
109-
decoder + ", available: json, html, object")
103+
decoder + ", available: json, html")
110104

111105

112106
class Client(HttpClient):
@@ -130,7 +124,7 @@ def __init__(self, parameter: dict = None):
130124
def search(self, parameter: dict = None, decoder: str = 'json'):
131125
"""
132126
make search then decode the output
133-
decoder supported 'json', 'html', 'object'
127+
decoder supported 'json', 'html'
134128
135129
Parameters
136130
----------
@@ -145,7 +139,6 @@ def search(self, parameter: dict = None, decoder: str = 'json'):
145139
search results returns as :
146140
dict if decoder = 'json'
147141
str if decoder = 'html'
148-
object if decoder = 'object'
149142
"""
150143
return self.start(path='/search', parameter=parameter, decoder=decoder)
151144

@@ -194,12 +187,9 @@ def search_archive(self, search_id: str, decoder: str = 'json'):
194187
"""
195188
path = "/searches/" + str(search_id) + "."
196189
if decoder in self.SUPPORTED_DECODER:
197-
if decoder == "object":
198-
path += "json"
199-
else:
200-
path += decoder
190+
path += decoder
201191
else:
202-
raise SerpApiException('Decoder must be json or html or object')
192+
raise SerpApiException('Decoder must be json or html')
203193
return self.start(path, {}, decoder)
204194

205195
def account(self, api_key: str = None):

tests/test_search_archive.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
11
import unittest
22
import os
3-
import pprint
43
import serpapi
54
import pytest
65

7-
# This test shows how to extends serpapi.Client
8-
# without using client engine wrapper.
9-
#
10-
11-
126
class TestSearchArchive(unittest.TestCase):
137

148
@unittest.skipIf((os.getenv("API_KEY") == None), "no api_key provided")
@@ -23,11 +17,13 @@ def test_search_archive(self):
2317
})
2418
self.assertEqual(data.get("error"), None)
2519
self.assertIsNotNone(data["organic_results"][0]["title"])
20+
# search unique search identifier
2621
search_id = data['search_metadata']['id']
22+
# fetch results from the archive (free of charge)
2723
data_archive = client.search_archive(search_id)
2824
self.assertEqual(data_archive['organic_results'][0], data["organic_results"][0])
2925

30-
# code coverage
26+
# fetch results from the archive again (code coverage)
3127
object_archive = client.search_archive(search_id, 'object')
3228
self.assertIsNotNone(object_archive)
3329
self.assertEqual(object_archive.organic_results[0].title, data["organic_results"][0]["title"])

0 commit comments

Comments
 (0)