PK! P&&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(props=None, requires=None): 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.0.dist-info/WHEEL HM K-*ϳR03rOK-J,/R(O-)$qzd&Y)r$UV&UrPK!H0 >?o%radar_client-0.1.0.dist-info/METADATAMK1 =*L|,,Eу8.9Z{[ |4Q}CZE8( &`q앎&x ۈ8×m |61[$֦:=.?PK! P&&radar_client/__init__.pyPK!<\radar_client/utils.pyPK!Hu)GTU"radar_client-0.1.0.dist-info/WHEELPK!H0 >?o%9radar_client-0.1.0.dist-info/METADATAPK!HC.}8z#^ radar_client-0.1.0.dist-info/RECORDPK}