mirror of
https://github.com/gsi-upm/senpy
synced 2024-11-25 01:22:28 +00:00
908090f634
Bug-fixes and improvements: * Closes #5 * Closes #1 * Adds Client (beta) * Added several schemas * Lighter string representation -> should avoid delays in the analysis with plugins that have 'heavy' attributes Backwards-incompatible changes: * Context in headers by default * All schemas include a "@type" argument that is used for autodetection in the client ... And possibly many more, this is still <1.0
46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
import requests
|
|
import logging
|
|
from . import models
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class Client(object):
|
|
|
|
def __init__(self, endpoint):
|
|
self.endpoint = endpoint
|
|
|
|
def analyse(self, input, method='GET', **kwargs):
|
|
return self.request('/', method=method, input=input, **kwargs)
|
|
|
|
def request(self, path=None, method='GET', **params):
|
|
url = '{}{}'.format(self.endpoint, path)
|
|
response = requests.request(method=method,
|
|
url=url,
|
|
params=params)
|
|
try:
|
|
resp = models.from_dict(response.json())
|
|
resp.validate(resp)
|
|
return resp
|
|
except Exception as ex:
|
|
logger.error(('There seems to be a problem with the response:\n'
|
|
'\tURL: {url}\n'
|
|
'\tError: {error}\n'
|
|
'\t\n'
|
|
'#### Response:\n'
|
|
'\tCode: {code}'
|
|
'\tContent: {content}'
|
|
'\n').format(error=ex,
|
|
url=url,
|
|
code=response.status_code,
|
|
content=response.content))
|
|
raise ex
|
|
|
|
|
|
if __name__ == '__main__':
|
|
c = Client('http://senpy.cluster.gsi.dit.upm.es/api/')
|
|
resp = c.analyse('hello')
|
|
# print(resp)
|
|
print(resp.entries)
|
|
resp.validate()
|