Class: Threatstack::Client
- Inherits:
-
Object
- Object
- Threatstack::Client
- Defined in:
- lib/threatstack/client.rb
Constant Summary collapse
- THREATSTACK_API =
'https://api.threatstack.com'.freeze
Instance Attribute Summary collapse
-
#api_version ⇒ Object
readonly
Returns the value of attribute api_version.
-
#last_pagination_token ⇒ Object
readonly
Returns the value of attribute last_pagination_token.
-
#org_id ⇒ Object
readonly
Returns the value of attribute org_id.
-
#token ⇒ Object
readonly
Returns the value of attribute token.
Instance Method Summary collapse
- #agent(agent_id, params = {}) ⇒ Object
-
#agents(params = {}) ⇒ Object
ALERTS ###.
- #alert(alert_id, params = {}) ⇒ Object
-
#alerts(params = {}) ⇒ Object
ALERTS ###.
- #cves_by_agent(agent, params = {}) ⇒ Object
- #dismissed_alerts(params = {}) ⇒ Object
- #event(alert_id, event_id, params = {}) ⇒ Object
-
#initialize(token, organization_id: nil, api_version: 'v2') ⇒ Client
constructor
A new instance of Client.
- #package_vulnerabilities(package, params = {}) ⇒ Object
- #rule(ruleset_id, rule_id, params = {}) ⇒ Object
-
#rules(ruleset_id, params = {}) ⇒ Object
Rules ###.
- #ruleset(ruleset_id, params = {}) ⇒ Object
-
#rulesets(params = {}) ⇒ Object
Rulesets ###.
- #server_vulnerabilities(server, params = {}) ⇒ Object
-
#servers(monitored = true, params = {}) ⇒ Object
Servers ###.
- #severity_counts(params = {}) ⇒ Object
-
#vulnerabilities(params = {}) ⇒ Object
CVEs ###.
- #vulnerability(vuln_id, params = {}) ⇒ Object
- #vulnerability_suppressions(params = {}) ⇒ Object
Constructor Details
#initialize(token, organization_id: nil, api_version: 'v2') ⇒ Client
Returns a new instance of Client.
17 18 19 20 21 22 23 24 |
# File 'lib/threatstack/client.rb', line 17 def initialize(token, organization_id: nil, api_version: 'v2') @api_version = api_version @token = token @org_id = organization_id if api_version == 'v1' raise ThreatstackError, "This version of threatstack-ruby does not support Threatstack API v1" end end |
Instance Attribute Details
#api_version ⇒ Object (readonly)
Returns the value of attribute api_version.
15 16 17 |
# File 'lib/threatstack/client.rb', line 15 def api_version @api_version end |
#last_pagination_token ⇒ Object (readonly)
Returns the value of attribute last_pagination_token.
15 16 17 |
# File 'lib/threatstack/client.rb', line 15 def last_pagination_token @last_pagination_token end |
#org_id ⇒ Object (readonly)
Returns the value of attribute org_id.
15 16 17 |
# File 'lib/threatstack/client.rb', line 15 def org_id @org_id end |
#token ⇒ Object (readonly)
Returns the value of attribute token.
15 16 17 |
# File 'lib/threatstack/client.rb', line 15 def token @token end |
Instance Method Details
#agent(agent_id, params = {}) ⇒ Object
33 34 35 36 37 |
# File 'lib/threatstack/client.rb', line 33 def agent(agent_id, params = {}) raise ThreatstackError, "Must specify agent id" unless agent_id response = do_request(:get, "agents/#{agent_id}", params) Agent.new(response, self) end |
#agents(params = {}) ⇒ Object
ALERTS ###
28 29 30 31 |
# File 'lib/threatstack/client.rb', line 28 def agents(params = {}) response = do_request(:get, 'agents', params) Response.new(response['agents'], self, entity: :agent).agents end |
#alert(alert_id, params = {}) ⇒ Object
50 51 52 53 54 |
# File 'lib/threatstack/client.rb', line 50 def alert(alert_id, params = {}) raise ThreatstackError, "Must specify alert id" unless alert_id response = do_request(:get, "alerts/#{alert_id}", params) Alert.new(response, self) end |
#alerts(params = {}) ⇒ Object
ALERTS ###
40 41 42 43 |
# File 'lib/threatstack/client.rb', line 40 def alerts(params = {}) response = do_request(:get, 'alerts', params) Response.new(response['alerts'], self, entity: :alert).alerts end |
#cves_by_agent(agent, params = {}) ⇒ Object
97 98 99 100 101 102 103 |
# File 'lib/threatstack/client.rb', line 97 def cves_by_agent(agent, params = {}) raise ThreatstackError, "Must specify agent" unless agent uri = "vulnerabilities/agent/#{agent}" uri += "/suppressed" if params[:suppressed] response = do_request(:get, uri, params) response['cves'] end |
#dismissed_alerts(params = {}) ⇒ Object
45 46 47 48 |
# File 'lib/threatstack/client.rb', line 45 def dismissed_alerts(params = {}) response = do_request(:get, 'alerts/dismissed', params) Response.new(response['alerts'], self, entity: :alert).alerts end |
#event(alert_id, event_id, params = {}) ⇒ Object
61 62 63 64 |
# File 'lib/threatstack/client.rb', line 61 def event(alert_id, event_id, params = {}) response = do_request(:get, "alerts/#{alert_id}/events/#{event_id}", params) GenericObject.new(response['details'], self, entity: :event) end |
#package_vulnerabilities(package, params = {}) ⇒ Object
81 82 83 84 85 86 87 |
# File 'lib/threatstack/client.rb', line 81 def package_vulnerabilities(package, params = {}) raise ThreatstackError, "Must specify package" unless package uri = "vulnerabilities/package/#{package}" uri += "/suppressed" if params[:suppressed] response = do_request(:get, uri, params) Response.new(response['packages'], self, entity: :package).list end |
#rule(ruleset_id, rule_id, params = {}) ⇒ Object
130 131 132 133 134 |
# File 'lib/threatstack/client.rb', line 130 def rule(ruleset_id, rule_id, params = {}) raise ThreatstackError, "Must specify ruleset id and rule id" unless ruleset_id && rule_id response = do_request(:get, "rulesets/#{ruleset_id}/rules/#{rule_id}", params) Rule.new(response, self) end |
#rules(ruleset_id, params = {}) ⇒ Object
Rules ###
125 126 127 128 |
# File 'lib/threatstack/client.rb', line 125 def rules(ruleset_id, params = {}) response = do_request(:get, "rulesets/#{ruleset_id}/rules", params) Response.new(response['rules'], self, entity: :rule).rules end |
#ruleset(ruleset_id, params = {}) ⇒ Object
117 118 119 120 121 |
# File 'lib/threatstack/client.rb', line 117 def ruleset(ruleset_id, params = {}) raise ThreatstackError, "Must specify ruleset id" unless ruleset_id response = do_request(:get, "rulesets/#{ruleset_id}", params) Ruleset.new(response, self) end |
#rulesets(params = {}) ⇒ Object
Rulesets ###
112 113 114 115 |
# File 'lib/threatstack/client.rb', line 112 def rulesets(params = {}) response = do_request(:get, 'rulesets', params) Response.new(response['rulesets'], self, entity: :ruleset).rulesets end |
#server_vulnerabilities(server, params = {}) ⇒ Object
89 90 91 92 93 94 95 |
# File 'lib/threatstack/client.rb', line 89 def server_vulnerabilities(server, params = {}) raise ThreatstackError, "Must specify server" unless server uri = "vulnerabilities/server/#{server}" uri += "/suppressed" if params[:suppressed] response = do_request(:get, uri, params) response['cves'] end |
#servers(monitored = true, params = {}) ⇒ Object
Servers ###
138 139 140 141 142 143 |
# File 'lib/threatstack/client.rb', line 138 def servers(monitored = true, params = {}) uri = "servers" uri += "/non-monitored" unless monitored response = do_request(:get, uri, params) Response.new(response['servers'], self, entity: :server).list end |
#severity_counts(params = {}) ⇒ Object
56 57 58 59 |
# File 'lib/threatstack/client.rb', line 56 def severity_counts(params = {}) response = do_request(:get, "alerts/severity-counts", params) Response.new(response['severityCounts'], self, entity: :severity_count).list end |
#vulnerabilities(params = {}) ⇒ Object
CVEs ###
68 69 70 71 72 73 |
# File 'lib/threatstack/client.rb', line 68 def vulnerabilities(params = {}) uri = "vulnerabilities" uri += "/suppressed" if params[:suppressed] response = do_request(:get, uri, params) Response.new(response['cves'], self, entity: :cve).cves end |
#vulnerability(vuln_id, params = {}) ⇒ Object
75 76 77 78 79 |
# File 'lib/threatstack/client.rb', line 75 def vulnerability(vuln_id, params = {}) raise ThreatstackError, "Must specify vulnerability id" unless vuln_id response = do_request(:get, "vulnerabilities/#{vuln_id}", params) Cve.new(response, self) end |
#vulnerability_suppressions(params = {}) ⇒ Object
105 106 107 108 |
# File 'lib/threatstack/client.rb', line 105 def vulnerability_suppressions(params = {}) response = do_request(:get, "vulnerabilities/suppressions", params) Response.new(response['suppressions'], self, entity: :suppression).list end |