Class: Ultrasafeai::Images::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/ultrasafeai/images/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(client:, base_url: nil, environment: nil) ⇒ void

Parameters:



11
12
13
14
15
# File 'lib/ultrasafeai/images/client.rb', line 11

def initialize(client:, base_url: nil, environment: nil)
  @client = client
  @base_url = base_url
  @environment = environment
end

Instance Method Details

#create_image_variations(request_options: {}, **params) ⇒ Ultrasafeai::Types::ImageResponse

Parameters:

  • request_options (Hash) (defaults to: {})
  • params (void)

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Returns:



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/ultrasafeai/images/client.rb', line 107

def create_image_variations(request_options: {}, **params)
  params = Ultrasafeai::Internal::Types::Utils.normalize_keys(params)
  body = Internal::Multipart::FormData.new

  body.add_part(params[:image].to_form_data_part(name: "image")) if params[:image]
  if params[:model]
    body.add(
      name: "model",
      value: params[:model]
    )
  end

  request = Ultrasafeai::Internal::Multipart::Request.new(
    base_url: request_options[:base_url] || @base_url || @environment&.dig(:base),
    method: "POST",
    path: "images/variations",
    body: body,
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Ultrasafeai::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    Ultrasafeai::Types::ImageResponse.load(response.body)
  else
    error_class = Ultrasafeai::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end

#edit_image(request_options: {}, **params) ⇒ Ultrasafeai::Types::ImageResponse

Parameters:

  • request_options (Hash) (defaults to: {})
  • params (void)

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Returns:



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/ultrasafeai/images/client.rb', line 58

def edit_image(request_options: {}, **params)
  params = Ultrasafeai::Internal::Types::Utils.normalize_keys(params)
  body = Internal::Multipart::FormData.new

  body.add_part(params[:image].to_form_data_part(name: "image")) if params[:image]
  body.add_part(params[:mask].to_form_data_part(name: "mask")) if params[:mask]
  if params[:prompt]
    body.add(
      name: "prompt",
      value: params[:prompt]
    )
  end
  if params[:model]
    body.add(
      name: "model",
      value: params[:model]
    )
  end

  request = Ultrasafeai::Internal::Multipart::Request.new(
    base_url: request_options[:base_url] || @base_url || @environment&.dig(:base),
    method: "POST",
    path: "images/edits",
    body: body,
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Ultrasafeai::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    Ultrasafeai::Types::ImageResponse.load(response.body)
  else
    error_class = Ultrasafeai::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end

#generate(request_options: {}, **params) ⇒ Ultrasafeai::Types::ImageResponse

Parameters:

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Returns:



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/ultrasafeai/images/client.rb', line 26

def generate(request_options: {}, **params)
  params = Ultrasafeai::Internal::Types::Utils.normalize_keys(params)
  request = Ultrasafeai::Internal::JSON::Request.new(
    base_url: request_options[:base_url] || @base_url || @environment&.dig(:base),
    method: "POST",
    path: "images/generations",
    body: Ultrasafeai::Images::Types::GenerateImagesRequest.new(params).to_h,
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Ultrasafeai::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    Ultrasafeai::Types::ImageResponse.load(response.body)
  else
    error_class = Ultrasafeai::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end