Skip to content

Commit 0b51aa3

Browse files
authored
Merge pull request #10 from bytesview/new_updates
added feature to change base url of api
2 parents 290dca6 + 0aa5461 commit 0b51aa3

3 files changed

Lines changed: 22 additions & 15 deletions

File tree

newsdataapi/constants.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22
BASE_URL = 'https://newsdata.io/api/1/'
33

44
# Latest News URL
5-
LATEST_URL = BASE_URL + 'latest'
5+
LATEST_ENDPOINT = 'latest'
66

77
# News Archive URL
8-
ARCHIVE_URL = BASE_URL + 'archive'
8+
ARCHIVE_ENDPOINT = 'archive'
99

1010
# News Sources URL
11-
SOURCES_URL = BASE_URL + 'sources'
11+
SOURCES_ENDPOINT = 'sources'
1212

1313
# News Crypto URL
14-
CRYPTO_URL = BASE_URL + 'crypto'
14+
CRYPTO_ENDPOINT = 'crypto'
1515

1616
# Default request values
1717
DEFAULT_REQUEST_TIMEOUT = 300

newsdataapi/newsdataapi_client.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
from datetime import datetime,timezone
66
from newsdataapi.helpers import FileHandler
77
from requests.exceptions import RequestException
8-
from urllib.parse import urlencode, quote,urlparse,parse_qs
98
from newsdataapi.newsdataapi_exception import NewsdataException
9+
from urllib.parse import urlencode, quote,urlparse,parse_qs,urljoin
1010

1111
class NewsDataApiClient(FileHandler):
1212

@@ -24,7 +24,14 @@ def __init__(
2424
self.proxies = proxies
2525
self.request_timeout = request_timeout
2626
self.is_debug = debug
27+
self.set_base_url()
2728
super().__init__(folder_path=folder_path)
29+
30+
def set_base_url(self,new_base_url:str=constants.BASE_URL)->None:
31+
self.latest_url = urljoin(new_base_url,constants.LATEST_ENDPOINT)
32+
self.archive_url = urljoin(new_base_url,constants.ARCHIVE_ENDPOINT)
33+
self.crypto_url = urljoin(new_base_url,constants.CRYPTO_ENDPOINT)
34+
self.sources_url = urljoin(new_base_url,constants.SOURCES_ENDPOINT)
2835

2936
def set_retries( self, max_retries:int, retry_delay:int)->None:
3037
""" API maximum retry and delay"""
@@ -204,9 +211,9 @@ def news_api(
204211
URL_parameters = self.__validate_parms(user_param=params)
205212
URL_parameters_encoded = urlencode(URL_parameters, quote_via=quote)
206213
if scroll == True:
207-
return self.__get_feeds_all(url=f'{constants.LATEST_URL}?{URL_parameters_encoded}',max_result=max_result)
214+
return self.__get_feeds_all(url=f'{self.latest_url}?{URL_parameters_encoded}',max_result=max_result)
208215
else:
209-
return self.__get_feeds(url=f'{constants.LATEST_URL}?{URL_parameters_encoded}')
216+
return self.__get_feeds(url=f'{self.latest_url}?{URL_parameters_encoded}')
210217

211218
def latest_api(
212219
self, q:Optional[str]=None, qInTitle:Optional[str]=None, country:Optional[Union[str, list]]=None, category:Optional[Union[str, list]]=None,
@@ -228,9 +235,9 @@ def latest_api(
228235
URL_parameters = self.__validate_parms(user_param=params)
229236
URL_parameters_encoded = urlencode(URL_parameters, quote_via=quote)
230237
if scroll == True:
231-
return self.__get_feeds_all(url=f'{constants.LATEST_URL}?{URL_parameters_encoded}',max_result=max_result)
238+
return self.__get_feeds_all(url=f'{self.latest_url}?{URL_parameters_encoded}',max_result=max_result)
232239
else:
233-
return self.__get_feeds(url=f'{constants.LATEST_URL}?{URL_parameters_encoded}')
240+
return self.__get_feeds(url=f'{self.latest_url}?{URL_parameters_encoded}')
234241

235242
def archive_api(
236243
self, q:Optional[str]=None, qInTitle:Optional[str]=None, country:Optional[Union[str, list]]=None, category:Optional[Union[str, list]]=None,
@@ -251,9 +258,9 @@ def archive_api(
251258
URL_parameters = self.__validate_parms(user_param=params)
252259
URL_parameters_encoded = urlencode(URL_parameters, quote_via=quote)
253260
if scroll == True:
254-
return self.__get_feeds_all(url=f'{constants.ARCHIVE_URL}?{URL_parameters_encoded}',max_result=max_result)
261+
return self.__get_feeds_all(url=f'{self.archive_url}?{URL_parameters_encoded}',max_result=max_result)
255262
else:
256-
return self.__get_feeds(url=f'{constants.ARCHIVE_URL}?{URL_parameters_encoded}')
263+
return self.__get_feeds(url=f'{self.archive_url}?{URL_parameters_encoded}')
257264

258265
def sources_api( self, country:Optional[str]= None, category:Optional[str]= None, language:Optional[str]= None, prioritydomain:Optional[str]= None,raw_query:Optional[str]=None):
259266
"""
@@ -263,7 +270,7 @@ def sources_api( self, country:Optional[str]= None, category:Optional[str]= None
263270
params = {"apikey":self.apikey, "country":country, "category":category, "language":language, "prioritydomain":prioritydomain,'raw_query':raw_query}
264271
URL_parameters = self.__validate_parms(user_param=params)
265272
URL_parameters_encoded = urlencode(URL_parameters, quote_via=quote)
266-
return self.__get_feeds(url=f'{constants.SOURCES_URL}?{URL_parameters_encoded}')
273+
return self.__get_feeds(url=f'{self.sources_url}?{URL_parameters_encoded}')
267274

268275
def crypto_api(
269276
self, q:Optional[str]=None, qInTitle:Optional[str]=None,language:Optional[Union[str, list]]=None, domain:Optional[Union[str, list]]=None,
@@ -287,9 +294,9 @@ def crypto_api(
287294
URL_parameters = self.__validate_parms(user_param=params)
288295
URL_parameters_encoded = urlencode(URL_parameters, quote_via=quote)
289296
if scroll == True:
290-
return self.__get_feeds_all(url=f'{constants.CRYPTO_URL}?{URL_parameters_encoded}',max_result=max_result)
297+
return self.__get_feeds_all(url=f'{self.crypto_url}?{URL_parameters_encoded}',max_result=max_result)
291298
else:
292-
return self.__get_feeds(url=f'{constants.CRYPTO_URL}?{URL_parameters_encoded}')
299+
return self.__get_feeds(url=f'{self.crypto_url}?{URL_parameters_encoded}')
293300

294301
def __del__(self):
295302
if isinstance(self.request_method,requests.Session):

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
setup(
88
name='newsdataapi',
9-
version='0.1.20',
9+
version='0.1.21',
1010
packages=['newsdataapi'],
1111
description='Python library for newsdata client-API Call',
1212
long_description=long_description,

0 commit comments

Comments
 (0)