コード例 #1
0
    def run_query(self, payload):
        s = Session()
        url = self.base_url
        querystring = {
            "output": "json",
            "toolid": self.toolId,
            "trace": "namespaces"
        }
        url = str(url) + "?" + \
              urllib.parse.urlencode(querystring)

        req = Request("POST", url, data=payload)
        headers = {'Content-Type': "application/sparql-query"}
        req.headers = headers
        auth = self.get_hmac(req, url)
        #print(auth)
        headers = {
            'Authorization': auth,
            'Content-Type': "application/sparql-query"
        }
        req.headers = headers
        prepared = req.prepare()
        response = s.send(prepared)
        if response.status_code == 200:
            return response.json()
        else:
            raise Exception(
                "Query failed to run by returning code of {}. {}".format(
                    response.status_code, response.text))
コード例 #2
0
ファイル: test_http_client.py プロジェクト: devova/pipes
def test_http_response():
    request = Request()
    request.headers = {
        'Authorization': 'token',
        'header1': 'value1',
        'header2': 'value2'
    }
    request.method = 'GET'
    request.url = 'http://url.com'
    request.body = None

    response = HttpResponse()
    response.status_code = 400
    response.request = request

    assert response.to_curl(request) == (
        "curl -X 'GET' -v -H 'Authorization: <...>' "
        "-H 'header1: value1' -H 'header2: value2' "
        "'http://url.com'")

    assert sorted(
        response.hide_and_serialize_sensitive_headers(
            request.headers).split('\n')) == [
                '', 'Authorization: <...>', 'header1: value1',
                'header2: value2'
            ]

    with pytest.raises(ExtendedHTTPError) as exc_info:
        # ensure error is raised
        response.raise_for_status()
    assert exc_info.value.response == response
    assert exc_info.value.request == request
コード例 #3
0
ファイル: db_auto_backup.py プロジェクト: wemecan/School
 def _send_request(method, url, headers, body):
     """发送请求"""
     s = Session()
     prepped = Request(method, url).prepare()
     prepped.headers = headers
     prepped.body = body
     r = s.send(prepped)
     return r.status_code, r.text
コード例 #4
0
 def build_request(self, smarty_request):
     request = Request(url=smarty_request.url_prefix, params=smarty_request.parameters)
     request.headers = self.headers
     if smarty_request.payload:
         request.data = smarty_request.payload
         request.method = 'POST'
     else:
         request.method = 'GET'
     return request
コード例 #5
0
    def _inject_headers(self, request: requests.Request) -> requests.Request:
        if request.headers is None:
            request.headers = dict()

        if 'Host' not in request.headers:
            url = urlparse(request.url)
            request.headers['Host'] = url.hostname

        if 'Referer' not in request.headers:
            if self.previous_url is not None:
                request.headers['Referer'] = self.previous_url
            else:
                request.headers['Referer'] = request.url

        return request
コード例 #6
0
ファイル: httpRequests.py プロジェクト: fhouget/nora.js
def sendHttpRequest(_args):
    s = Session()
    url = makeURL(_args)
    req = Request(_args.get("method"), url)
    if (_args.get("headers") is not None) : req.headers = _args.get("headers")
    if (_args.get("auth") is not None) : req.auth = HTTPBasicAuth(_args.get("auth")[0], _args.get("auth")[1])
    if (_args.get("params") is not None) : req.params = _args.get("params")
    if (_args.get("cookies") is not None) : req.cookies = _args.get("cookies")
    if (_args.get("data") is not None) : req.data = _args.get("data")

    prepped = req.prepare()
    if (_args.get("body") is not None) : prepped.body = _args.get("body")

    # do something with prepped.body
    # do something with prepped.headers

    resp = s.send(prepped,timeout=_args.get("timeout"), proxies=_args.get("proxies"))
    return resp
コード例 #7
0
def sendHttpRequest(_args):
    s = Session()
    url = makeURL(_args)
    req = Request(_args.get("method"), url)
    if (_args.get("headers") is not None): req.headers = _args.get("headers")
    if (_args.get("auth") is not None):
        req.auth = HTTPBasicAuth(_args.get("auth")[0], _args.get("auth")[1])
    if (_args.get("params") is not None): req.params = _args.get("params")
    if (_args.get("cookies") is not None): req.cookies = _args.get("cookies")
    if (_args.get("data") is not None): req.data = _args.get("data")

    prepped = req.prepare()
    if (_args.get("body") is not None): prepped.body = _args.get("body")

    # do something with prepped.body
    # do something with prepped.headers

    resp = s.send(prepped,
                  timeout=_args.get("timeout"),
                  proxies=_args.get("proxies"))
    return resp
コード例 #8
0
ファイル: upyun.py プロジェクト: ping203/School
def main():
    file = None
    with open(r'E:\MyDesktop\default_avatar_female_50.gif', 'rb') as f:
        file = f.read()
    fileMd5 = hashlib.md5(file).hexdigest()
    date = httpdate_rfc1123()
    uri = '/image-upyun-9527/3.webp'
    method = 'PUT'
    headers = {
        'Authorization': sign(key, secret, method, uri, date),
        'Date': date,
        'Content-Length': str(len(file)),
        'x-gmkerl-thumb': '/format/webp/quality/85/progressive/true/strip/true'
    }
    print(headers)
    from requests import Session, Request
    s = Session()
    prepped = Request(method, 'http://v0.api.upyun.com' + uri).prepare()
    prepped.headers = headers
    prepped.body = file
    r = s.send(prepped)
    print(r.status_code, r.text)
コード例 #9
0
ファイル: base.py プロジェクト: gijs/rauth
    def setUp(self):
        # mock request object
        request = Request()
        request.method = 'GET'
        request.url = 'http://example.com/'
        request.headers = {}
        request.params = {}
        request.data = {}
        request.params_and_data = {}
        self.request = request

        # mock consumer object
        consumer = Mock()
        consumer.key = '123'
        consumer.secret = '456'
        self.consumer = consumer

        # mock token object
        token = Mock()
        token.key = '321'
        token.secret = '456'
        self.token = token
コード例 #10
0
    def inference_wrapper(self, request, model_key, parameters, callback):
        try:
            result = {}
            subrequest = Request()
            subrequest.headers = request.headers
            subrequest.data = parameters
            result = self.magaclient.inference(subrequest, model_key)
            if not result['resultId']:
                raise Exception(result['errorMessage'])

            resultId = result['resultId']
            while True:
                result = self.magaclient.get_result(subrequest, resultId)
                if result['status'] == 'READY':
                    break
        except Exception as e:
            result['errorMessage'] = str(e)

        if callback is not None:
            callback(request, model_key, result)

        return STATUS_SUCCESS, ''
コード例 #11
0
def process_request(req):
    # api_stream = open(file, 'r')
    # api = yaml.load_all(api_stream)
    # for reqs in api:
    #     for req in reqs:
    preq = Request()
    pr("Testing: {0}, which is a {1} request".format(req['request']['name'],
                                                     req['request']['method']))
    static_headers = process_static_headers(req['request']['headers'])
    var_headers = process_var_headers(req['request']['headers'])
    all_headers = dict(static_headers.items() + var_headers.items())
    #print all_headers
    if req['request']['params']:
        preq.params = req['request']['params']
    preq.headers = all_headers
    preq.method = req['request']['method']
    preq.url = req['request']['uri']
    if 'body' in req['request'].keys():
        if req['request']['body']['type'] == 'post-vars':
            preq.data = req['request']['body']['value']
        elif req['request']['body']['type'] == 'json':
            preq.json = req['request']['body']['value']
        elif req['request']['body']['type'] == 'file':
            filepath = req['request']['body']['value']['filepath']
            preq.files = {filepath: open(filepath, 'rb')}
        else:
            raise Exception('Payload type unsupported')
            sys.exit(1)

    rsess = Session()
    prepped = preq.prepare()
    # for item in req['request']['exclude_headers']:
    #     if item in prepped.headers.keys():
    #         del prepped.headers[item]

    response = rsess.send(prepped, verify=cert_bundle, proxies=proxies)

    return response
コード例 #12
0
    def create_request_object(self):
        """
        Functionality:
            We attempt to create the Request() object and apply the correct data to it.
            We also run the validation to make sure that all the data we are applying is correct
        """
        request_object = Request()

        # Run internal validation to first determine if the body schema and type is correct
        self.validate_body_schematic()
        self.validate_body_type()

        # Method Apply and validation
        self.validate_method()
        request_object.method = self._request_model.method

        # URL Apply and validation
        self.validate_endpoint()
        request_object.url = self._request_model.endpoint

        # Query Apply and validation
        self.validate_query_param()
        request_object.params = self._request_model.query

        # Headers Apply and validation
        self.validate_headers()
        request_object.headers = self._request_model.headers

        # Body Apply and validation
        self.validate_body()
        request_object.data = self._request_model.body

        # Authentication Apply and validation
        self.validate_auth()
        request_object.auth_data = self._request_model.auth_data
        request_object.auth_type = self._request_model.auth_type

        return request_object
コード例 #13
0
def lambda_handler(event, context):
    pp.pprint(event)

    aws_sns_topic_arn = event['sns']
    url = event['url']
    method = event.get('method', 'GET')
    headers = event.get('headers')
    body = event.get('body')

    session = Session()
    request = Request(method, url).prepare()
    if headers is not None:
        request.headers = headers
    if body is not None:
        request.body = body
    response = session.send(request)

    if response.status_code == 200:
        content = response.text
        pp.pprint(content)
        publish_command_to_sns(aws_sns_topic_arn, content)
    else:
        pp.pprint(response)
コード例 #14
0
ファイル: base.py プロジェクト: daemon13/rauth
    def setUp(self):
        # mock request object
        request = Request()
        request.method = 'GET'
        request.url = 'http://example.com/'
        request.headers = {}
        request.params = {}
        request.data = {}
        request.params_and_data = {}
        self.request = request

        # mock response object
        response = Mock()
        response.content = 'access_token=321'
        response.headers = {'content-type': 'text/html; charset=UTF-8'}
        response.ok = True
        response.status_code = 200
        response.raise_for_status = lambda: None
        self.response = response

        # mock raise_for_status with an error
        def raise_for_status():
            raise Exception('Response not OK!')

        self.raise_for_status = raise_for_status

        # mock consumer object
        consumer = Mock()
        consumer.key = '123'
        consumer.secret = '456'
        self.consumer = consumer

        # mock token object
        token = Mock()
        token.key = '321'
        token.secret = '456'
        self.token = token
コード例 #15
0
ファイル: ipaiyun.py プロジェクト: wemecan/School
def main():
    file = None
    with open(
            r'C:\Users\Steven Fang\Documents\Tencent Files\1075004549\Image\Group\{SS]6F@`F[F6WY~[%{F`C_N.gif',
            'rb') as f:
        file = f.read()
    fileMd5 = hashlib.md5(file).hexdigest()
    date = httpdate_rfc1123()
    uri = '/image-upyun-9527/3.webp'
    method = 'PUT'
    headers = {
        'Authorization': sign(key, secret, method, uri, date),
        'Date': date,
        'Content-Length': str(len(file)),
        'x-gmkerl-thumb': '/format/webp/quality/85/progressive/true/strip/true'
    }
    print(headers)
    from requests import Session, Request
    s = Session()
    prepped = Request(method, 'http://v0.api.upyun.com' + uri).prepare()
    prepped.headers = headers
    prepped.body = file
    r = s.send(prepped)
    print(r.status_code, r.text)
コード例 #16
0
ファイル: req.py プロジェクト: anthonyjmartinez/netcloudapi
def req(endpoint=None, headers=None):
    """Prepares requests.PreparedRequest objects from passed args.

    Argument validation is featured in order to minimize the risk of invalid
    API calls. While both arguments default to None calling
    NetCloudAPI.req with empty arguments will raise an error.

    Args:
        endpoint (Endpoint): Any one of the NetCloudAPI.endpoints subclasses
        headers (dict): The headers dictionary provided by Cradlepoint ECM.

    Returns:
        A requests.PreparedRequest object if both arguments contain the required elements


    Raises:
        ValueError: If attributes are None
        ValueError: If header 'Content-Type' is not 'application/json'
        TypeError: If other invalid input is detected.
    """
    ep_req = Request()
    ep_attr = [
        "uri", "method", "paging", "params", "filters", "fields", "expands",
        "body"
    ]
    err = []
    ep_params = {}

    if endpoint is None or headers is None:
        raise ValueError(
            """args are required; endpoint and headers must be passed""")

    elif not Endpoint.__valchk__(
            headers, REQUIRED_HEADERS, required=REQUIRED_HEADERS):
        raise ValueError("""Required header keys are missing. See docs""")

    elif isinstance(endpoint, Endpoint) and Endpoint.__valchk__(
            headers, REQUIRED_HEADERS, required=REQUIRED_HEADERS):
        if headers["Content-Type"] == "application/json":
            ep_req.headers = headers
            for i in range(len(ep_attr)):
                if ep_attr[i] == "uri":
                    if endpoint.uri is not None:
                        ep_req.url = BASE_URL + endpoint.uri
                    else:
                        err.append(ep_attr[i])

                elif ep_attr[i] == "method":
                    if endpoint.method is not None:
                        ep_req.method = endpoint.method
                    else:
                        err.append(ep_attr[i])

                elif ep_attr[i] == "paging":
                    if endpoint.paging is not None:
                        ep_params.update(endpoint.paging)

                elif ep_attr[i] == "params":
                    if endpoint.params is not None:
                        ep_params.update(endpoint.params)

                elif ep_attr[i] == "filters":
                    if endpoint.filters is not None:
                        for k, v in endpoint.filters.items():
                            if isinstance(v, list):
                                ep_params.update(
                                    {k: ",".join([str(j) for j in v])})
                            else:
                                ep_params.update({k: v})

                elif ep_attr[i] == "fields":
                    if endpoint.fields is not None:
                        ep_params.update({
                            "fields":
                            ",".join([str(j) for j in endpoint.fields])
                        })

                elif ep_attr[i] == "expands":
                    if endpoint.expands is not None:
                        ep_params.update({
                            "expand":
                            ",".join([str(j) for j in endpoint.expands])
                        })

                elif ep_attr[i] == "body":
                    if endpoint.body is not None:
                        ep_req.json = endpoint.body

            if len(err) > 0:
                raise ValueError("Required attributes ({}) are empty".format(
                    ",".join(err)))

            else:
                ep_req.params = ep_params

        else:
            raise ValueError("Content-Type must be 'application/json'")

    else:
        raise TypeError("""Invalid input. See docs.""")

    return ep_req.prepare()