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
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)