def _call_resource_method(self, cls, id, method_name, data): """POST a dictionary to an API method, for example /a/.../accounts/id/upgrade""" if cls.api_root != 'a': url_path = "/{name}/{id}/{method}".format( name=cls.collection_name, id=id, method=method_name ) else: # Management method. url_path = "/a/{app_id}/{name}/{id}/{method}".format( app_id=self.app_id, name=cls.collection_name, id=id, method=method_name, ) url = ( URLObject(self.api_server) .with_path(url_path) ) converted_data = convert_datetimes_to_timestamps(data, cls.datetime_attrs) session = self._get_http_session(cls.api_root) response = session.post(url, json=converted_data) result = _validate(response).json() return cls.create(self, **result)
def _get_resource_raw(self, cls, id, extra=None, headers=None, stream=False, **filters): """Get an individual REST resource""" headers = headers or {} headers.update(self.session.headers) postfix = "/{}".format(extra) if extra else "" if cls.api_root != "a": url = "{}/{}/{}{}".format(self.api_server, cls.collection_name, id, postfix) else: url = "{}/a/{}/{}/{}{}".format(self.api_server, self.app_id, cls.collection_name, id, postfix) converted_filters = convert_datetimes_to_timestamps( filters, cls.datetime_filter_attrs) url = str(URLObject(url).add_query_params(converted_filters.items())) response = self._get_http_session(cls.api_root).get(url, headers=headers, stream=stream) return _validate(response)
def _get_resources(self, cls, extra=None, **filters): # FIXME @karim: remove this interim code when we've got rid # of the old accounts API. postfix = "/{}".format(extra) if extra else '' if cls.api_root != 'a': url = "{}/{}{}".format( self.api_server, cls.collection_name, postfix ) else: url = "{}/a/{}/{}{}".format( self.api_server, self.app_id, cls.collection_name, postfix ) converted_filters = convert_datetimes_to_timestamps( filters, cls.datetime_filter_attrs, ) url = str(URLObject(url).add_query_params(converted_filters.items())) response = self._get_http_session(cls.api_root).get(url) results = _validate(response).json() return [ cls.create(self, **x) for x in results if x is not None ]
def _update_resource(self, cls, id, data, **kwargs): url = (URLObject(self.api_server).with_path("/{name}/{id}".format( name=cls.collection_name, id=id)).set_query_params(**kwargs)) session = self._get_http_session(cls.api_root) converted_data = convert_datetimes_to_timestamps( data, cls.datetime_attrs) response = session.put(url, json=converted_data) result = _validate(response).json() return cls.create(self, **result)
def _update_resource(self, cls, id, data, **kwargs): url = ( URLObject(self.api_server) .with_path("/{name}/{id}".format(name=cls.collection_name, id=id)) .set_query_params(**kwargs) ) session = self._get_http_session(cls.api_root) converted_data = convert_datetimes_to_timestamps(data, cls.datetime_attrs) response = session.put(url, json=converted_data) result = _validate(response).json() return cls.create(self, **result)
def _get_resources(self, cls, extra=None, **filters): # FIXME @karim: remove this interim code when we've got rid # of the old accounts API. postfix = "/{}".format(extra) if extra else "" if cls.api_root != "a": url = "{}/{}{}".format(self.api_server, cls.collection_name, postfix) else: url = "{}/a/{}/{}{}".format( self.api_server, self.app_id, cls.collection_name, postfix ) converted_filters = convert_datetimes_to_timestamps( filters, cls.datetime_filter_attrs ) url = str(URLObject(url).add_query_params(converted_filters.items())) response = self._get_http_session(cls.api_root).get(url) results = _validate(response).json() return [cls.create(self, **x) for x in results if x is not None]
def _create_resources(self, cls, data): url = URLObject(self.api_server).with_path( "/{name}/".format(name=cls.collection_name)) session = self._get_http_session(cls.api_root) if cls == File: response = session.post(url, files=data) else: converted_data = [ convert_datetimes_to_timestamps(datum, cls.datetime_attrs) for datum in data ] headers = {"Content-Type": "application/json"} headers.update(self.session.headers) response = session.post(url, json=converted_data, headers=headers) results = _validate(response).json() return [cls.create(self, **x) for x in results]
def _create_resources(self, cls, data): url = URLObject(self.api_server).with_path( "/{name}/".format(name=cls.collection_name) ) session = self._get_http_session(cls.api_root) if cls == File: response = session.post(url, files=data) else: converted_data = [ convert_datetimes_to_timestamps(datum, cls.datetime_attrs) for datum in data ] headers = {"Content-Type": "application/json"} headers.update(self.session.headers) response = session.post(url, json=converted_data, headers=headers) results = _validate(response).json() return [cls.create(self, **x) for x in results]
def _create_resource(self, cls, data, **kwargs): url = (URLObject(self.api_server).with_path("/{name}/".format( name=cls.collection_name)).set_query_params(**kwargs)) session = self._get_http_session(cls.api_root) if cls == File: response = session.post(url, files=data) else: converted_data = convert_datetimes_to_timestamps( data, cls.datetime_attrs) headers = {"Content-Type": "application/json"} headers.update(self.session.headers) response = session.post(url, json=converted_data, headers=headers) result = _validate(response).json() if cls.collection_name == "send": return result return cls.create(self, **result)
def _create_resource(self, cls, data, **kwargs): url = ( URLObject(self.api_server) .with_path("/{name}/".format(name=cls.collection_name)) .set_query_params(**kwargs) ) session = self._get_http_session(cls.api_root) if cls == File: response = session.post(url, files=data) else: converted_data = convert_datetimes_to_timestamps(data, cls.datetime_attrs) headers = {"Content-Type": "application/json"} headers.update(self.session.headers) response = session.post(url, json=converted_data, headers=headers) result = _validate(response).json() if cls.collection_name == "send": return result return cls.create(self, **result)
def _call_resource_method(self, cls, id, method_name, data): """POST a dictionary to an API method, for example /a/.../accounts/id/upgrade""" if cls.api_root != "a": url_path = "/{name}/{id}/{method}".format( name=cls.collection_name, id=id, method=method_name ) else: # Management method. url_path = "/a/{app_id}/{name}/{id}/{method}".format( app_id=self.app_id, name=cls.collection_name, id=id, method=method_name ) url = URLObject(self.api_server).with_path(url_path) converted_data = convert_datetimes_to_timestamps(data, cls.datetime_attrs) session = self._get_http_session(cls.api_root) response = session.post(url, json=converted_data) result = _validate(response).json() return cls.create(self, **result)
def _get_resource_raw( self, cls, id, extra=None, headers=None, stream=False, **filters ): """Get an individual REST resource""" headers = headers or {} headers.update(self.session.headers) postfix = "/{}".format(extra) if extra else "" if cls.api_root != "a": url = "{}/{}/{}{}".format(self.api_server, cls.collection_name, id, postfix) else: url = "{}/a/{}/{}/{}{}".format( self.api_server, self.app_id, cls.collection_name, id, postfix ) converted_filters = convert_datetimes_to_timestamps( filters, cls.datetime_filter_attrs ) url = str(URLObject(url).add_query_params(converted_filters.items())) response = self._get_http_session(cls.api_root).get( url, headers=headers, stream=stream ) return _validate(response)