Class: FmRest::Spyke::JsonParser

Inherits:
Faraday::Response::Middleware
  • Object
show all
Defined in:
lib/fmrest/spyke/json_parser.rb

Overview

Response Faraday middleware for converting FM API's response JSON into Spyke's expected format

Constant Summary collapse

SINGLE_RECORD_RE =
%r(/records/\d+\Z).freeze
MULTIPLE_RECORDS_RE =
%r(/records\Z).freeze
FIND_RECORDS_RE =
%r(/_find\b).freeze
VALIDATION_ERROR_RANGE =
500..599

Instance Method Summary collapse

Constructor Details

#initialize(app, model) ⇒ JsonParser

Returns a new instance of JsonParser.

Parameters:



16
17
18
19
# File 'lib/fmrest/spyke/json_parser.rb', line 16

def initialize(app, model)
  super(app)
  @model = model
end

Instance Method Details

#on_complete(env) ⇒ Object

Parameters:

  • env (Faraday::Env)


22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/fmrest/spyke/json_parser.rb', line 22

def on_complete(env)
  json = parse_json(env.body)

  case
  when single_record_request?(env)
    env.body = prepare_single_record(json)
  when multiple_records_request?(env), find_request?(env)
    env.body = prepare_collection(json)
  when create_request?(env), update_request?(env), delete_request?(env)
    env.body = prepare_save_response(json)
  end
end