Sha256: cb7dea5ad1d215ef292217ef37e2e369a07a020d3b270872a4db74ce3b78978f
Contents?: true
Size: 1.54 KB
Versions: 2
Compression:
Stored size: 1.54 KB
Contents
require "open-uri" require "rest-client" module Clarifai module Rails class Detector def initialize(urls, opts={}) raise 'Input data not supported! (String Array or String only)' unless valid_params?(urls) @urls = urls.is_a?(Array) ? urls : [urls] @model_code = opts[:model] || Clarifai::Rails.model_code raise 'Model need to set' if @model_code.blank? end def to_hash @data_urls ||= fetch @data_urls.is_a?(Hash) ? @data_urls : JSON.parse(@data_urls).symbolize_keys end def results to_hash[:outputs] end def images results.map do |image| Clarifai::Rails::Image.new(image) end end def image Clarifai::Rails::Image.new(results.first) end # Status method def error Clarifai::Rails::Error.detector(to_hash[:status]) end def error? error.present? end def success? error.blank? end private attr_reader :urls, :model_code def endpoint "#{Clarifai::Rails.tag_url}/#{model_code}/outputs" end def valid_params?(urls) urls.is_a?(Array) || urls.is_a?(String) end def fetch params = { inputs: urls.map{ |url| url_data(url) } } result = RestClient.post(endpoint, params.to_json, Authorization: "Key #{Clarifai::Rails.api_key}") JSON.parse(result).symbolize_keys end def url_data(url) { data: { image: { url: url } } } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
clarifai-rails-0.2.1 | lib/clarifai/rails/detector.rb |
clarifai-rails-0.2.0 | lib/clarifai/rails/detector.rb |