Skip to content

Commit 7c880d7

Browse files
Merge branch 'part-1'
2 parents 25f5286 + 4325c56 commit 7c880d7

40 files changed

Lines changed: 220 additions & 92 deletions

conSys/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
143 Bytes
Binary file not shown.
4.1 KB
Binary file not shown.
1.43 KB
Binary file not shown.
2.02 KB
Binary file not shown.

conSys/con_sys_api.py

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,37 @@
1-
from pydantic import BaseModel, HttpUrl
1+
import requests
2+
from pydantic import BaseModel, HttpUrl, Field
23

34
from conSys.endpoints.endpoints import Endpoint
45
from conSys.request_bodies import RequestBody
56

67

78
class ConnectedSystemAPIRequest(BaseModel):
8-
url: HttpUrl
9-
request_body: RequestBody
9+
url: HttpUrl = Field(None)
10+
body: RequestBody = Field(default_factory=RequestBody)
11+
params: dict = Field(None)
12+
request_method: str = Field('GET')
13+
headers: dict = Field(None)
14+
15+
def make_request(self):
16+
match self.request_method:
17+
case 'GET':
18+
return requests.get(self.url, params=self.body, headers=self.headers)
19+
case 'POST':
20+
return self.post_request()
21+
case 'PUT':
22+
return self.put_request()
23+
case 'DELETE':
24+
return self.delete_request()
25+
case _:
26+
raise ValueError('Invalid request method')
1027

1128

1229
class ConnectedSystemsRequestBuilder(BaseModel):
13-
api_request: ConnectedSystemAPIRequest
14-
base_url: HttpUrl
15-
endpoint: Endpoint
30+
api_request: ConnectedSystemAPIRequest = Field(default_factory=ConnectedSystemAPIRequest)
31+
base_url: HttpUrl = None
32+
endpoint: Endpoint = Field(default_factory=Endpoint)
33+
34+
1635

1736
def with_api_url(self, url: HttpUrl):
1837
self.api_request.url = url
@@ -57,7 +76,16 @@ def with_secondary_resource_id(self, resource_id: str):
5776
return self
5877

5978
def with_request_body(self, request_body: RequestBody):
60-
self.api_request.request_body = request_body
79+
self.api_request.body = request_body
80+
return self
81+
82+
def with_request_method(self, request_method: str):
83+
self.api_request.request_method = request_method
84+
return self
85+
86+
def with_headers(self, headers: dict = None):
87+
# TODO: ensure headers can default if excluded
88+
self.api_request.headers = headers
6189
return self
6290

6391
def build(self):

conSys/datamodels/query.py

Lines changed: 0 additions & 5 deletions
This file was deleted.
153 Bytes
Binary file not shown.
2.48 KB
Binary file not shown.

conSys/endpoints/endpoints.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
from enum import Enum
22

33
import requests
4-
import websockets
5-
from pydantic import BaseModel
4+
# import websockets
5+
from pydantic import BaseModel, Field
66

77
from conSys.constants import APITerms
88

99

1010
class Endpoint(BaseModel):
1111
api_root: str = APITerms.API.value
12-
base_resource: APITerms
13-
resource_id: str = None
14-
sub_component: APITerms = None
15-
secondary_resource_id: str = None
12+
base_resource: APITerms = Field(None)
13+
resource_id: str = Field(None)
14+
sub_component: APITerms = Field(None)
15+
secondary_resource_id: str = Field(None)
1616

1717
def create_endpoint(self):
1818
# TODO: Handle insertion of "/" in the right places
@@ -99,19 +99,19 @@ def handle_request(url, params=None, content_json=None, method='get', response_h
9999
return r
100100

101101

102-
async def handle_ws(url, params=None, json_data=None, method='get', response_handler=None):
103-
"""
104-
Handles a request to the API. Functionality is limited to receiving observations for now, but will be improved in
105-
future versions.
106-
:param url: The URL to make the request to
107-
:param params: The parameters to send with the request
108-
:param json_data: The JSON to send with the request
109-
:param method: The method to use for the request
110-
:param response_handler: callback function to handle the response msg
111-
:return: The response from the API
112-
"""
113-
114-
async with websockets.connect(url) as ws:
115-
while True:
116-
msg = await ws.recv()
117-
response_handler(msg)
102+
# async def handle_ws(url, params=None, json_data=None, method='get', response_handler=None):
103+
# """
104+
# Handles a request to the API. Functionality is limited to receiving observations for now, but will be improved in
105+
# future versions.
106+
# :param url: The URL to make the request to
107+
# :param params: The parameters to send with the request
108+
# :param json_data: The JSON to send with the request
109+
# :param method: The method to use for the request
110+
# :param response_handler: callback function to handle the response msg
111+
# :return: The response from the API
112+
# """
113+
#
114+
# async with websockets.connect(url) as ws:
115+
# while True:
116+
# msg = await ws.recv()
117+
# response_handler(msg)

0 commit comments

Comments
 (0)