def request(self, action, params, resource_class): request = CommonRequest() if action == "AssumeRole": self.domain = self.domain.replace("ram.", "sts.") self.version = "2015-04-01" request.set_domain(self.domain) request.set_version(self.version) request.set_action_name(action) request.set_accept_format('json') if self.protocol: request.set_protocol_type(self.protocol) if 'api_params' in params and params['api_params']: request.set_query_params(params['api_params']) try: response = self.__client.do_action_with_exception(request) #logging.debug(response) if 'key_path' in params and params['key_path']: return self.generate_resources(json.loads(response), params['key_path'][0], params['key_path'][1], resource_class) else: return json.loads(response) except Exception as e: logging.error(e) logging.debug(traceback.format_exc()) logging.debug(sys.exc_info()[0]) raise e
def test_common_request(self): r = CommonRequest() # accept format self.assertIsNone(r.get_accept_format()) r.set_accept_format('json') self.assertEqual(r.get_accept_format(), "json") # action name self.assertEqual(r.get_action_name(), None) r.set_action_name('new action name') self.assertEqual(r.get_action_name(), "new action name") # body params self.assertDictEqual(r.get_body_params(), {}) r.set_body_params({'key': 'value'}) self.assertDictEqual(r.get_body_params(), {'key': 'value'}) r.add_body_params("key2", "value2") self.assertDictEqual(r.get_body_params(), { 'key': 'value', 'key2': 'value2' }) # content self.assertIsNone(r.get_content()) r.set_content("content") self.assertEqual(r.get_content(), "content") # headers self.assertDictEqual(r.get_headers(), {'x-sdk-invoke-type': 'common'}) r.set_headers({}) self.assertDictEqual(r.get_headers(), {}) r.add_header("key", "value") self.assertDictEqual(r.get_headers(), {"key": "value"}) # location endpoint type self.assertEqual(r.get_location_endpoint_type(), 'openAPI') # no set_location_endpoint_type ?? # location_service_code self.assertEqual(r.get_location_service_code(), None) r.set_location_service_code('new service code') self.assertEqual(r.get_location_service_code(), 'new service code') # method self.assertEqual(r.get_method(), 'GET') r.set_method('POST') self.assertEqual(r.get_method(), 'POST') # product self.assertEqual(r.get_product(), None) r.set_product('new-product') self.assertEqual(r.get_product(), 'new-product') # protocol_type self.assertEqual(r.get_protocol_type(), "http") r.set_protocol_type('https') self.assertEqual(r.get_protocol_type(), "https") # query params self.assertDictEqual(r.get_query_params(), {}) r.set_query_params({'key': 'value'}) self.assertDictEqual(r.get_query_params(), {'key': 'value'}) r.add_query_param("key2", "value2") self.assertDictEqual(r.get_query_params(), { 'key': 'value', "key2": "value2" }) # uri params self.assertEqual(r.get_uri_params(), None) r.set_uri_params({'user': "******"}) self.assertDictEqual(r.get_uri_params(), {'user': '******'}) # uri pattern self.assertEqual(r.get_uri_pattern(), None) r.set_uri_pattern('/users/:userid') self.assertEqual(r.get_uri_pattern(), '/users/:userid') # url # version self.assertEqual(r.get_version(), None) r.set_version('2014-10-18') self.assertEqual(r.get_version(), "2014-10-18") # user-agent self.assertEqual(r.get_headers().get('User-Agent'), None) r.set_user_agent("user-agent") self.assertEqual(r.get_headers().get('User-Agent'), "user-agent") # content-type self.assertEqual(r.get_headers().get('Content-Type'), None) r.set_content_type("application/json") self.assertEqual(r.get_headers().get('Content-Type'), "application/json") # domain self.assertEqual(r.get_domain(), None) r.set_domain("new-domain") self.assertEqual(r.get_domain(), "new-domain") # path_params self.assertEqual(r.get_path_params(), None) r.add_path_param("userid", "jacksontian") r.add_path_param("repo", "snow") self.assertEqual(r.get_path_params(), { "userid": "jacksontian", "repo": "snow" }) r.set_path_params({"userid": "linatian"}) self.assertEqual(r.get_path_params(), {"userid": "linatian"})