Skip to content

Instantly share code, notes, and snippets.

@lawlesst
Created July 7, 2011 21:57
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save lawlesst/1070641 to your computer and use it in GitHub Desktop.
Save lawlesst/1070641 to your computer and use it in GitHub Desktop.
Summon API searches with Python
"""
Search Summon API with Python.
See Dough Chesnut's Code4Lib mailing list post: http://serials.infomotions.com/code4lib/archive/2010/201010/2408.html
"""
import httplib2
import urllib
from datetime import datetime
import hmac
import base64
import hashlib
from pprint import pprint
api_id = 'org'
api_key = 'key'
summonHost = 'api.summon.serialssolutions.com'
summonPath = '/search'
def summonMkHeaders(querystring):
summonAccessID = api_id
summonSecretKey = api_key
summonAccept = "application/json"
summonThedate = datetime.utcnow().strftime("%a, %d %b %Y %H:%M:%S GMT")
summonQS = "&".join(sorted(querystring.split('&')))
summonQS = urllib.unquote_plus(summonQS)
summonIdString = summonAccept + "\n" + summonThedate + "\n" + summonHost + "\n" + summonPath + "\n" + summonQS + "\n"
summonDigest = base64.encodestring(hmac.new(summonSecretKey, unicode(summonIdString), hashlib.sha1).digest())
summonAuthstring = "Summon "+summonAccessID+';'+summonDigest
summonAuthstring = summonAuthstring.replace('\n','')
return {'Accept':summonAccept,'x-summon-date':summonThedate,'Host':summonHost,'Authorization':summonAuthstring}
http = httplib2.Http()
qstring='q=forest'
url = 'http://%s%s?%s' % (summonHost, summonPath, qstring)
headers = summonMkHeaders(qstring)
print headers
response, content = http.request(url, 'GET', headers=headers)
print response
pprint(content)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment