示例#1
0
 def get_mock_exception(error_code=None, fail_json=None):
     e = clc_sdk.APIFailedResponse("Fake message")
     if error_code:
         e.response_status_code = error_code
     if fail_json:
         e.response_json = fail_json
     return e
示例#2
0
    def Call(method, url, payload=None, session=None, debug=False):
        """Execute v2 API call.

		:param url: URL paths associated with the API call
		:param payload: dict containing all parameters to submit with POST call

		:returns: decoded API json result
		"""
        if session is not None:
            token = session['token']
            http_session = session['http_session']

        else:
            if not clc._LOGIN_TOKEN_V2:
                API._Login()
            token = clc._LOGIN_TOKEN_V2
            http_session = clc._REQUESTS_SESSION

        if payload is None:
            payload = {}

        # If executing refs provided in API they are abs paths,
        # Else refs we build in the sdk are relative
        if url[0] == '/': fq_url = "%s%s" % (clc.defaults.ENDPOINT_URL_V2, url)
        else: fq_url = "%s/v2/%s" % (clc.defaults.ENDPOINT_URL_V2, url)

        http_session.headers.update({'Authorization': "Bearer %s" % token})

        if isinstance(payload, basestring):
            http_session.headers[
                'content-type'] = "Application/json"  # added for server ops with str payload
        else:
            http_session.headers[
                'content-type'] = "application/x-www-form-urlencoded"

        if method == "GET":
            r = http_session.request(
                method,
                fq_url,
                params=payload,
                verify=API._ResourcePath('clc/cacert.pem'))
        else:
            r = http_session.request(
                method,
                fq_url,
                data=payload,
                verify=API._ResourcePath('clc/cacert.pem'))

        if debug:
            API._DebugRequest(request=requests.Request(
                method, fq_url, data=payload,
                headers=http_session.headers).prepare(),
                              response=r)

        if r.status_code >= 200 and r.status_code < 300:
            try:
                return (r.json())
            except:
                return ({})
        else:
            try:
                e = clc.APIFailedResponse(
                    "Response code %s.  %s %s %s" %
                    (r.status_code, r.json()['message'], method, fq_url))
                e.response_status_code = r.status_code
                e.response_json = r.json()
                e.response_text = r.text
                raise (e)
            except clc.APIFailedResponse:
                raise
            except:
                e = clc.APIFailedResponse(
                    "Response code %s. %s. %s %s" %
                    (r.status_code, r.text, method, fq_url))
                e.response_status_code = r.status_code
                e.response_json = {}  # or should this be None?
                e.response_text = r.text
                raise (e)