11import json
22import time
3- from pprint import pprint
43import requests
54import logging
65import pathlib
76
87from typing import Dict
9- from datetime import datetime
10- from datetime import date
118
129
1310class EdgarSession ():
@@ -40,6 +37,8 @@ def __init__(self, client: object) -> None:
4037
4138 self .client : EdgarClient = client
4239 self .resource = 'https://www.sec.gov'
40+ self .api_resource = 'https://data.sec.gov'
41+ self .total_requests = 0
4342
4443 if not pathlib .Path ('logs' ).exists ():
4544 pathlib .Path ('logs' ).mkdir ()
@@ -60,21 +59,28 @@ def __repr__(self) -> str:
6059
6160 return str_representation
6261
63- def build_url (self , endpoint : str ) -> str :
62+ def build_url (self , endpoint : str , use_api : bool = False ) -> str :
6463 """Builds the full url for the endpoint.
6564
6665 ### Parameters
6766 ----
6867 endpoint : str
6968 The endpoint being requested.
7069
70+ use_api : bool (optional, Default=False)
71+ If `True` use the API resource URL, `False`
72+ use the filings resource URL.
73+
7174 ### Returns
7275 ----
7376 str:
7477 The full URL with the endpoint needed.
7578 """
7679
77- url = self .resource + endpoint
80+ if use_api :
81+ url = self .api_resource + endpoint
82+ else :
83+ url = self .resource + endpoint
7884
7985 return url
8086
@@ -84,7 +90,8 @@ def make_request(
8490 endpoint : str ,
8591 params : dict = None ,
8692 data : dict = None ,
87- json_payload : dict = None
93+ json_payload : dict = None ,
94+ use_api : bool = False
8895 ) -> Dict :
8996 """Handles all the requests in the library.
9097
@@ -112,13 +119,17 @@ def make_request(
112119 json : dict (optional, Default=None)
113120 A json data payload for a request
114121
122+ use_api : bool (optional, Default=False)
123+ If `True` use the API resource URL, `False`
124+ use the filings resource URL.
125+
115126 ### Returns:
116127 ----
117128 A Dictionary object containing the JSON values.
118129 """
119130
120131 # Build the URL.
121- url = self .build_url (endpoint = endpoint )
132+ url = self .build_url (endpoint = endpoint , use_api = use_api )
122133
123134 logging .info (
124135 "URL: {url}" .format (url = url )
@@ -144,11 +155,18 @@ def make_request(
144155
145156 print (request_request .url )
146157
158+ self .total_requests += 1
159+
147160 # Send the request.
148161 response : requests .Response = request_session .send (
149162 request = request_request
150163 )
151164
165+ if self .total_requests == 9 :
166+ print ("sleeping for 5 seconds." )
167+ time .sleep (5 )
168+ self .total_requests = 0
169+
152170 # Keep going.
153171 while response .status_code != 200 :
154172
@@ -157,6 +175,7 @@ def make_request(
157175 request = request_request
158176 )
159177 except :
178+ print ("Sleeping for five seconds" )
160179 time .sleep (5 )
161180
162181 # Close the session.
@@ -166,8 +185,6 @@ def make_request(
166185 response_headers = response .headers
167186 content_type = response_headers ['Content-Type' ]
168187
169-
170-
171188 # If it's okay and no details.
172189 if response .ok and len (response .content ) > 0 :
173190
0 commit comments