Class: Inttegro::Resources::UploadRequests

Inherits:
Object
  • Object
show all
Defined in:
lib/inttegro/resources/upload_requests.rb

Overview

Client for delegated, policy-constrained file uploads.

Access this resource through Client#upload_requests. Management methods use the client's API key; #fulfill uses the public capability URL and is intentionally unauthenticated.

Instance Method Summary collapse

Constructor Details

#initialize(http) ⇒ UploadRequests

Returns a new instance of UploadRequests.

Parameters:



12
13
14
# File 'lib/inttegro/resources/upload_requests.rb', line 12

def initialize(http)
  @http = T.let(http, Inttegro::HTTPClient)
end

Instance Method Details

#cancel(payload, idempotency_key: nil) ⇒ Inttegro::UploadRequest

Cancel an active delegated upload request.

Parameters:

  • payload (Hash, Inttegro::UploadRequest::CancelRequest) —

    upload request identifier and metadata

  • idempotency_key (String, nil) (defaults to: nil) —

    explicit key for safely retrying this logical write

Returns:



55
56
57
58
59
60
61
62
# File 'lib/inttegro/resources/upload_requests.rb', line 55

def cancel(payload, idempotency_key: nil)
  @http.post_resource(
    "/upload_requests/cancel",
    Inttegro::UploadRequest, :upload_request,
    payload,
    headers: headers(idempotency_key)
  )
end

#create(payload, idempotency_key: nil) ⇒ Inttegro::UploadRequest

Create a delegated upload request.

Parameters:

  • payload (Hash, Inttegro::UploadRequest::CreateRequest) —

    purpose, constraints, and expiry fields

  • idempotency_key (String, nil) (defaults to: nil) —

    explicit key for safely retrying this logical write

Returns:



21
22
23
24
25
26
27
28
# File 'lib/inttegro/resources/upload_requests.rb', line 21

def create(payload, idempotency_key: nil)
  @http.post_resource(
    "/upload_requests/create",
    Inttegro::UploadRequest, :upload_request,
    payload,
    headers: headers(idempotency_key)
  )
end

#fulfill(upload_url:, file:) ⇒ Inttegro::Shared::UploadFulfillment

Submit a file through the public delegated-upload capability URL.

Parameters:

  • upload_url (String) —

    complete capability URL returned when the upload request was created

  • file (String) —

    local path of the file to upload

Returns:



83
84
85
86
87
88
89
90
91
# File 'lib/inttegro/resources/upload_requests.rb', line 83

def fulfill(upload_url:, file:)
  @http.post_multipart_model(
    upload_url,
    Inttegro::Shared::UploadFulfillment,
    files: { file: file },
    authenticated: false,
    operation: "upload_requests.upload"
  )
end

#lookup(id:) ⇒ Inttegro::UploadRequest::Details

Retrieve an upload request and its current attempt details.

Parameters:

  • id (String) —

    unique upload request identifier

Returns:



34
35
36
37
38
39
40
# File 'lib/inttegro/resources/upload_requests.rb', line 34

def lookup(id:)
  @http.post_resource(
    "/upload_requests/lookup",
    Inttegro::UploadRequest::Details, :upload_request,
    { id: id }
  )
end

#page(payload = {}) ⇒ Inttegro::UploadRequest::Page

Retrieve a page of upload requests.

Parameters:

Returns:



46
47
48
# File 'lib/inttegro/resources/upload_requests.rb', line 46

def page(payload = {})
  @http.post_resource("/upload_requests/page", Inttegro::UploadRequest::Page, :page, payload || {})
end

#review(payload, idempotency_key: nil) ⇒ Inttegro::UploadRequest::Details

Record a manual approval or rejection for a submitted upload attempt.

Parameters:

Returns:



69
70
71
72
73
74
75
76
# File 'lib/inttegro/resources/upload_requests.rb', line 69

def review(payload, idempotency_key: nil)
  @http.post_resource(
    "/upload_requests/review",
    Inttegro::UploadRequest::Details, :upload_request,
    payload,
    headers: headers(idempotency_key)
  )
end