def create(self, account, reference, headers=None): uri = self._make_uri('reference/create') params = self._make_params(account, reference) resp, resp_body = self._request( 'POST', uri, params=params, headers=headers) if resp.status_code in (200, 201): return resp_body else: raise exceptions.from_response(resp, resp_body)
def _request(self, method, url, endpoint=None, session=None, **kwargs): if not endpoint: endpoint = self.endpoint url = '/'.join([endpoint.rstrip('/'), url.lstrip('/')]) if not session: session = self.session resp = session.request(method, url, **kwargs) try: body = resp.json() except ValueError: body = resp.content if resp.status_code >= 400: raise exceptions.from_response(resp, body) return resp, body
def container_create(self, account, container, metadata=None, headers=None): uri = self._make_uri('container/create') params = self._make_params(account, container) headers = headers or {} headers['x-oio-action-mode'] = 'autocreate' if metadata: headers_meta = {} for k, v in metadata.iteritems(): headers_meta['%suser-%s' % (CONTAINER_METADATA_PREFIX, k)] = v headers.update(headers_meta) resp, resp_body = self._request( 'POST', uri, params=params, headers=headers) if resp.status_code not in (204, 201): raise exc.from_response(resp, resp_body) if resp.status_code == 201: return False else: return True