Class: TwentyBN::Image
- Inherits:
-
Object
- Object
- TwentyBN::Image
- Defined in:
- lib/twentybn/image.rb
Instance Method Summary collapse
- #api_connection ⇒ Object
- #ask(question) ⇒ Object
- #image_base64 ⇒ Object
-
#initialize(image) ⇒ Image
constructor
A new instance of Image.
- #tag(model = :objects) ⇒ Object
Constructor Details
#initialize(image) ⇒ Image
Returns a new instance of Image.
17 18 19 |
# File 'lib/twentybn/image.rb', line 17 def initialize(image) @image = image end |
Instance Method Details
#api_connection ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/twentybn/image.rb', line 59 def api_connection @api_connection ||= Faraday.new(url: TwentyBN.config[:api_url]) do |faraday| faraday.request :url_encoded faraday.response :logger faraday.adapter Faraday.default_adapter end end |
#ask(question) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/twentybn/image.rb', line 21 def ask(question) response = api_connection.post do |request| request.headers['Content-Type'] = 'application/json' request.headers['X-ApiKey'] = TwentyBN.config[:api_key] data = { content: self.image_base64, question: question, } request.url '/v1/vqa' request.body = JSON.generate(data) end return JSON.parse(response.body) end |
#image_base64 ⇒ Object
55 56 57 |
# File 'lib/twentybn/image.rb', line 55 def image_base64 Base64.strict_encode64(IO.binread(@image)) end |
#tag(model = :objects) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/twentybn/image.rb', line 35 def tag(model=:objects) response = api_connection.post do |request| request.headers['Content-Type'] = 'application/json' request.headers['X-ApiKey'] = TwentyBN.config[:api_key] data = { content: self.image_base64, } default_models = [:objects, :places, :categories] if default_models.include? model request.url "/v1/tag_image" request.params['model'] = model else request.url '/v1/custom_tag_image' data[:modelId] = model end request.body = JSON.generate(data) end return JSON.parse(response.body) end |