swh.deposit.api.common module#

class swh.deposit.api.common.ParsedRequestHeaders(content_type: str, content_length: int | None, in_progress: bool, content_disposition: str | None, content_md5sum: bytes | None, packaging: str | None, slug: str | None, on_behalf_of: str | None, metadata_relevant: str | None, swhid: str | None)[source]#

Bases: object

Method generated by attrs for class ParsedRequestHeaders.

class swh.deposit.api.common.Receipt(deposit_id: int, deposit_date: datetime, status: str, archive: str | None)[source]#

Bases: object

Data computed while handling the request body that will be served in the Deposit Receipt.

Method generated by attrs for class Receipt.

swh.deposit.api.common.get_deposit_by_id(deposit_id: int, collection_name: str | None = None) Deposit[source]#

Gets an existing Deposit object if it exists, or raises DepositError. If collection is not None, also checks the deposit belongs to the collection.

swh.deposit.api.common.get_collection_by_name(collection_name: str)[source]#

Gets an existing Deposit object if it exists, or raises DepositError.

swh.deposit.api.common.guess_deposit_origin_url(deposit: Deposit)[source]#

Guesses an origin url for the given deposit.

class swh.deposit.api.common.APIBase[source]#

Bases: APIConfig, APIView

Base deposit request class sharing multiple common behaviors.

Constructor. Called in the URLconf; can contain helpful extra keyword arguments, and other things.

additional_checks(request: Request, headers: ParsedRequestHeaders, collection_name: str, deposit: Deposit | None) Dict[str, Any][source]#

Permit the child class to enrich additional checks.

Returns:

dict with ‘error’ detailing the problem.

get_client(request) DepositClient[source]#
checks(request: Request, collection_name: str, deposit: Deposit | None = None) ParsedRequestHeaders[source]#
restrict_access(request: Request, headers: ParsedRequestHeaders, deposit: Deposit) None[source]#

Allow modifications on deposit with status ‘partial’ only, reject the rest.

get(request: Request, *args, **kwargs) HttpResponse | FileResponse[source]#
post(request: Request, *args, **kwargs) HttpResponse[source]#
put(request: Request, *args, **kwargs) HttpResponse[source]#
delete(request: Request, *args, **kwargs) HttpResponse[source]#
class swh.deposit.api.common.APIGet[source]#

Bases: APIBase

Mixin for class to support GET method.

Constructor. Called in the URLconf; can contain helpful extra keyword arguments, and other things.

get(request: Request, collection_name: str, deposit_id: int) HttpResponse | FileResponse[source]#

Endpoint to create/add resources to deposit.

Returns:

200 response when no error during routine occurred 400 if the deposit does not belong to the collection 404 if the deposit or the collection does not exist

abstract process_get(request: Request, collection_name: str, deposit: Deposit) Tuple[int, Any, str][source]#

Routine to deal with the deposit’s get processing.

Returns:

Tuple status, stream of content, content-type

class swh.deposit.api.common.APIPost[source]#

Bases: APIBase

Mixin for class to support POST method.

Constructor. Called in the URLconf; can contain helpful extra keyword arguments, and other things.

post(request: Request, collection_name: str, deposit_id: int | None = None) HttpResponse[source]#

Endpoint to create/add resources to deposit.

Returns:

204 response when no error during routine occurred. 400 if the deposit does not belong to the collection 404 if the deposit or the collection does not exist

abstract process_post(request, headers: ParsedRequestHeaders, collection_name: str, deposit: Deposit | None = None) Tuple[int, str, Receipt][source]#

Routine to deal with the deposit’s processing.

Returns

Tuple of: - response status code (200, 201, etc…) - key iri (EM_IRI, EDIT_IRI, etc…) - Receipt

class swh.deposit.api.common.APIPut[source]#

Bases: APIBase

Mixin for class to support PUT method.

Constructor. Called in the URLconf; can contain helpful extra keyword arguments, and other things.

put(request: Request, collection_name: str, deposit_id: int) HttpResponse[source]#

Endpoint to update deposit resources.

Returns:

204 response when no error during routine occurred. 400 if the deposit does not belong to the collection 404 if the deposit or the collection does not exist

abstract process_put(request: Request, headers: ParsedRequestHeaders, collection_name: str, deposit: Deposit) None[source]#

Routine to deal with updating a deposit in some way.

Returns

dictionary of the processing result

class swh.deposit.api.common.APIDelete[source]#

Bases: APIBase

Mixin for class to support DELETE method.

Constructor. Called in the URLconf; can contain helpful extra keyword arguments, and other things.

delete(request: Request, collection_name: str, deposit_id: int | None = None) HttpResponse[source]#

Endpoint to delete some deposit’s resources (archives, deposit).

Returns:

204 response when no error during routine occurred. 400 if the deposit does not belong to the collection 404 if the deposit or the collection does not exist

abstract process_delete(request: Request, collection_name: str, deposit: Deposit) None[source]#

Routine to delete a resource.

This is mostly not allowed except for the EM_IRI (cf. .api.deposit_update.APIUpdateArchive)