Class: Taxii::PollClient

Inherits:
Object
  • Object
show all
Includes:
Client
Defined in:
lib/taxii/poll_client.rb

Constant Summary collapse

PARSE_OPTIONS =
Nokogiri::XML::ParseOptions::DEFAULT_XML | Nokogiri::XML::ParseOptions::NOBLANKS
POLL_RESPONSE_PATH =
'/taxii_11:Poll_Response'
CONTENT_XPATH =
"#{POLL_RESPONSE_PATH}/taxii_11:Content_Block/taxii_11:Content"

Instance Method Summary collapse

Methods included from Client

#build_request, #collection_management_service_url, #discover_collections, #discover_feeds, #discover_services, #discovery_service_url, #get_service_address, #inbox_service_url, included, #poll_service_url, #scheme_protocol

Instance Method Details

#get(poll_request_message, url: self.poll_service_url) ⇒ Object



9
10
11
12
# File 'lib/taxii/poll_client.rb', line 9

def get(poll_request_message, url: self.poll_service_url)
  msg = format_request(poll_request_message)
  build_request(url: url, payload: msg).execute
end

#get_content_blocks(poll_request_message, url: self.poll_service_url, xpath: CONTENT_XPATH) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/taxii/poll_client.rb', line 14

def get_content_blocks(poll_request_message,
                        url: self.poll_service_url,
                        xpath: CONTENT_XPATH)
  response = self.get(poll_request_message, url: url)
  @content_xml = Nokogiri::XML(response.body, nil, nil, PARSE_OPTIONS)

  blocks = response_blocks

  # We have a muulti-part message
  # http://docs.oasis-open.org/cti/taxii/v1.1.1/cs01/part2-services/taxii-v1.1.1-cs01-part2-services.html#_Toc450734190
  while attribute_more == 'true'
    poll_fulfillment_message = Taxii::Messages::PollFulfillmentRequest.new(
      collection_name: poll_request_message.collection_name,
      result_id: result_id,
      result_part_number: result_part_number + 1)

    response = self.get(poll_fulfillment_message, url: url)
    @content_xml = Nokogiri::XML(response.body, nil, nil, PARSE_OPTIONS)

    blocks += response_blocks
  end

  blocks
end