27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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
67
68
69
70
|
# File 'lib/ultrasafeai/audio/transcriptions/client.rb', line 27
def create(request_options: {}, **params)
params = Ultrasafeai::Internal::Types::Utils.normalize_keys(params)
body = Internal::Multipart::FormData.new
body.add_part(params[:file].to_form_data_part(name: "file")) if params[:file]
if params[:model]
body.add(
name: "model",
value: params[:model]
)
end
if params[:language]
body.add(
name: "language",
value: params[:language]
)
end
if params[:response_format]
body.add(
name: "response_format",
value: params[:response_format]
)
end
request = Ultrasafeai::Internal::Multipart::Request.new(
base_url: request_options[:base_url] || @base_url || @environment&.dig(:base),
method: "POST",
path: "audio/transcribe",
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::TranscriptionResponse.load(response.body)
else
error_class = Ultrasafeai::Errors::ResponseError.subclass_for_code(code)
raise error_class.new(response.body, code: code)
end
end
|