Class: Ittybit::SignaturesClient

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::SignaturesClient

Parameters:



15
16
17
# File 'lib/ittybit/signatures/client.rb', line 15

def initialize(request_client:)
  @request_client = request_client
end

Instance Attribute Details

#request_clientIttybit::RequestClient (readonly)



11
12
13
# File 'lib/ittybit/signatures/client.rb', line 11

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
)

Parameters:

Returns:



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/ittybit/signatures/client.rb', line 42

def create(filename:, folder: nil, expiry: nil, method: nil, request_options: nil)
  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