Class: FaceAi::MultiPart
Class Method Summary collapse
Instance Method Summary collapse
- #add_field(name, value) ⇒ Object
- #add_file(name, filepath) ⇒ Object
- #content_type ⇒ Object
- #has_file? ⇒ Boolean
-
#initialize ⇒ MultiPart
constructor
A new instance of MultiPart.
- #inspect ⇒ Object
Constructor Details
#initialize ⇒ MultiPart
Returns a new instance of MultiPart.
46 47 48 49 50 |
# File 'lib/baiduAiFace/client.rb', line 46 def initialize @fields = [] @files = [] @boundary = [SecureRandom.random_bytes(15)].pack('m*').chop! end |
Class Method Details
.guess_mime(filename) ⇒ Object
60 61 62 63 |
# File 'lib/baiduAiFace/client.rb', line 60 def self.guess_mime filename res = MIME::Types.type_for(filename) res.empty? ? 'application/octet-stream' : res[0] end |
Instance Method Details
#add_field(name, value) ⇒ Object
52 53 54 |
# File 'lib/baiduAiFace/client.rb', line 52 def add_field name, value @fields << [name, value] end |
#add_file(name, filepath) ⇒ Object
56 57 58 |
# File 'lib/baiduAiFace/client.rb', line 56 def add_file name, filepath @files << [name, filepath] end |
#content_type ⇒ Object
69 70 71 |
# File 'lib/baiduAiFace/client.rb', line 69 def content_type "multipart/form-data; boundary=#{@boundary}" end |
#has_file? ⇒ Boolean
65 66 67 |
# File 'lib/baiduAiFace/client.rb', line 65 def has_file? not @files.empty? end |
#inspect ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/baiduAiFace/client.rb', line 73 def inspect res = StringIO.new append_boundary = lambda { res.write "--#{@boundary}\r\n" } @fields.each do |field| append_boundary[] res.write "Content-Disposition: form-data; name=\"#{field[0]}\"\r\n\r\n#{field[1]}\r\n" end @files.each do |file| append_boundary[] res.write "Content-Disposition: file; name=\"#{file[0]}\"; filename=\"#{file[1]}\"\r\n" res.write "Content-Type: #{self.class.guess_mime file[1]}\r\n" res.write "Content-Transfer-Encoding: binary\r\n\r\n" res.write File.open(file[1]).read res.write "\r\n" end res.write "--#{@boundary}--\r\n" res.rewind res.read end |