Class: Threatinator::Feed

Inherits:
Object
  • Object
show all
Defined in:
lib/threatinator/feed.rb

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Feed

Returns a new instance of Feed.

Parameters:

  • opts (Hash) (defaults to: {})

    Options hash

Options Hash (opts):

  • :provider (String)

    The name of the provider

  • :name (String)

    The name of the feed

  • :parser_block (Proc)

    A block that will be called by the parser each time it processes a record.

  • :parser_builder (Proc)

    A proc that, when called, will return a brand new instance of a Threatinator::Parser.

  • :fetcher_builder (Proc)

    A proc that, when called, will return a brand new instance of a Threatinator::Fetcher.

  • :filter_builders (Array<Proc>)

    An array of procs that, when called, will each return an instance of a filter (something that responds to :filter?)

  • :decoder_builders (Array<Proc>)

    An array of procs that, when called, will each return an instance of a Threatinator::Decoder



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/threatinator/feed.rb', line 19

def initialize(opts = {})
  @provider = opts.delete(:provider)
  @name = opts.delete(:name)
  @parser_block = opts.delete(:parser_block)

  @parser_builder = opts.delete(:parser_builder)
  @fetcher_builder = opts.delete(:fetcher_builder)
  @filter_builders = opts.delete(:filter_builders) || []
  @decoder_builders = opts.delete(:decoder_builders) || []
  validate!
end

Instance Method Details

#decoder_buildersObject



55
56
57
# File 'lib/threatinator/feed.rb', line 55

def decoder_builders
  @decoder_builders.dup
end

#fetcher_builderObject



43
44
45
# File 'lib/threatinator/feed.rb', line 43

def fetcher_builder
  @fetcher_builder
end

#filter_buildersObject



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

def filter_builders
  @filter_builders.dup
end

#nameObject



35
36
37
# File 'lib/threatinator/feed.rb', line 35

def name
  @name.dup
end

#parser_blockObject



39
40
41
# File 'lib/threatinator/feed.rb', line 39

def parser_block
  @parser_block
end

#parser_builderObject



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

def parser_builder
  @parser_builder
end

#providerObject



31
32
33
# File 'lib/threatinator/feed.rb', line 31

def provider
  @provider.dup
end

#validate!Object



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/threatinator/feed.rb', line 59

def validate!
  validate_attribute!(:provider, @provider) { |x| x.kind_of?(::String) }
  validate_attribute!(:name, @name) { |x| x.kind_of?(::String) }
  validate_attribute!(:parser_block, @parser_block) { |x| x.kind_of?(::Proc) }
  validate_attribute!(:fetcher_builder, @fetcher_builder) { |x| x.kind_of?(::Proc) }
  validate_attribute!(:parser_builder, @parser_builder) { |x| x.kind_of?(::Proc) }
  validate_attribute!(:filter_builders, @filter_builders) do |x|
    x.kind_of?(::Array) &&
      x.all? { |e| e.kind_of?(::Proc) }
  end

  validate_attribute!(:decoder_builders, @decoder_builders) do |x|
    x.kind_of?(::Array) &&
      x.all? { |e| e.kind_of?(::Proc) }
  end
end

#validate_attribute!(name, val, &block) ⇒ Object



76
77
78
79
80
# File 'lib/threatinator/feed.rb', line 76

def validate_attribute!(name, val, &block)
  unless block.call(val) == true
    raise Threatinator::Exceptions::InvalidAttributeError.new("Invalid attribute (#{name}). Got: #{val.inspect}")
  end
end