Skip to content

Commit

Permalink
login/logout/keep_alive resources created and implemented
Browse files Browse the repository at this point in the history
tests fixed
  • Loading branch information
liampauling committed Jan 21, 2017
1 parent c524a6d commit a37f3e1
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 6 deletions.
5 changes: 4 additions & 1 deletion betfairlightweight/endpoints/keepalive.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import datetime
from requests import ConnectionError

from .baseendpoint import BaseEndpoint
from ..resources import KeepAliveResource
from ..exceptions import KeepAliveError, APIError
from ..utils import check_status_code

Expand All @@ -10,10 +12,11 @@ class KeepAlive(BaseEndpoint):
_error = KeepAliveError

def __call__(self, session=None):
date_time_sent = datetime.datetime.utcnow()
response = self.request(session=session)
response_json = response.json()
self.client.set_session_token(response_json.get('token'))
return response_json
return self.process_response(response_json, KeepAliveResource, date_time_sent)

def request(self, payload=None, params=None, session=None):
session = session or self.client.session
Expand Down
5 changes: 4 additions & 1 deletion betfairlightweight/endpoints/login.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import datetime
from requests import ConnectionError

from .baseendpoint import BaseEndpoint
from ..resources import LoginResource
from ..exceptions import LoginError, APIError
from ..utils import check_status_code

Expand All @@ -10,10 +12,11 @@ class Login(BaseEndpoint):
_error = LoginError

def __call__(self, session=None):
date_time_sent = datetime.datetime.utcnow()
response = self.request(self.url, session=session)
response_json = response.json()
self.client.set_session_token(response_json.get('sessionToken'))
return response_json
return self.process_response(response_json, LoginResource, date_time_sent)

def request(self, method=None, params=None, session=None):
session = session or self.client.session
Expand Down
5 changes: 4 additions & 1 deletion betfairlightweight/endpoints/logout.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import datetime
from requests import ConnectionError

from .baseendpoint import BaseEndpoint
from ..resources import LogoutResource
from ..exceptions import LogoutError, APIError
from ..utils import check_status_code

Expand All @@ -10,10 +12,11 @@ class Logout(BaseEndpoint):
_error = LogoutError

def __call__(self, session=None):
date_time_sent = datetime.datetime.utcnow()
response = self.request(session=session)
response_json = response.json()
self.client.client_logout()
return response_json
return self.process_response(response_json, LogoutResource, date_time_sent)

def request(self, payload=None, params=None, session=None):
session = session or self.client.session
Expand Down
6 changes: 6 additions & 0 deletions betfairlightweight/resources/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
from .authresources import (
LoginResource,
KeepAliveResource,
LogoutResource,
)

from .bettingresources import (
EventTypeResult,
CompetitionResult,
Expand Down
32 changes: 32 additions & 0 deletions betfairlightweight/resources/authresources.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from .baseresource import BaseResource


class LoginResource(BaseResource):
class Meta(BaseResource.Meta):
identifier = 'login'
attributes = {
'sessionToken': 'session_token',
'loginStatus': 'login_status',
}


class KeepAliveResource(BaseResource):
class Meta(BaseResource.Meta):
identifier = 'keep_alive'
attributes = {
'product': 'product',
'status': 'status',
'token': 'token',
'error': 'error',
}


class LogoutResource(BaseResource):
class Meta(BaseResource.Meta):
identifier = 'logout'
attributes = {
'product': 'product',
'status': 'status',
'token': 'token',
'error': 'error',
}
3 changes: 2 additions & 1 deletion tests/test_keepalive.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from betfairlightweight.endpoints.keepalive import KeepAlive, APIError
from betfairlightweight import APIClient
from betfairlightweight.exceptions import KeepAliveError
from betfairlightweight.resources.authresources import KeepAliveResource


class KeepAliveTest(unittest.TestCase):
Expand All @@ -20,7 +21,7 @@ def test_call(self, mock_response):
mock_response.return_value = mock
response = self.keep_alive()

assert response == mock.json()
assert isinstance(response, KeepAliveResource)
assert self.keep_alive.client.session_token == mock.json().get('token')

@mock.patch('betfairlightweight.baseclient.BaseClient.cert')
Expand Down
3 changes: 2 additions & 1 deletion tests/test_login.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from betfairlightweight.endpoints.login import Login
from betfairlightweight import APIClient
from betfairlightweight.exceptions import LoginError, APIError
from betfairlightweight.resources import LoginResource


class LoginTest(unittest.TestCase):
Expand All @@ -20,7 +21,7 @@ def test_call(self, mock_response):
mock_response.return_value = mock_json
response = self.login()

assert response == mock_json.json()
assert isinstance(response, LoginResource)
assert self.login.client.session_token == mock_json.json().get('sessionToken')

@mock.patch('betfairlightweight.baseclient.BaseClient.cert')
Expand Down
3 changes: 2 additions & 1 deletion tests/test_logout.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from betfairlightweight.endpoints.logout import Logout
from betfairlightweight import APIClient
from betfairlightweight.exceptions import LogoutError, APIError
from betfairlightweight.resources import LogoutResource


class LogoutTest(unittest.TestCase):
Expand All @@ -20,7 +21,7 @@ def test_call(self, mock_response):
mock_response.return_value = mock
response = self.logout()

assert response == mock.json()
assert isinstance(response, LogoutResource)
assert self.logout.client.session_token is None

@mock.patch('betfairlightweight.baseclient.BaseClient.cert')
Expand Down

0 comments on commit a37f3e1

Please sign in to comment.