Python

Python 2

This example demonstrates an HTTP GET of Lingk event subscriptions.

#!/usr/bin/env
import datetime
import httplib
import hashlib
import hmac
import base64
import urllib

# Constants
endPoint = "www.lingkapis.com"
keyId = "[Access Key]"
secret = "[Secret]"

def createSignature(secret, signingStr):
    """Creates signature for a signing string"""
    message = bytes(signingStr).encode('ascii')
    secret = bytes(secret).encode('ascii')
    signature = base64.b64encode(hmac.new(secret, message, digestmod=hashlib.sha1).digest())
    return signature

def createAuthHeader(keyId, secret, dateStr):
    """Generates authorization header for a given key and secret"""
    requestPath = "/v1/@self/webhooks/subscriptions"
    requestMethod = "GET"
    signingStr = "date: " + dateStr +  "\n(request-target): " + requestMethod.lower() + " " + requestPath
    encodedHMAC = urllib.quote_plus(createSignature(secret, signingStr))
    return "Signature keyId=\"" + keyId + "\",algorithm=\"hmac-sha1\",headers=\"date (request-target)\",signature=\"" + encodedHMAC + "\""

def getHTTPResponse(endPoint, authorizationHeader, dateStr):
    """Connects to an endpoint via HTTPS and retrieves response"""
    connection = httplib.HTTPSConnection(endPoint)
    headers = {'Date': dateStr, 'Authorization': authorizationHeader}
    connection.request('GET', '/v1/@self/webhooks/subscriptions', headers=headers)
    response = connection.getresponse()
    return response

# Start here
dateStr = datetime.datetime.utcnow().strftime("%a, %d %b %Y %H:%M:%S UTC")

authorizationHeader = createAuthHeader(keyId, secret, dateStr)
res = getHTTPResponse(endPoint, authorizationHeader, dateStr)

data = res.read()
print(data)

Python 3

This example demonstrates an HTTP POST of Lingk events.

Last updated

Was this helpful?