Skip to content

Commit 9a5b912

Browse files
authored
improvements (#62)
* moved request/response/session to apis namespace * added config validation before sending request * updated version * renamed session_sharer to session * updated travis.yml * added p3.8 to travis
1 parent 1a87e8e commit 9a5b912

18 files changed

Lines changed: 97 additions & 62 deletions

.python-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.6.6
1+
3.7.7

.travis.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
dist: xenial
22
language: python
3+
os: linux
34

45
python:
56
- "3.4"
67
- "3.5"
78
- "3.6"
9+
- "3.7"
810

9-
matrix:
11+
jobs:
1012
include:
11-
- python: "3.7"
12-
sudo: true
13+
- python: "3.8"
1314
env:
1415
- REQUESTS="requests" # latest
1516

HISTORY.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
## master
22

33
- [#61](https://github.com/castle/castle-python/pull/61) improve headers and ip extractions, improve ip_headers config, add trusted proxies config, added more events to events list
4-
5-
https://github.com/castle/castle-python/pull/61
4+
- [#62](https://github.com/castle/castle-python/pull/62) move request,response, session to apis namespace, add config check before doing request
65

76
## 3.0.0 (2020-02-13)
87

castle/api.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1-
from castle.request import Request
2-
from castle.response import Response
1+
from castle.apis.request import ApisRequest
2+
from castle.apis.response import ApisResponse
3+
from castle.configuration import configuration
4+
from castle.exceptions import ConfigurationError
35

46

57
class Api(object):
68
def __init__(self):
7-
self.req = Request({'Content-Type': 'application/json'})
9+
self.req = ApisRequest({'Content-Type': 'application/json'})
810

911
def request(self, command):
12+
if not configuration.isValid():
13+
raise ConfigurationError
1014
return self.req.build_query(command.method, command.path, command.data)
1115

1216
def call(self, command):
13-
return Response(self.request(command)).call()
17+
return ApisResponse(self.request(command)).call()

castle/apis/__init__.py

Whitespace-only changes.
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
import json
22
from castle.configuration import configuration
3-
from castle.session import SessionSharer
3+
from castle.apis.session import ApisSession
44

55

6-
class Request(object):
6+
class ApisRequest(object):
77
def __init__(self, headers=None):
88
self.headers = headers or dict()
9-
self.base_url = Request.build_base_url()
10-
self.sharer = SessionSharer()
9+
self.base_url = ApisRequest.build_base_url()
10+
self.session = ApisSession()
1111

1212
def build_query(self, method, path, params):
13-
return self.sharer.session.request(
13+
return self.session.get().request(
1414
method,
1515
self.build_url(path),
1616
auth=('', configuration.api_secret),
1717
timeout=configuration.request_timeout / 1000.0,
1818
headers=self.headers,
19-
verify=Request.verify(),
19+
verify=ApisRequest.verify(),
2020
data=None if params is None else json.dumps(params)
2121
)
2222

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
}
1313

1414

15-
class Response(object):
15+
class ApisResponse(object):
1616
def __init__(self, response):
1717
self.response = response
1818

castle/apis/session.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import requests
2+
3+
4+
class ApisSession(object):
5+
class __ApisSession:
6+
def __init__(self):
7+
self.session = requests.Session()
8+
9+
def get(self):
10+
return self.session
11+
instance = None
12+
13+
def __new__(cls):
14+
if not ApisSession.instance:
15+
ApisSession.instance = ApisSession.__ApisSession()
16+
return ApisSession.instance
17+
18+
def get(self):
19+
return self.instance.get()

castle/configuration.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ def __init__(self):
5151
self.ip_headers = []
5252
self.trusted_proxies = []
5353

54+
def isValid(self):
55+
return self.host and self.port and self.api_secret
56+
5457
@property
5558
def api_secret(self):
5659
return self.__api_secret

castle/session.py

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)