openai_ruby 0.5.2 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 91361df72462f49209491acf92303a7fb6f47ab9a947303da373b8345b7736c4
4
- data.tar.gz: 5bb2b48ff21f949605e2fe9072dfd9d324c0ce4803462fc6c3c83a19b8fd2d1a
3
+ metadata.gz: a554ff0eded8ed64b9fd4d8fc07a5e5d0651dd35e111d6d80d724ed19651fca1
4
+ data.tar.gz: a91315b4f63e50ada7a9d90b372364b0c8e9068ea06de0e46570e4ac29b1be67
5
5
  SHA512:
6
- metadata.gz: cb209a9bafe457eebd91e7467e96e3b87433d6e8807a0b0be2e9427fa4b1b4e7cd782ea8aaea21c6283009188aecf7721b025dd62414cc940bb8d03fe6de8888
7
- data.tar.gz: '03186808fd04b88f991d53eed795f0fe56ca801d67bb4db7e7eae3f615cafe5473c6c7121d9b4d0d975acf450bd7e3bed587ffff6846dcd72e3a47aa82ea523f'
6
+ metadata.gz: 89b7a75816ea1ca6aea907013db339e3c192f24889011653829fb2d4937c5e33685efbf529c406b1ded3d3bdc3747e31e54d795286206712d642b02ff50ba9d7
7
+ data.tar.gz: 38b38f93be8a80d2b2341d06c73d9e93726aab9fb0f3961f6afebba42a9dbc98a109a19177152cd7902268655b115526fb6d1ae0afe8355d17b41102ec225cf3
data/Gemfile.lock CHANGED
@@ -1,9 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- openai_ruby (0.5.2)
4
+ openai_ruby (0.5.3)
5
5
  event_stream_parser (~> 1.0)
6
6
  faraday (~> 2.7)
7
+ faraday-multipart (~> 1.1)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
@@ -14,8 +15,11 @@ GEM
14
15
  faraday (2.7.4)
15
16
  faraday-net_http (>= 2.0, < 3.1)
16
17
  ruby2_keywords (>= 0.0.4)
18
+ faraday-multipart (1.2.0)
19
+ multipart-post (~> 2.0)
17
20
  faraday-net_http (3.0.2)
18
21
  json (2.6.3)
22
+ multipart-post (2.4.1)
19
23
  parallel (1.22.1)
20
24
  parser (3.2.1.0)
21
25
  ast (~> 2.4.1)
@@ -82,7 +82,9 @@ module OpenAI
82
82
  private
83
83
 
84
84
  def connection
85
- Faraday.new({ url: base_uri, headers: headers }.merge(options.except(:base_uri)))
85
+ Faraday.new({ url: base_uri, headers: headers }.merge(options.except(:base_uri))) do |faraday|
86
+ faraday.request :multipart
87
+ end
86
88
  end
87
89
 
88
90
  def headers
@@ -9,5 +9,50 @@ module OpenAI
9
9
  def generate(params = {})
10
10
  connection.post("/v1/images/generations", params.to_json)
11
11
  end
12
+
13
+ def edit(params = {})
14
+ connection.post("/v1/images/edits") do |req|
15
+ req.headers.delete("Content-Type")
16
+ req.body = multipart_params(params)
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def multipart_params(params)
23
+ params.each_with_object({}) do |(key, value), body|
24
+ if key.to_s == "image"
25
+ body[:image] = Array(value).map { |image| file_part(image) }
26
+ elsif file_like?(value)
27
+ body[key] = file_part(value)
28
+ elsif value.is_a?(Array)
29
+ body[key] = value
30
+ elsif !value.nil?
31
+ body[key] = value
32
+ end
33
+ end
34
+ end
35
+
36
+ def file_part(file)
37
+ return file if file.is_a?(Faraday::Multipart::FilePart)
38
+
39
+ if file.respond_to?(:path) && file.path
40
+ Faraday::Multipart::FilePart.new(file.path, content_type_for(file))
41
+ else
42
+ Faraday::Multipart::FilePart.new(file, content_type_for(file), filename_for(file))
43
+ end
44
+ end
45
+
46
+ def file_like?(value)
47
+ value.respond_to?(:read) || value.is_a?(Faraday::Multipart::FilePart)
48
+ end
49
+
50
+ def content_type_for(file)
51
+ file.respond_to?(:content_type) && file.content_type ? file.content_type : "application/octet-stream"
52
+ end
53
+
54
+ def filename_for(file)
55
+ file.respond_to?(:original_filename) && file.original_filename ? file.original_filename : "image.png"
56
+ end
12
57
  end
13
58
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenAI
4
- VERSION = "0.5.2"
4
+ VERSION = "0.5.3"
5
5
  end
data/lib/openai_ruby.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "faraday"
4
+ require "faraday/multipart"
4
5
  require "event_stream_parser"
5
6
  require "openai_ruby/client"
6
7
  require "openai_ruby/images"
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openai_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Renny Ren
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2026-04-27 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: event_stream_parser
@@ -38,7 +37,20 @@ dependencies:
38
37
  - - "~>"
39
38
  - !ruby/object:Gem::Version
40
39
  version: '2.7'
41
- description:
40
+ - !ruby/object:Gem::Dependency
41
+ name: faraday-multipart
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.1'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.1'
42
54
  email:
43
55
  - rennyrjh@gmail.com
44
56
  executables: []
@@ -66,7 +78,6 @@ metadata:
66
78
  homepage_uri: https://github.com/renny-ren/openai_ruby
67
79
  source_code_uri: https://github.com/renny-ren/openai_ruby
68
80
  changelog_uri: https://github.com/renny-ren/openai_ruby/blob/main/CHANGELOG.md
69
- post_install_message:
70
81
  rdoc_options: []
71
82
  require_paths:
72
83
  - lib
@@ -81,8 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
92
  - !ruby/object:Gem::Version
82
93
  version: '0'
83
94
  requirements: []
84
- rubygems_version: 3.4.19
85
- signing_key:
95
+ rubygems_version: 4.0.11
86
96
  specification_version: 4
87
97
  summary: A Ruby wrapper for OpenAI API
88
98
  test_files: []