Class: Ittybit::AsyncSignaturesClient

Inherits:
Object
  • Object
show all
Defined in:
lib/ittybit/signatures/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request_client:) ⇒ Ittybit::AsyncSignaturesClient



75
76
77
# File 'lib/ittybit/signatures/client.rb', line 75

def initialize(request_client:)
  @request_client = request_client
end

Instance Attribute Details

#request_clientIttybit::AsyncRequestClient (readonly)



71
72
73
# File 'lib/ittybit/signatures/client.rb', line 71

def request_client
  @request_client
end

Instance Method Details

#create(filename:, folder: nil, expiry: nil, method: nil, request_options: nil) ⇒ Ittybit::Signatures::SignaturesCreateResponse

You can use signatures to create signed URLs which grant access to your

project's resources, without revealing your project's API key. URLs can expire
after a specified time and be limited to HTTP `GET` method for read-only access,
or HTTP `PUT` method for client-side uploads.

Examples:

api = Ittybit::Client.new(
  base_url: "https://api.example.com",
  environment: Ittybit::Environment::DEFAULT,
  api_key: "YOUR_AUTH_TOKEN"
)
api.signatures.create(
  filename: "video.mp4",
  folder: "example",
  expiry: 1735689600,
  method: PUT
)


102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/ittybit/signatures/client.rb', line 102

def create(filename:, folder: nil, expiry: nil, method: nil, request_options: nil)
  Async do
    response = @request_client.conn.post do |req|
      req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
      req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
      req.headers["ACCEPT_VERSION"] = request_options.version unless request_options&.version.nil?
      req.headers = {
        **(req.headers || {}),
        **@request_client.get_headers,
        **(request_options&.additional_headers || {}),
        "Accept-Version": "2025-08-20"
      }.compact
      unless request_options.nil? || request_options&.additional_query_parameters.nil?
        req.params = { **(request_options&.additional_query_parameters || {}) }.compact
      end
      req.body = {
        **(request_options&.additional_body_parameters || {}),
        filename: filename,
        folder: folder,
        expiry: expiry,
        method: method
      }.compact
      req.url "#{@request_client.get_url(request_options: request_options)}/signatures"
    end
    Ittybit::Signatures::SignaturesCreateResponse.from_json(json_object: response.body)
  end
end