Documentation ¶
Index ¶
- func CheckResponse(r *http.Response) error
- func WaitUntilStored(ctx context.Context, c *Client, transferID string) (SIPID string, err error)
- type Client
- func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*Response, error)
- func (c *Client) NewRequest(ctx context.Context, method, urlStr string, body interface{}, ...) (*http.Request, error)
- func (c *Client) NewRequestJSON(ctx context.Context, method, urlStr string, body interface{}, ...) (*http.Request, error)
- type ClientOpt
- type ErrorResponse
- type IngestHideResponse
- type IngestService
- type IngestServiceOp
- type IngestStatusResponse
- type Job
- type JobStatus
- type JobsListRequest
- type JobsService
- type JobsServiceOp
- type PackageCreateRequest
- type PackageCreateResponse
- type PackageService
- type PackageServiceOp
- type ProcessingConfig
- type ProcessingConfigOp
- type ProcessingConfigService
- type RequestOpt
- type Response
- type Task
- type TaskDateTime
- type TaskDetailed
- type TaskService
- type TaskServiceOp
- type TransferApproveRequest
- type TransferApproveResponse
- type TransferHideResponse
- type TransferService
- type TransferServiceOp
- func (s *TransferServiceOp) Approve(ctx context.Context, r *TransferApproveRequest) (*TransferApproveResponse, *Response, error)
- func (s *TransferServiceOp) Hide(ctx context.Context, ID string) (*TransferHideResponse, *Response, error)
- func (s *TransferServiceOp) Start(ctx context.Context, r *TransferStartRequest) (*TransferStartResponse, *Response, error)
- func (s *TransferServiceOp) Status(ctx context.Context, ID string) (*TransferStatusResponse, *Response, error)
- func (s *TransferServiceOp) Unapproved(ctx context.Context, r *TransferUnapprovedRequest) (*TransferUnapprovedResponse, *Response, error)
- type TransferStartRequest
- type TransferStartResponse
- type TransferStatusResponse
- type TransferUnapprovedRequest
- type TransferUnapprovedResponse
- type TransferUnapprovedResponseResult
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CheckResponse ¶
CheckResponse checks the API response for errors, and returns them if present. A response is considered an error if it has a status code outside the 200 range. API error responses are expected to have either no response body, or a JSON response body that maps to ErrorResponse. Any other response body will be silently ignored.
func WaitUntilStored ¶
WaitUntilStored blocks until the AIP generated after a transfer is confirmed to be stored. The implementation is based on TransferService.Status and JobsService.List.
The retry gives up as soon as one of the following events occur: * The caller cancels the context. * The total retry period exceeds maxWait.
TODO: we may want to give up earlier in case of specific errors, e.g. if TransferService.Status returns errors repeatedly?
Example ¶
package main import ( "context" "fmt" "log" "net/http" "time" "github.com/artefactual-labs/enduro/internal/amclient" ) func main() { ctx := context.Background() client := amclient.NewClient(http.DefaultClient, "http://127.0.0.1:62080/api", "test", "test") // Start transfer. ctxTimeout, cancel := context.WithTimeout(ctx, time.Hour*2) defer cancel() payload, _, err := client.Package.Create(ctxTimeout, &amclient.PackageCreateRequest{ Name: "images", Type: "standard", Path: "/home/archivematica/archivematica-sampledata/SampleTransfers/Images", ProcessingConfig: "automated", }) if err != nil { log.Fatal("Package.Create failed: ", err) } // Wait until the AIP is stored. SIPID, err := amclient.WaitUntilStored(ctx, client, payload.ID) if err != nil || SIPID == "" { log.Fatal("WaitUntilStored failed: ", err) } fmt.Printf("Transfer stored successfully! AIP %s", SIPID) }
Output:
Types ¶
type Client ¶
type Client struct { // Base URL for API requests. BaseURL *url.URL // User agent for client UserAgent string // Authentication User string Key string // Services used for communicating with the API Transfer TransferService Ingest IngestService ProcessingConfig ProcessingConfigService Package PackageService Jobs JobsService Task TaskService // contains filtered or unexported fields }
Client manages communication with Archivematica API.
func (*Client) Do ¶
Do sends an API request and returns the API response. The API response is JSON decoded and stored in the value pointed to by v, or returned as an error if an API error has occurred. If v implements the io.Writer interface, the raw response will be written to v, without attempting to decode it.
func (*Client) NewRequest ¶
func (c *Client) NewRequest(ctx context.Context, method, urlStr string, body interface{}, opts ...RequestOpt) (*http.Request, error)
NewRequest creates an API request. A relative URL can be provided in urlStr, which will be resolved to the BaseURL of the Client. Relative URLS should always be specified without a preceding slash. If specified, the value pointed to by body is form encoded and included in as the request body.
func (*Client) NewRequestJSON ¶
func (c *Client) NewRequestJSON(ctx context.Context, method, urlStr string, body interface{}, opts ...RequestOpt) (*http.Request, error)
NewRequestJSON is similar to NewRequest but encodes the value to JSON.
type ClientOpt ¶
ClientOpt are options for New.
func SetUserAgent ¶
SetUserAgent is a client option for setting the user agent.
type ErrorResponse ¶
An ErrorResponse reports the error caused by an API request
func (*ErrorResponse) Error ¶
func (r *ErrorResponse) Error() string
type IngestHideResponse ¶ added in v0.2.0
type IngestHideResponse struct {
Removed bool `json:"removed"`
}
type IngestService ¶
type IngestService interface { Status(context.Context, string) (*IngestStatusResponse, *Response, error) Hide(context.Context, string) (*IngestHideResponse, *Response, error) }
Ingest is an interface for interfacing with the Ingest endpoints of the Dashboard API.
type IngestServiceOp ¶
type IngestServiceOp struct {
// contains filtered or unexported fields
}
IngestServiceOp handles communication with the Ingest related methods of the Archivematica API.
func (*IngestServiceOp) Hide ¶ added in v0.2.0
func (s *IngestServiceOp) Hide(ctx context.Context, ID string) (*IngestHideResponse, *Response, error)
func (*IngestServiceOp) Status ¶
func (s *IngestServiceOp) Status(ctx context.Context, ID string) (*IngestStatusResponse, *Response, error)
type IngestStatusResponse ¶
type IngestStatusResponse struct { ID string `json:"uuid"` Status string `json:"status"` Name string `json:"name"` SIPID string `json:"sip_uuid"` Microservice string `json:"microservice"` Directory string `json:"directory"` Path string `json:"path"` Message string `json:"message"` Type string `json:"type"` }
type JobStatus ¶
type JobStatus int
func (JobStatus) MarshalJSON ¶
MarshalJSON marshals the enum as a quoted json string
func (*JobStatus) UnmarshalJSON ¶
UnmarshalJSON unmashals a quoted json string to the enum value
type JobsListRequest ¶
type JobsService ¶
type JobsServiceOp ¶
type JobsServiceOp struct {
// contains filtered or unexported fields
}
func (*JobsServiceOp) List ¶
func (s *JobsServiceOp) List(ctx context.Context, ID string, r *JobsListRequest) ([]Job, *Response, error)
type PackageCreateRequest ¶
type PackageCreateRequest struct { Name string `json:"name"` Type string `json:"type"` Path string `json:"path"` AccessionSystemID string `json:"access_system_id,omitempty"` MetadataSetID string `json:"metadata_set_id,omitempty"` ProcessingConfig string `json:"processing_config,omitempty"` AutoApprove *bool `json:"auto_approve,omitempty"` }
type PackageCreateResponse ¶
type PackageCreateResponse struct {
ID string `json:"id,omitempty"`
}
type PackageService ¶
type PackageService interface {
Create(context.Context, *PackageCreateRequest) (*PackageCreateResponse, *Response, error)
}
type PackageServiceOp ¶
type PackageServiceOp struct {
// contains filtered or unexported fields
}
func (*PackageServiceOp) Create ¶
func (s *PackageServiceOp) Create(ctx context.Context, r *PackageCreateRequest) (*PackageCreateResponse, *Response, error)
type ProcessingConfig ¶
ProcessingConfig represents the processing configuration document returned by the Dashboard API.
type ProcessingConfigOp ¶
type ProcessingConfigOp struct {
// contains filtered or unexported fields
}
ProcessingConfigOp handles communication with the Tranfer related methods of the Archivematica API.
func (*ProcessingConfigOp) Get ¶
func (s *ProcessingConfigOp) Get(ctx context.Context, name string) (*ProcessingConfig, *Response, error)
Get obtains a processing configuration given its name.
type ProcessingConfigService ¶
type ProcessingConfigService interface {
Get(context.Context, string) (*ProcessingConfig, *Response, error)
}
ProcessingConfigService is an interface for interfacing with the processing configuration endpoints of the Dashboard API.
type RequestOpt ¶
RequestOpt is a function type used to alter requests.
func WithRequestAcceptXML ¶
func WithRequestAcceptXML() RequestOpt
WithRequestAcceptXML sets the Accept header to "application/xml". This is needed when consuming endpoints that require this configuration.
type Response ¶
Response is an Archivematica response. This wraps the standard http.Response returned from Archivematica.
type TaskDateTime ¶
func (*TaskDateTime) UnmarshalJSON ¶
func (t *TaskDateTime) UnmarshalJSON(data []byte) error
type TaskDetailed ¶
type TaskDetailed struct { ID string `json:"uuid"` ExitCode uint8 `json:"exit_code"` FileID string `json:"file_uuid"` Filename string `json:"file_name"` TimeCreated TaskDateTime `json:"time_created"` TimeStarted TaskDateTime `json:"time_started"` TimeEnded TaskDateTime `json:"time_ended"` Duration uint32 `json:"duration"` }
type TaskService ¶
type TaskServiceOp ¶
type TaskServiceOp struct {
// contains filtered or unexported fields
}
func (*TaskServiceOp) Read ¶
func (s *TaskServiceOp) Read(ctx context.Context, ID string) (*TaskDetailed, *Response, error)
type TransferApproveRequest ¶
type TransferApproveRequest struct { Type string `schema:"type"` Directory string `schema:"directory"` }
TransferApproveRequest represents a request to approve a transfer.
type TransferApproveResponse ¶
TransferApproveResponse represents a response to TransferApproveRequest.
type TransferHideResponse ¶ added in v0.2.0
type TransferHideResponse struct {
Removed bool `json:"removed"`
}
type TransferService ¶
type TransferService interface { Start(context.Context, *TransferStartRequest) (*TransferStartResponse, *Response, error) Approve(context.Context, *TransferApproveRequest) (*TransferApproveResponse, *Response, error) Unapproved(context.Context, *TransferUnapprovedRequest) (*TransferUnapprovedResponse, *Response, error) Status(context.Context, string) (*TransferStatusResponse, *Response, error) Hide(context.Context, string) (*TransferHideResponse, *Response, error) }
TransferService is an interface for interfacing with the Transfer endpoints of the Dashboard API.
type TransferServiceOp ¶
type TransferServiceOp struct {
// contains filtered or unexported fields
}
TransferServiceOp handles communication with the Tranfer related methods of the Archivematica API.
func (*TransferServiceOp) Approve ¶
func (s *TransferServiceOp) Approve(ctx context.Context, r *TransferApproveRequest) (*TransferApproveResponse, *Response, error)
Approve approves an existing transfer awaiting for approval.
func (*TransferServiceOp) Hide ¶ added in v0.2.0
func (s *TransferServiceOp) Hide(ctx context.Context, ID string) (*TransferHideResponse, *Response, error)
func (*TransferServiceOp) Start ¶
func (s *TransferServiceOp) Start(ctx context.Context, r *TransferStartRequest) (*TransferStartResponse, *Response, error)
Start starts a new transfer.
func (*TransferServiceOp) Status ¶
func (s *TransferServiceOp) Status(ctx context.Context, ID string) (*TransferStatusResponse, *Response, error)
func (*TransferServiceOp) Unapproved ¶
func (s *TransferServiceOp) Unapproved(ctx context.Context, r *TransferUnapprovedRequest) (*TransferUnapprovedResponse, *Response, error)
Unapproved lists existing transfers waiting for approval.
type TransferStartRequest ¶
type TransferStartRequest struct { Name string `schema:"name"` Type string `schema:"type"` Paths []string `schema:"paths"` }
TransferStartRequest represents a request to start a transfer.
type TransferStartResponse ¶
TransferStartResponse represents a response to TransferStartRequest.
type TransferStatusResponse ¶
type TransferStatusResponse struct { ID string `json:"uuid"` Status string `json:"status"` Name string `json:"name"` SIPID string `json:"sip_uuid"` Microservice string `json:"microservice"` Directory string `json:"directory"` Path string `json:"path"` Message string `json:"message"` Type string `json:"type"` }
func (TransferStatusResponse) SIP ¶
func (t TransferStatusResponse) SIP() (string, bool)
type TransferUnapprovedRequest ¶
type TransferUnapprovedRequest struct{}
TransferUnapprovedRequest represents a request to list unapproved transfer.
type TransferUnapprovedResponse ¶
type TransferUnapprovedResponse struct { Message string `json:"message"` Results []*TransferUnapprovedResponseResult `json:"results"` }
TransferUnapprovedResponse represents a response to TransferUnapprovedRequest.
type TransferUnapprovedResponseResult ¶
type TransferUnapprovedResponseResult struct { Type string `json:"type"` Directory string `json:"directory"` UUID string `json:"uuid"` }
TransferUnapprovedResponseResult represents a result of TransferUnapprovedResponse.