Class: BddOpenai::Files::Client
- Inherits:
-
Object
- Object
- BddOpenai::Files::Client
- Defined in:
- lib/bdd_openai/files/client.rb
Overview
Client for OpenAI Files API
Instance Method Summary collapse
- #default_headers ⇒ Object
- #delete_file(file_id) ⇒ true, BddOpenai::ErrorResponse
-
#initialize(api_key = '') ⇒ Client
constructor
A new instance of Client.
- #list_files ⇒ Array<BddOpenai::Files::File>, BddOpenai::ErrorResponse
- #retrieve_file(file_id) ⇒ BddOpenai::Files::File, BddOpenai::ErrorResponse
- #upload_file(purpose, file_path) ⇒ BddOpenai::Files::File, BddOpenai::ErrorResponse
Constructor Details
#initialize(api_key = '') ⇒ Client
Returns a new instance of Client.
10 11 12 13 14 |
# File 'lib/bdd_openai/files/client.rb', line 10 def initialize(api_key = '') @http_client = BddOpenai::Client::HttpClient.new @openai_api_domain = 'https://api.openai.com/v1' @openai_api_key = api_key end |
Instance Method Details
#default_headers ⇒ Object
16 17 18 19 20 21 |
# File 'lib/bdd_openai/files/client.rb', line 16 def default_headers { "Authorization": "Bearer #{@openai_api_key}", "Content-Type": 'application/json' } end |
#delete_file(file_id) ⇒ true, BddOpenai::ErrorResponse
52 53 54 55 56 57 58 |
# File 'lib/bdd_openai/files/client.rb', line 52 def delete_file(file_id) uri = URI.parse("#{@openai_api_domain}/files/#{file_id}") response = @http_client.call_delete(uri, default_headers) return BddOpenai::ErrorResponse.from_json(response.body) unless response.code == '200' true end |
#list_files ⇒ Array<BddOpenai::Files::File>, BddOpenai::ErrorResponse
24 25 26 27 28 29 30 31 32 |
# File 'lib/bdd_openai/files/client.rb', line 24 def list_files uri = URI.parse("#{@openai_api_domain}/files") response = @http_client.call_get(uri, default_headers) return BddOpenai::ErrorResponse.from_json(response.body) unless response.code == '200' JSON.parse(response.body)['data'].map do |file| BddOpenai::Files::File.from_json(file.to_json) end end |
#retrieve_file(file_id) ⇒ BddOpenai::Files::File, BddOpenai::ErrorResponse
62 63 64 65 66 67 68 |
# File 'lib/bdd_openai/files/client.rb', line 62 def retrieve_file(file_id) uri = URI.parse("#{@openai_api_domain}/files/#{file_id}") response = @http_client.call_get(uri, default_headers) return BddOpenai::ErrorResponse.from_json(response.body) unless response.code == '200' BddOpenai::Files::File.from_json(response.body) end |
#upload_file(purpose, file_path) ⇒ BddOpenai::Files::File, BddOpenai::ErrorResponse
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/bdd_openai/files/client.rb', line 37 def upload_file(purpose, file_path) uri = URI.parse("#{@openai_api_domain}/files") body, boundary = @http_client.create_multipart_body({ purpose: purpose }, { file: file_path }) headers = default_headers .merge({ "Content-Type": "multipart/form-data; boundary=#{boundary}" }) response = @http_client.call_post(uri, body, headers) return BddOpenai::ErrorResponse.from_json(response.body) unless response.code == '200' BddOpenai::Files::File.from_json(response.body) end |