class FaceAi
Constants
- APIS
Public Class Methods
new(access_token, options={})
click to toggle source
# File lib/baiduAiFace/client.rb, line 110 def initialize(access_token, options={}) decode = options.fetch :decode, true make_hash = lambda { Hash.new {|h,k| h[k] = make_hash.call make_hash } } APIS.each do |api| m = self breadcrumbs = api.split('/')[1..-1] breadcrumbs[0..-2].each do |breadcrumb| unless m.instance_variable_defined? "@#{breadcrumb}" m.instance_variable_set "@#{breadcrumb}", Object.new m.singleton_class.class_eval do attr_reader breadcrumb end end m = m.instance_variable_get "@#{breadcrumb}" end m.define_singleton_method breadcrumbs[-1] do |*args| form = MultiPart.new fields = {'access_token' => access_token} (args[0] || {}).each do |k,v| if k.to_s == 'img' # via POST form.add_file k, v else fields[k] = v.is_a?(Enumerable) ? v.to_a.join(',') : v end end if form.has_file? req.set_content_type form.content_type req.body = form.inspect req['Content-Length'] = req.body.size end url = "https://aip.baidubce.com/rest/2.0/face/v3#{api}" p url p fields uri = URI.parse(url) res = Net::HTTP.post_form uri, fields res.body.gsub! 'null', "0" eval res.body end end end