Class: Mihari::Emitters::HTTP

Inherits:
Base
  • Object
show all
Defined in:
lib/mihari/emitters/http.rb

Constant Summary

Constants included from Mixins::Retriable

Mixins::Retriable::DEFAULT_ON

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Base

inherited, #run

Methods included from Mixins::Retriable

#retry_on_error

Methods included from Mixins::Configurable

#configuration_keys, #configuration_values, #configured?

Constructor Details

#initialize(*args, **kwargs) ⇒ HTTP

Returns a new instance of HTTP.



59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/mihari/emitters/http.rb', line 59

def initialize(*args, **kwargs)
  super(*args, **kwargs)

  uri = kwargs[:url] || kwargs[:uri]
  http_request_headers = kwargs[:http_request_headers] || {}
  http_request_method = kwargs[:http_request_method] || "POST"
  template = kwargs[:template]

  @uri = Addressable::URI.parse(uri) if uri
  @http_request_headers = http_request_headers
  @http_request_method = http_request_method
  @template = template
end

Instance Attribute Details

#http_request_headersHash (readonly)

Returns:

  • (Hash)


51
52
53
# File 'lib/mihari/emitters/http.rb', line 51

def http_request_headers
  @http_request_headers
end

#http_request_methodString (readonly)

Returns:

  • (String)


54
55
56
# File 'lib/mihari/emitters/http.rb', line 54

def http_request_method
  @http_request_method
end

#templateString? (readonly)

Returns:

  • (String, nil)


57
58
59
# File 'lib/mihari/emitters/http.rb', line 57

def template
  @template
end

#uriAddressable::URI? (readonly)

Returns:

  • (Addressable::URI, nil)


48
49
50
# File 'lib/mihari/emitters/http.rb', line 48

def uri
  @uri
end

Instance Method Details

#emit(title:, description:, artifacts:, source:, tags:) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/mihari/emitters/http.rb', line 73

def emit(title:, description:, artifacts:, source:, tags:)
  return if artifacts.empty?

  res = nil

  payload_ = payload_as_string(
    title: title,
    description: description,
    artifacts: artifacts,
    source: source,
    tags: tags
  )
  payload = JSON.parse(payload_)

  client = Mihari::HTTP.new(uri, headers: http_request_headers, payload: payload)

  case http_request_method
  when "GET"
    res = client.get
  when "POST"
    res = client.post
  end

  res
end

#valid?Boolean

Returns:

  • (Boolean)


99
100
101
102
103
# File 'lib/mihari/emitters/http.rb', line 99

def valid?
  return false if uri.nil?

  ["http", "https"].include? uri.scheme.downcase
end