Method: Filemaker::Server#perform_request

Defined in:
lib/filemaker/server.rb

#perform_request(method, action, args, options = {}) ⇒ Array

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Mostly used by Filemaker::Api TODO: There must be tracing/instrumentation. CURL etc. Or performance metrics? Also we want to pass in timeout option so we can ignore timeout for really long requests

Returns:

  • (Array)

    Faraday::Response and request params Hash



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/filemaker/server.rb', line 37

def perform_request(method, action, args, options = {})
  params = serialize_args(args)
           .merge(expand_options(options))
           .merge({ action => '' })

  # Serialize the params for submission??
  params.stringify_keys!

  log_action(params)

  # yield params if block_given?
  response = @connection.public_send(method, endpoint, params)

  case response.status
  when 200 then [response, params]
  when 401 then raise Errors::AuthenticationError, 'Auth failed.'
  when 0   then raise Errors::CommunicationError, 'Empty response.'
  when 404 then raise Errors::CommunicationError, 'HTTP 404 Not Found'
  when 302 then raise Errors::CommunicationError, 'Redirect not supported'
  else
    msg = "Unknown response status = #{response.status}"
    raise Errors::CommunicationError, msg
  end
end