#!/usr/bin/python 

import os
import sys
import urllib
import urllib2
import cookielib
import urlparse
import hashlib
import hmac
import base64
import json
import random
import time

headers = {"Accept":"application/json","Content-type":"application/json","User_Agent":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5"}
# Example call, replace Ping with endpoint
serviceUrl = 'http://services.bluekai.com/Services/WS/Taxonomy?showCategoryPriceAtDate='+time.strftime("%Y-%m-%d")
serviceUrl=sys.argv[1]

# Add your user id and key
bkuid = 'c0aa06a97176e0b974393feb7c245e02fda52a4686716b1d512fc4142ff428da'
bksecretkey = '90a168af438ee3565d35d889d26df1b14603b4b1a52dbfe6461ea1878aaf3522'

## Example POST data
data = ''

def signatureInputBuilder(url, method, data):
  stringToSign = method
  parsedUrl = urlparse.urlparse(url)
  stringToSign += parsedUrl.path
  # first split the query into array of parameters separted by the '&' character
  qP = parsedUrl.query.split('&')

  if len(qP) > 0:
    for  qS in qP:
      qP2 = qS.split('=')
      if len(qP2) > 1:
        stringToSign += qP2[1]
        

  if data != None :
    stringToSign += data 

  h = hmac.new(bksecretkey, stringToSign, hashlib.sha256)

  s = base64.standard_b64encode(h.digest())

  u = urllib.quote_plus(s)
  print u
  newUrl = url 
  if url.find('?') == -1 :
    newUrl += '?'
  else:
    newUrl += '&'

  newUrl += 'bkuid=' + bkuid + '&bksig=' + u 

  return newUrl

def main(argv=None):

  newUrl = signatureInputBuilder(serviceUrl, 'GET', None)

if __name__ == "__main__":
    main()
