class PlateApi::PostMultipartRequest

Constants

HttpAdapter

Public Class Methods

new(public_key, secret, path, parameters = {}, custom_server = nil) click to toggle source
Calls superclass method
# File lib/plate_api/post_multipart_request.rb, line 5
def initialize(public_key, secret, path, parameters = {}, custom_server = nil)
  super(public_key, secret, "POST", path, custom_server)

  @post_parameters = map_parameters(parameters)
end

Public Instance Methods

extra_builder_options(builder) click to toggle source
# File lib/plate_api/post_multipart_request.rb, line 11
def extra_builder_options(builder)
  builder.request :multipart
  builder.request :url_encoded
end
extra_request_options(request) click to toggle source
# File lib/plate_api/post_multipart_request.rb, line 16
def extra_request_options(request)
  request.body = @post_parameters
end
map_parameters(parameters) click to toggle source
# File lib/plate_api/post_multipart_request.rb, line 33
def map_parameters(parameters)
  parameters.keys.each do |key|
    val = parameters[key]
    if val.is_a? File
      full_path = File.expand_path(val)
      mime_type = mime_type(full_path)
      parameters[key] = Faraday::UploadIO.new(full_path, mime_type)
    end
  end

  return parameters
end
mime_type(full_path) click to toggle source
# File lib/plate_api/post_multipart_request.rb, line 20
def mime_type(full_path)
  begin
    IO.popen(["file", "--brief", "--mime-type", full_path], in: :close, err: :close) { |io| io.read.chomp }
  rescue SystemCallError
    # determine mime_type based on extension as a fallback, in case `file` is not installed on the client machine
    mime_type_fallback(full_path)
  end
end
mime_type_fallback(full_path) click to toggle source
# File lib/plate_api/post_multipart_request.rb, line 29
def mime_type_fallback(full_path)
  MIME::Types.type_for(full_path).first.content_type
end