Class: SPDocgen::StatusResponse

Inherits:
Object
  • Object
show all
Defined in:
lib/spdocgen/status_response.rb

Instance Method Summary collapse

Constructor Details

#initialize(xml) ⇒ StatusResponse

<StatusResponse> <DocGenRequestStatuses> <DocGenRequestStatus> <Uuid>9f576898-8d74-432e-80b8-dacbaf8d7bf6</Uuid> <State>Failed</State> <DocumentRequests> <DocumentRequest ServerId=‘5614’ ClientId=‘b3b98dc0-449c-012f-238b-0026b92085d1’ State=‘Timeout’> <Documents></Documents> </DocumentRequest> </DocumentRequests> </DocGenRequestStatus> </DocGenRequestStatuses> </StatusResponse>



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/spdocgen/status_response.rb', line 18

def initialize(xml)
  document = Nokogiri::XML.parse(xml, nil, 'UTF-8')
  raise 'Not a render response' unless document.root.name == 'StatusResponse'

  document.xpath('/StatusResponse/DocGenRequestStatuses/DocGenRequestStatus').each do |node|
    uuid = node.xpath('Uuid').text
    state = node.xpath('State').text
    requests = node.xpath('DocumentRequests/DocumentRequest').collect do |req|
      documents = req.xpath('Documents/Document').collect do |doc|
        name = doc.xpath('Name')
        uri = doc.xpath('Uri')
         = doc.xpath('MetaDataEntries/MetaDataEntry').inject({}) do |map,md|
          map[md.xpath('Key').text] = md.xpath('Value').text
          map
        end

        {
          :reference => doc['Reference'],
          :num_pages => doc['NumPages'].to_i,
          :name => name.text,
          :uri => uri.text,
          :metadata => 
        }
      end

      {
        :server_id => req['ServerId'],
        :request_guid => req['ClientId'],
        :state => req['State'],
        :documents => documents
      }
    end

    record_status uuid, state, requests
  end
end

Instance Method Details

#status(uuid) ⇒ Object



59
60
61
62
# File 'lib/spdocgen/status_response.rb', line 59

def status(uuid)
  @status ||= {}
  @status[uuid] ||= {}
end

#uuidsObject



55
56
57
# File 'lib/spdocgen/status_response.rb', line 55

def uuids
  @uuids ||= []
end