Class: Georeferencer::Parser

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

Instance Method Summary collapse

Instance Method Details

#on_complete(env) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/georeferencer/middleware/parser.rb', line 3

def on_complete(env)
  json = Oj.load(env[:body], symbolize_keys: true)
  if json.has_key?("@list")
    start = nil

    if json["next"].present?
      query = URI.parse(json["next"]).query
      start = query.scan(/start=([^$]+)/).flatten.first
    end

    body = {
      data: json["@list"]
    }

    body.merge!({metadata: {start: start}})
    env[:body] = body
  else
    # Progress doesn't have an id; set the id to the collection
    if env.url.path =~ /progress/
      json.merge!({id: Faraday::Utils.parse_query(env.url.query)["collection"]})
    end
    env[:body] = {
      data: json.with_indifferent_access
    }
  end
end