Class: Fakturan::Response::ParseJSON

Inherits:
Faraday::Response::Middleware
  • Object
show all
Defined in:
lib/fakturan_nu/middleware/parse_json.rb

Instance Method Summary collapse

Instance Method Details

#on_complete(env) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/fakturan_nu/middleware/parse_json.rb', line 15

def on_complete(env)
  begin # https://github.com/lostisland/faraday/blob/master/lib/faraday/response.rb
    if env.parse_body? # If we get a result
      env.body = parse(env.body)
    else # If we get 204 = request fine, but no content returned
      env.body = { data: {}, metadata: {}, errors: {} }
    end
  rescue MultiJson::ParseError => exception
    raise Fakturan::Error::ParseError, {:status => env.status, :headers => env.response_headers, :body => env.body}
  end
end

#parse(body) ⇒ Object



4
5
6
7
8
9
10
11
12
13
# File 'lib/fakturan_nu/middleware/parse_json.rb', line 4

def parse(body)
  json = MultiJson.load(body, symbolize_keys: true)

  res = {
    data: json[:data],
    metadata: json[:paging],
    errors: json[:errors]
  }
  return res
end