Bases: object
Signature generation and validation based on symmetric keys.
Parameters: |
|
---|
Human readable datetime according to the format specified in TIMESTAMP_FORMAT.
Parameters: | dt (datetime.datetime) – |
---|---|
Return str: |
Converts datetime.datetime to Unix timestamp.
Parameters: | dt (datetime.datetime) – |
---|---|
Return float: | Unix timestamp. |
Generates the signature. If timestamp is given, the signature is created using the given timestamp. Otherwise current time is used.
Parameters: |
|
---|---|
Return str: | |
Example : |
>>> sig = Signature.generate_signature('user', 'your-secret-key')
EBS6ipiqRLa6TY5vxIvZU30FpnM=
Add something here so that timestamp to signature conversion is not that obvious.
Checks if current signature is expired. Returns True if signature is expired and False otherwise.
Return bool: | |
---|---|
Example : |
>>> sig = Signature.generate_signature('user', 'your-secret-key') # Generating the signature
>>> sig.is_expired()
False
The secret key how its’ supposed to be used in generate signature.
Parameters: | secret_key (str) – |
---|---|
Return str: |
Converts the given timestamp to date. If fail_silently is set to False, raises exceptions if timestamp is not valid timestamp (according to the format we have specified in the TIMESTAMP_FORMAT). Mainly used internally.
Parameters: |
|
---|---|
Return str: |
Converts the given Unix timestamp to date. If fail_silently is set to False, raises exceptions if timestamp is not valid timestamp.
Parameters: |
|
---|---|
Return str: |
Validates the signature.
Parameters: |
|
---|---|
Return bool: | |
Example : |
>>> Signature.validate_signature(
'EBS6ipiqRLa6TY5vxIvZU30FpnM=',
'user',
'your-secret-key',
'1377997396.0'
)
False
Bases: object
Request helper for easy put/extract of signature params from URLs.
Puts signature into a dictionary, which can later on be used to send when sending (POST) requests to the server.
Parameters: | signature (ska.Signature) – |
---|---|
Return dict: | |
Example : |
Required imports.
>>> from ska import Signature, RequestHelper
Generate signature.
>>> signature = Signature.generate_signature(
>>> auth_user = 'user',
>>> secret_key = 'your-secret-key'
>>> )
Create a request helper.
>>> request_helper = RequestHelper(
>>> signature_param = 'signature',
>>> auth_user_param = 'auth_user',
>>> valid_until_param = 'valid_until'
>>> )
Appending signature params to the endpoint URL.
>>> signed_dict = request_helper.signature_to_dict(
>>> signature = signature
>>> )
{
'signature': 'YlZpLFsjUKBalL4x5trhkeEgqE8=',
'auth_user': 'user',
'valid_until': '1378045287.0'
}
URL encodes the signature params.
Parameters: |
|
---|---|
Return str: | |
Example : |
Required imports.
>>> from ska import Signature, RequestHelper
Generate signature.
>>> signature = Signature.generate_signature(
>>> auth_user = 'user',
>>> secret_key = 'your-secret-key'
>>> )
Create a request helper.
>>> request_helper = RequestHelper(
>>> signature_param = 'signature',
>>> auth_user_param = 'auth_user',
>>> valid_until_param = 'valid_until'
>>> )
Appending signature params to the endpoint URL.
>>> url = request_helper.signature_to_url(
>>> signature = signature,
>>> endpoint_url = 'http://e.com/api/'
>>> )
http://e.com/api/?valid_until=1378045287.0&auth_user=user&signature=YlZpLFsjUKBalL4x5trhkeEgqE8%3D
Validates the request data.
Parameters: |
|
---|---|
Return ska.SignatureValidationResult: | |
Example : |
If your imaginary HttpRequest object has GET property (dict), then you would validate the request data as follows.
Create a RequestHelper object with param names expected.
Required imports.
>>> from ska import RequestHelper
Create a request helper.
>>> request_helper = RequestHelper(
>>> signature_param = 'signature',
>>> auth_user_param = 'auth_user',
>>> valid_until_param = 'valid_until'
>>> )
Validate the request data.
>>> validation_result = request_helper.validate_request_data(
>>> data = request.GET,
>>> secret_key = 'your-secret-key'
>>> )
Signs the URL.
Parameters: |
|
---|---|
Return str: | |
Example : |
Required imports.
>>> from ska import sign_url
Producing a signed URL.
>>> signed_url = sign_url(
>>> auth_user='user', secret_key='your-secret_key', lifetime=120, >>> url='http://e.com/api/', signature_param=DEFAULT_SIGNATURE_PARAM,
>>> auth_user_param=DEFAULT_AUTH_USER_PARAM, valid_until_param=DEFAULT_VALID_UNTIL_PARAM
>>> )
http://e.com/api/?valid_until=1378045287.0&auth_user=user&signature=YlZpLFsjUKBalL4x5trhkeEgqE8%3D
Application defaults.
Takes a string and tries to extract a function from it.
Parameters: | function (mixed) – If callable is given, return as is. If string is given, try to extract the function from the string given and return. |
---|---|
Return callable: | |
Returns callable if what’s extracted is callable or None otherwise. |