PK!##radar_client/__init__.pyimport requests from .utils import lscmp, sign def create_query(name, requires=None, props=None): default_requires = requires default_props = props def init(requires=None, **props): return { 'name': name, 'requires': requires or default_requires, 'props': props or default_props } return init def radar(url, public_key=None, secret_key=None, header_name='x-radar-signature'): signature = None if public_key and secret_key: signature = sign(public_key, secret_key) def request(*queries, headers=None): headers = headers or {} if signature: headers = {**headers, header_name: signature} return requests.post(url, json=queries, headers=headers).json() return request PK!<radar_client/utils.pyimport hmac from functools import wraps from radar_server import QueryError from base64 import b64encode, b64decode from hashlib import sha256 def sign(public_key, secret_key): sig = hmac.new(key=secret_key.encode(), msg=public_key.encode(), digestmod=sha256).digest() return b64encode(sig).decode('utf8') def verify_sig(msg, public_key, secret_key): sig = sign(public_key, secret_key) if sig is None: raise InvalidRadarSignature('Missing a Radar signature header') result = hmac.compare_digest(msg, sig) if result is False: raise InvalidRadarSignature('Invalid Radar signature') return result class InvalidRadarSignature(QueryError): pass def authorize(request, public_key, secret_key, header_name='x-radar-signature'): def verify_request(fn): @wraps(fn) def wrapper(*a, **kw): sig = request.headers.get(header_name) verify_sig(sig, public_key, secret_key) return fn(*a, **kw) return wrapper return verify_request PK!Hu)GTU"radar_client-0.1.1.dist-info/WHEEL HM K-*ϳR03rOK-J,/R(O-)$qzd&Y)r$UV&UrPK!HG#o%radar_client-0.1.1.dist-info/METADATAMK1 =*L|,,Eу8.9Z{[ C leT}WwPK!Hm|z#radar_client-0.1.1.dist-info/RECORD}n0Rv ip0"Zeemow1ӄb%O0tM{z q+w1%;%<3篳\,fxGMT(AI#\n!Y31LMuBqTBhXZTs\VQjfmj:; #B768BR*vMΐd_`z]/PK!##radar_client/__init__.pyPK!<Yradar_client/utils.pyPK!Hu)GTU"radar_client-0.1.1.dist-info/WHEELPK!HG#o%6radar_client-0.1.1.dist-info/METADATAPK!Hm|z#Z radar_client-0.1.1.dist-info/RECORDPK}