예제 #1
0
def send_request(path, param_dict):
    # convert single value to one-element list
    for k in param_dict:
        v = param_dict[k]
        if isinstance(v, basestring):
            param_dict[k] = [v]

    # create content
    content = ""
    for k in param_dict:
        for v in param_dict[k]:
            if isinstance(v, unicode):  # encode unicode to utf8
                v = v.encode("utf-8")
            content += k + "=" + percent_encode(v) + "&"
    content = content[0:-1]  # remove trailing &

    # headers
    host_name = app_id + ".appspot.com"
    headers = {
        "Host": host_name,
        "Accept": "text/html",
        "Content-Type": "application/x-www-form-urlencoded",
        "Connection": "keep-alive",
        "Upgrade-Insecure-Requests": " 1",
    }

    # send
    connection = HTTPSConnection(host_name)
    connection.request("POST", path, content, headers)

    # return response status
    return connection.getresponse().status
예제 #2
0
파일: twitter.py 프로젝트: jaronhalt/tacklr
def get_stream(delimited='length', filter_level='none', language='en'):
    sign_dict = oauthd()
    sign_string = signature_base_string('GET', TWITTER_SAMPLE_STREAM, delimited=delimited, filter_level=filter_level, language=language, **sign_dict)
    sign_key = signing_key()
    
    _hash = hmac.new(sign_key, sign_string, hashlib.sha1)
    oauth_signature = _hash.digest().encode('base64')
    sign_dict['oauth_signature'] = percent_encode(oauth_signature)
    
    headers={'Authorization': ('OAuth ' + ', '.join(('%s="%s"' % (k, sign_dict[k])) for k in sorted(sign_dict.keys())))}
    print json.dumps(headers,indent=1)
    return requests.get(TWITTER_SAMPLE_STREAM, params=dict(delimited=delimited, filter_level=filter_level, language=language), headers=headers, stream=True)
예제 #3
0
파일: twitter.py 프로젝트: jaronhalt/tacklr
def signing_key():
    return '&'.join(percent_encode(x) for x in [OAUTH_CONSUMER_SECRET, ACCESS_TOKEN_SECRET])
예제 #4
0
파일: twitter.py 프로젝트: jaronhalt/tacklr
def signature_base_string(method, url, **params):
    method = method.upper()
    url = percent_encode(url, safe='')
    plist = percent_encode('&'.join('%s=%s' % (k, params[k]) for k in sorted(params.keys())))
    return '&'.join([method, url, plist])