Module: Taxii

Defined in:
lib/taxii/parsers/sax_poll_response.rb,
lib/taxii.rb,
lib/taxii/client.rb,
lib/taxii/version.rb,
lib/taxii/messages.rb,
lib/taxii/poll_client.rb,
lib/taxii/time_extensions.rb,
lib/taxii/messages/message.rb,
lib/taxii/messages/parameters.rb,
lib/taxii/messages/poll_request.rb,
lib/taxii/messages/record_count.rb,
lib/taxii/messages/content_block.rb,
lib/taxii/messages/discovery_request.rb,
lib/taxii/messages/inclusive_end_timestamp.rb,
lib/taxii/messages/feed_information_request.rb,
lib/taxii/messages/poll_fulfillment_request.rb,
lib/taxii/messages/exclusive_begin_timestamp.rb,
lib/taxii/messages/collection_information_request.rb

Overview

STILL DOOMED TO FAILURE. I WILL KEEP THIS AS A WARNING TO SIMILARLY TERRIBLE CODE

Defined Under Namespace

Modules: Client, MessageParsers, Messages, TimeExtensions Classes: PollClient

Constant Summary collapse

VERSION =
'0.3.3'

Class Method Summary collapse

Class Method Details

.configure(options = {}) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/taxii.rb', line 27

def self.configure(options = {})
  client = options.fetch(:client, PollClient)
  config = options.fetch(:config, File.join(ENV['HOME'],'.taxii.json'))
  user = options[:user]
  pass = options[:pass]
  url = options[:url]

  if url
    configuration = { user: user, pass: pass, url: url }
  elsif File.exist?(config)
    configuration = JSON.parse(File.read(config))
  else
    raise('You must provide user+pass+url, ora a config file, or have a default $HOME/.taxii.json')
  end

  configuration[:logger] = options[:logger]

  client.new(configuration)
end

.hailObject



47
48
49
# File 'lib/taxii.rb', line 47

def self.hail
  PollClient.new(user: 'guest', pass: 'guest', url: 'http://hailataxii.com/taxii-discovery-service')
end

.parse(body) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/taxii.rb', line 55

def self.parse(body)
  parsed = Nori.new(strip_namespaces: true).parse(body)
  if parsed['Content_Block']
    Messages::ContentBlock.new(body)
  elsif parsed['Exclusive_Begin_Timestamp']
    Messages::ExclusiveBeginTimestamp.new(body)
  elsif parsed['Inclusive_End_Timestamp']
    Messages::InclusiveEndTimestamp.new(body)
  elsif parsed['Record_Count']
    Messages::RecordCount.new(body)
  else
    raise("Message unsupported. Objects: #{parsed.keys}")
  end
end

.yetiObject



51
52
53
# File 'lib/taxii.rb', line 51

def self.yeti
  PollClient.new(user: 'guest', pass: 'guest', url: 'http://taxiitest.mitre.org/services/discovery/')
end