Class: PlateApi::PostMultipartRequest

Inherits:
Request
  • Object
show all
Defined in:
lib/plate_api/post_multipart_request.rb

Constant Summary collapse

HttpAdapter =
:net_http

Constants inherited from Request

Request::DefaultApiBaseEndpoint

Instance Method Summary collapse

Methods inherited from Request

#calculate_signature, #execute, #request_date

Constructor Details

#initialize(public_key, secret, path, parameters = {}, custom_server = nil) ⇒ PostMultipartRequest

Returns a new instance of PostMultipartRequest.



5
6
7
8
9
# 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

Instance Method Details

#extra_builder_options(builder) ⇒ Object



11
12
13
14
# 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) ⇒ Object



16
17
18
# File 'lib/plate_api/post_multipart_request.rb', line 16

def extra_request_options(request)
  request.body = @post_parameters
end

#map_parameters(parameters) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
# 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) ⇒ Object



20
21
22
23
24
25
26
27
# 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) ⇒ Object



29
30
31
# 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