def get_container(api_ver, account, container): _validate_container(api_ver, account, container) prefix = bottle.request.params.get('prefix', '') delimiter = bottle.request.params.get('delimiter') limit = bottle.request.params.get('limit', '') marker = bottle.request.params.get('marker', '') end_marker = bottle.request.params.get('end_marker', '') path = bottle.request.params.get('path', '') if delimiter and (len(delimiter) > 1 or ord(delimiter) > 254): raise bottle.HTTPError(412, 'Bad delimiter') try: limit = int(limit) except ValueError: limit = CONTAINER_LISTING_LIMIT if limit > CONTAINER_LISTING_LIMIT: raise bottle.HTTPError(412, 'Maximum limit is %d' % CONTAINER_LISTING_LIMIT) if path: delimiter = '/' if path.endswith('/'): path = path[:-1] prefix = path container_data = get_container_data( user_name=account, vol_name=container, prefix=prefix, delimiter=delimiter, limit=limit, start_marker=marker, end_marker=end_marker) for key, value in container_data['meta'].iteritems(): bottle.response.set_header(str(key), str(value)) format_param = get_format_from_request() logger.debug('Accepted format: %s', format_param) serializer = get_serializer(format_param) bottle.response.content_type = serializer.content_type if not container_data['content']: bottle.response.status = 204 return serializer.serialize(container_data)
def get_container(api_ver, account, container): _validate_container(api_ver, account, container) prefix = bottle.request.params.get('prefix', '') delimiter = bottle.request.params.get('delimiter') limit = bottle.request.params.get('limit', '') marker = bottle.request.params.get('marker', '') end_marker = bottle.request.params.get('end_marker', '') path = bottle.request.params.get('path', '') if delimiter and (len(delimiter) > 1 or ord(delimiter) > 254): raise bottle.HTTPError(412, 'Bad delimiter') try: limit = int(limit) except ValueError: limit = CONTAINER_LISTING_LIMIT if limit > CONTAINER_LISTING_LIMIT: raise bottle.HTTPError(412, 'Maximum limit is %d' % CONTAINER_LISTING_LIMIT) if path: delimiter = '/' if path.endswith('/'): path = path[:-1] prefix = path container_data = get_container_data(user_name=account, vol_name=container, prefix=prefix, delimiter=delimiter, limit=limit, start_marker=marker, end_marker=end_marker) for key, value in container_data['meta'].iteritems(): bottle.response.set_header(str(key), str(value)) format_param = get_format_from_request() logger.debug('Accepted format: %s', format_param) serializer = get_serializer(format_param) bottle.response.content_type = serializer.content_type if not container_data['content']: bottle.response.status = 204 return serializer.serialize(container_data)
def get_account(api_ver, account): _validate_account(api_ver, account) prefix = bottle.request.params.get('prefix', '') delimiter = bottle.request.params.get('delimiter') limit = bottle.request.params.get('limit', '') marker = bottle.request.params.get('marker', '') end_marker = bottle.request.params.get('end_marker', '') if delimiter and (len(delimiter) > 1 or ord(delimiter) > 254): raise bottle.HTTPError(412, 'Bad delimiter') try: limit = int(limit) except ValueError: limit = ACCOUNT_LISTING_LIMIT if limit > ACCOUNT_LISTING_LIMIT: raise bottle.HTTPError( 412, 'Maximum limit is %d' % ACCOUNT_LISTING_LIMIT ) account_data = get_account_data( user_name=account, prefix=prefix, delimiter=delimiter, limit=limit, start_marker=marker, end_marker=end_marker ) bottle.response.set_header('x-timestamp', account_data['timestamp']) for key, value in account_data['meta'].iteritems(): bottle.response.set_header(str(key), str(value)) format_param = get_format_from_request() logger.debug('Accepted format: %s', format_param) serializer = get_serializer(format_param) bottle.response.content_type = serializer.content_type if not account_data['content']: bottle.response.status = 204 return '' return serializer.serialize(account_data)