virustotal_api 0.3.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +26 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +12 -8
  5. data/CHANGELOG.md +38 -6
  6. data/Gemfile +2 -0
  7. data/README.md +121 -31
  8. data/Rakefile +2 -1
  9. data/lib/virustotal_api.rb +8 -5
  10. data/lib/virustotal_api/analysis.rb +24 -0
  11. data/lib/virustotal_api/base.rb +41 -10
  12. data/lib/virustotal_api/domain.rb +24 -0
  13. data/lib/virustotal_api/exceptions.rb +5 -0
  14. data/lib/virustotal_api/file.rb +56 -0
  15. data/lib/virustotal_api/group.rb +26 -0
  16. data/lib/virustotal_api/ip.rb +24 -0
  17. data/lib/virustotal_api/uri.rb +3 -1
  18. data/lib/virustotal_api/url.rb +46 -0
  19. data/lib/virustotal_api/user.rb +26 -0
  20. data/lib/virustotal_api/version.rb +3 -1
  21. data/test/analysis_test.rb +23 -0
  22. data/test/base_test.rb +14 -25
  23. data/test/domain_test.rb +32 -0
  24. data/test/exceptions_test.rb +23 -0
  25. data/test/file_test.rb +71 -0
  26. data/test/fixtures/analysis.yml +544 -0
  27. data/test/fixtures/domain.yml +830 -0
  28. data/test/fixtures/file_analyse.yml +52 -0
  29. data/test/fixtures/file_find.yml +853 -0
  30. data/test/fixtures/file_not_found.yml +52 -0
  31. data/test/fixtures/file_rate_limit.yml +52 -0
  32. data/test/fixtures/file_unauthorized.yml +51 -0
  33. data/test/fixtures/file_upload.yml +54 -0
  34. data/test/fixtures/group_find.yml +216 -0
  35. data/test/fixtures/ip.yml +716 -0
  36. data/test/fixtures/unscanned_url_find.yml +44 -0
  37. data/test/fixtures/url_analyse.yml +52 -0
  38. data/test/fixtures/url_find.yml +599 -0
  39. data/test/fixtures/user_find.yml +213 -0
  40. data/test/group_test.rb +32 -0
  41. data/test/{ip_report_test.rb → ip_test.rb} +5 -4
  42. data/test/test_helper.rb +1 -0
  43. data/test/uri_test.rb +2 -1
  44. data/test/url_test.rb +65 -0
  45. data/test/user_test.rb +31 -0
  46. data/test/version_test.rb +2 -2
  47. data/virustotal_api.gemspec +12 -9
  48. metadata +104 -65
  49. data/.travis.yml +0 -15
  50. data/lib/virustotal_api/domain_report.rb +0 -35
  51. data/lib/virustotal_api/file_report.rb +0 -36
  52. data/lib/virustotal_api/file_scan.rb +0 -36
  53. data/lib/virustotal_api/ip_report.rb +0 -35
  54. data/lib/virustotal_api/url_report.rb +0 -40
  55. data/test/domain_report_test.rb +0 -31
  56. data/test/file_report_test.rb +0 -34
  57. data/test/file_scan_test.rb +0 -29
  58. data/test/fixtures/domain_report.yml +0 -311
  59. data/test/fixtures/ip_report.yml +0 -1323
  60. data/test/fixtures/queue_unscanned_url_report.yml +0 -46
  61. data/test/fixtures/report.yml +0 -110
  62. data/test/fixtures/report_not_found.yml +0 -42
  63. data/test/fixtures/request_forbidden.yml +0 -38
  64. data/test/fixtures/scan.yml +0 -49
  65. data/test/fixtures/unscanned_url_report.yml +0 -43
  66. data/test/fixtures/url_report.yml +0 -95
  67. data/test/url_report_test.rb +0 -56
@@ -0,0 +1,213 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://www.virustotal.com/api/v3/users/testapikey
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*"
12
+ User-Agent:
13
+ - rest-client/2.1.0 (linux-gnu x86_64) ruby/2.5.1p57
14
+ X-Apikey:
15
+ - testapikey
16
+ Content-Length:
17
+ - '0'
18
+ Content-Type:
19
+ - application/x-www-form-urlencoded
20
+ Accept-Encoding:
21
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
+ Host:
23
+ - www.virustotal.com
24
+ response:
25
+ status:
26
+ code: 200
27
+ message: OK
28
+ headers:
29
+ Cache-Control:
30
+ - no-cache
31
+ Content-Type:
32
+ - application/json; charset=utf-8
33
+ X-Cloud-Trace-Context:
34
+ - 4ad711d6d44ea44146d4c06cb76589b1
35
+ Date:
36
+ - Mon, 05 Oct 2020 10:19:46 GMT
37
+ Server:
38
+ - Google Frontend
39
+ Content-Length:
40
+ - '5145'
41
+ body:
42
+ encoding: UTF-8
43
+ string: |-
44
+ {
45
+ "data": {
46
+ "attributes": {
47
+ "apikey": "testapikey",
48
+ "email": "granville@okeefehomenick.co",
49
+ "first_name": "Valdo",
50
+ "has_2fa": false,
51
+ "last_login": 1601883978,
52
+ "last_name": "Donati",
53
+ "preferences": {
54
+ "ui": {
55
+ "last_read_notification_date": 1599481553
56
+ }
57
+ },
58
+ "privileges": {
59
+ "cases": {
60
+ "granted": false
61
+ },
62
+ "click_to_accept": {
63
+ "granted": false
64
+ },
65
+ "creditcards": {
66
+ "granted": false
67
+ },
68
+ "dogfooder": {
69
+ "granted": false
70
+ },
71
+ "downloads-tier-1": {
72
+ "granted": false
73
+ },
74
+ "downloads-tier-2": {
75
+ "granted": false
76
+ },
77
+ "file-behaviour-feed": {
78
+ "granted": false
79
+ },
80
+ "file-feed": {
81
+ "granted": false
82
+ },
83
+ "file-feed-without-av-results": {
84
+ "granted": false
85
+ },
86
+ "intelligence": {
87
+ "granted": false
88
+ },
89
+ "intelligence-search-tier-1": {
90
+ "granted": false
91
+ },
92
+ "intelligence-search-tier-2": {
93
+ "granted": false
94
+ },
95
+ "intelligence-search-tier-3": {
96
+ "granted": false
97
+ },
98
+ "monitor": {
99
+ "granted": false
100
+ },
101
+ "monitor-partner": {
102
+ "granted": false
103
+ },
104
+ "private": {
105
+ "granted": false
106
+ },
107
+ "retrohunt-tier-1": {
108
+ "granted": false
109
+ },
110
+ "retrohunt-tier-2": {
111
+ "granted": false
112
+ },
113
+ "retrohunt-tier-3": {
114
+ "granted": false
115
+ },
116
+ "sales-staff": {
117
+ "granted": false
118
+ },
119
+ "staff": {
120
+ "granted": false
121
+ },
122
+ "url-feed": {
123
+ "granted": false
124
+ },
125
+ "vtalerts": {
126
+ "granted": false
127
+ },
128
+ "vtdiff-api": {
129
+ "granted": false
130
+ },
131
+ "vtdiff-ui": {
132
+ "granted": false
133
+ },
134
+ "vtgrep": {
135
+ "granted": false
136
+ },
137
+ "widget": {
138
+ "granted": false
139
+ }
140
+ },
141
+ "profile_phrase": "",
142
+ "quotas": {
143
+ "api_requests_daily": {
144
+ "allowed": 5760,
145
+ "used": 102
146
+ },
147
+ "api_requests_hourly": {
148
+ "allowed": 240,
149
+ "used": 0
150
+ },
151
+ "api_requests_monthly": {
152
+ "allowed": 1000000000,
153
+ "used": 105
154
+ },
155
+ "cases_creation_monthly": {
156
+ "allowed": 20,
157
+ "used": 0
158
+ },
159
+ "intelligence_downloads_monthly": {
160
+ "allowed": 0,
161
+ "used": 0
162
+ },
163
+ "intelligence_graphs_private": {
164
+ "allowed": 0,
165
+ "used": 0
166
+ },
167
+ "intelligence_hunting_rules": {
168
+ "allowed": 0,
169
+ "used": 0
170
+ },
171
+ "intelligence_retrohunt_jobs_monthly": {
172
+ "allowed": 0,
173
+ "used": 0
174
+ },
175
+ "intelligence_searches_monthly": {
176
+ "allowed": 0,
177
+ "used": 0
178
+ },
179
+ "intelligence_vtdiff_creation_monthly": {
180
+ "allowed": 0,
181
+ "used": 0
182
+ },
183
+ "monitor_storage_bytes": {
184
+ "allowed": 0,
185
+ "used": 0
186
+ },
187
+ "monitor_storage_files": {
188
+ "allowed": 0,
189
+ "used": 0
190
+ },
191
+ "monitor_uploaded_bytes": {
192
+ "allowed": 0,
193
+ "used": 0
194
+ },
195
+ "monitor_uploaded_files": {
196
+ "allowed": 0,
197
+ "used": 0
198
+ }
199
+ },
200
+ "reputation": 1,
201
+ "status": "active",
202
+ "user_since": 1512986169
203
+ },
204
+ "id": "granville",
205
+ "links": {
206
+ "self": "https://www.virustotal.com/api/v3/users/granville"
207
+ },
208
+ "type": "user"
209
+ }
210
+ }
211
+ http_version:
212
+ recorded_at: Mon, 05 Oct 2020 10:19:46 GMT
213
+ recorded_with: VCR 5.0.0
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require './test/test_helper'
4
+
5
+ class VirustotalAPIGroupReportTest < Minitest::Test
6
+ def setup
7
+ @group_id = 'GROUP_us'
8
+ @api_key = 'testapikey'
9
+ end
10
+
11
+ def test_class_exists
12
+ assert VirustotalAPI::Group
13
+ end
14
+
15
+ def test_report_response
16
+ VCR.use_cassette('group_find') do
17
+ vtgroup_report = VirustotalAPI::Group.find(@group_id, @api_key)
18
+
19
+ # Make sure that the JSON was parsed
20
+ assert vtgroup_report.is_a?(VirustotalAPI::Group)
21
+ assert vtgroup_report.report.is_a?(Hash)
22
+ end
23
+ end
24
+
25
+ def test_find
26
+ VCR.use_cassette('group_find') do
27
+ vtgroup_report = VirustotalAPI::Group.find(@group_id, @api_key)
28
+
29
+ assert vtgroup_report.report_url.is_a?(String)
30
+ end
31
+ end
32
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require './test/test_helper'
3
4
 
@@ -8,15 +9,15 @@ class VirustotalAPIIPReportTest < Minitest::Test
8
9
  end
9
10
 
10
11
  def test_class_exists
11
- assert VirustotalAPI::IPReport
12
+ assert VirustotalAPI::IP
12
13
  end
13
14
 
14
15
  def test_report_response
15
- VCR.use_cassette('ip_report') do
16
- vtip_report = VirustotalAPI::IPReport.find(@ip, @api_key)
16
+ VCR.use_cassette('ip') do
17
+ vtip_report = VirustotalAPI::IP.find(@ip, @api_key)
17
18
 
18
19
  # Make sure that the JSON was parsed
19
- assert vtip_report.is_a?(VirustotalAPI::IPReport)
20
+ assert vtip_report.is_a?(VirustotalAPI::IP)
20
21
  assert vtip_report.report.is_a?(Hash)
21
22
  end
22
23
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require './lib/virustotal_api'
3
4
  require 'minitest/autorun'
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require './test/test_helper'
3
4
 
4
5
  class VirustotalAPIVTReportTest < Minitest::Test
5
6
  def test_api_base_uri
6
7
  assert VirustotalAPI::URI.is_a?(String)
7
- assert VirustotalAPI::URI, 'https://www.virustotal.com/vtapi/v2'
8
+ assert_equal 'https://www.virustotal.com/api/v3', VirustotalAPI::URI
8
9
  end
9
10
  end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require './test/test_helper'
4
+
5
+ class VirustotalAPIURLReportTest < Minitest::Test
6
+ def setup
7
+ @unscanned_url = 'http://www.unscanned.com'
8
+ @url = 'http://www.google.com'
9
+ @api_key = 'testapikey'
10
+ end
11
+
12
+ def test_class_exists
13
+ assert VirustotalAPI::URL
14
+ end
15
+
16
+ def test_report_response
17
+ VCR.use_cassette('url_find') do
18
+ vturl_report = VirustotalAPI::URL.find(@url, @api_key)
19
+
20
+ # Make sure that the JSON was parsed
21
+ assert vturl_report.is_a?(VirustotalAPI::URL)
22
+ assert vturl_report.report.is_a?(Hash)
23
+ end
24
+ end
25
+
26
+ def test_find
27
+ VCR.use_cassette('url_find') do
28
+ vturl_report = VirustotalAPI::URL.find(@url, @api_key)
29
+
30
+ assert vturl_report.report_url.is_a?(String)
31
+ end
32
+ end
33
+
34
+ def test_scan_url
35
+ VCR.use_cassette('url_find') do
36
+ vturl_report = VirustotalAPI::URL.find(@url, @api_key)
37
+
38
+ assert vturl_report.id.is_a?(String)
39
+ end
40
+ end
41
+
42
+ def test_scan_unscanned_url
43
+ VCR.use_cassette('unscanned_url_find') do
44
+ vturl_report = VirustotalAPI::URL.find(@unscanned_url, @api_key)
45
+
46
+ assert_empty vturl_report.report
47
+ end
48
+ end
49
+
50
+ def test_analyse
51
+ VCR.use_cassette('url_analyse') do
52
+ vturl_scan = VirustotalAPI::URL.analyse(@url, @api_key)
53
+
54
+ assert vturl_scan.report.is_a?(Hash)
55
+ end
56
+ end
57
+
58
+ def test_analyse_id
59
+ VCR.use_cassette('url_analyse') do
60
+ vturl_scan = VirustotalAPI::URL.analyse(@url, @api_key)
61
+
62
+ assert vturl_scan.id.is_a?(String)
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require './test/test_helper'
4
+
5
+ class VirustotalAPIUserReportTest < Minitest::Test
6
+ def setup
7
+ @api_key = 'testapikey'
8
+ end
9
+
10
+ def test_class_exists
11
+ assert VirustotalAPI::User
12
+ end
13
+
14
+ def test_report_response
15
+ VCR.use_cassette('user_find') do
16
+ vtuser_report = VirustotalAPI::User.find(@api_key, @api_key)
17
+
18
+ # Make sure that the JSON was parsed
19
+ assert vtuser_report.is_a?(VirustotalAPI::User)
20
+ assert vtuser_report.report.is_a?(Hash)
21
+ end
22
+ end
23
+
24
+ def test_find
25
+ VCR.use_cassette('user_find') do
26
+ vtuser_report = VirustotalAPI::User.find(@api_key, @api_key)
27
+
28
+ assert vtuser_report.report_url.is_a?(String)
29
+ end
30
+ end
31
+ end
@@ -1,9 +1,9 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require './test/test_helper'
3
4
 
4
- class VirustotalAPIVTReportTest < Minitest::Test
5
+ class VirustotalAPIVersionTest < Minitest::Test
5
6
  def test_version
6
7
  assert VirustotalAPI::VERSION.is_a?(String)
7
- assert VirustotalAPI::VERSION, '0.2.0'
8
8
  end
9
9
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
@@ -9,24 +10,26 @@ Gem::Specification.new do |spec|
9
10
  spec.authors = ['pwelch']
10
11
  spec.email = ['paul@pwelch.net']
11
12
  spec.summary = 'Gem for VirusTotal.com API'
12
- spec.description = 'Gem for VirusTotal.com API'
13
+ spec.description = 'Gem for VirusTotal.com API, supporting API V3'
13
14
  spec.homepage = 'https://github.com/pwelch/virustotal_api'
14
15
  spec.license = 'MIT'
15
16
 
17
+ spec.required_ruby_version = '>= 2.5'
18
+
16
19
  spec.files = `git ls-files -z`.split("\x0")
17
20
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
21
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
22
  spec.require_paths = ['lib']
20
23
 
21
- spec.add_dependency 'json'
22
- spec.add_dependency 'rest-client'
24
+ spec.add_dependency 'json', '~> 2.3', '>= 2.3.1'
25
+ spec.add_dependency 'rest-client', '~> 2.1', '>= 2.1.0'
23
26
 
24
- spec.add_development_dependency 'bundler', '~> 1.16'
25
- spec.add_development_dependency 'minitest'
26
- spec.add_development_dependency 'pry'
27
+ spec.add_development_dependency 'bundler', '~> 2.0'
28
+ spec.add_development_dependency 'minitest', '~> 5.14', '>= 5.14.1'
29
+ spec.add_development_dependency 'pry', '~> 0.13.1'
27
30
  spec.add_development_dependency 'rake', '~> 12.3'
28
- spec.add_development_dependency 'rubocop'
29
- spec.add_development_dependency 'vcr'
30
- spec.add_development_dependency 'webmock'
31
+ spec.add_development_dependency 'rubocop', '~> 0.91'
32
+ spec.add_development_dependency 'vcr', '~> 6.0', '>= 6.0.0'
33
+ spec.add_development_dependency 'webmock', '~> 3.9'
31
34
  spec.add_development_dependency 'yard', '~> 0.9'
32
35
  end
metadata CHANGED
@@ -1,85 +1,103 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: virustotal_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - pwelch
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-31 00:00:00.000000000 Z
11
+ date: 2020-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.3'
17
20
  - - ">="
18
21
  - !ruby/object:Gem::Version
19
- version: '0'
22
+ version: 2.3.1
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.3'
24
30
  - - ">="
25
31
  - !ruby/object:Gem::Version
26
- version: '0'
32
+ version: 2.3.1
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: rest-client
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - ">="
32
38
  - !ruby/object:Gem::Version
33
- version: '0'
39
+ version: 2.1.0
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '2.1'
34
43
  type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
47
  - - ">="
39
48
  - !ruby/object:Gem::Version
40
- version: '0'
49
+ version: 2.1.0
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '2.1'
41
53
  - !ruby/object:Gem::Dependency
42
54
  name: bundler
43
55
  requirement: !ruby/object:Gem::Requirement
44
56
  requirements:
45
57
  - - "~>"
46
58
  - !ruby/object:Gem::Version
47
- version: '1.16'
59
+ version: '2.0'
48
60
  type: :development
49
61
  prerelease: false
50
62
  version_requirements: !ruby/object:Gem::Requirement
51
63
  requirements:
52
64
  - - "~>"
53
65
  - !ruby/object:Gem::Version
54
- version: '1.16'
66
+ version: '2.0'
55
67
  - !ruby/object:Gem::Dependency
56
68
  name: minitest
57
69
  requirement: !ruby/object:Gem::Requirement
58
70
  requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '5.14'
59
74
  - - ">="
60
75
  - !ruby/object:Gem::Version
61
- version: '0'
76
+ version: 5.14.1
62
77
  type: :development
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '5.14'
66
84
  - - ">="
67
85
  - !ruby/object:Gem::Version
68
- version: '0'
86
+ version: 5.14.1
69
87
  - !ruby/object:Gem::Dependency
70
88
  name: pry
71
89
  requirement: !ruby/object:Gem::Requirement
72
90
  requirements:
73
- - - ">="
91
+ - - "~>"
74
92
  - !ruby/object:Gem::Version
75
- version: '0'
93
+ version: 0.13.1
76
94
  type: :development
77
95
  prerelease: false
78
96
  version_requirements: !ruby/object:Gem::Requirement
79
97
  requirements:
80
- - - ">="
98
+ - - "~>"
81
99
  - !ruby/object:Gem::Version
82
- version: '0'
100
+ version: 0.13.1
83
101
  - !ruby/object:Gem::Dependency
84
102
  name: rake
85
103
  requirement: !ruby/object:Gem::Requirement
@@ -98,44 +116,50 @@ dependencies:
98
116
  name: rubocop
99
117
  requirement: !ruby/object:Gem::Requirement
100
118
  requirements:
101
- - - ">="
119
+ - - "~>"
102
120
  - !ruby/object:Gem::Version
103
- version: '0'
121
+ version: '0.91'
104
122
  type: :development
105
123
  prerelease: false
106
124
  version_requirements: !ruby/object:Gem::Requirement
107
125
  requirements:
108
- - - ">="
126
+ - - "~>"
109
127
  - !ruby/object:Gem::Version
110
- version: '0'
128
+ version: '0.91'
111
129
  - !ruby/object:Gem::Dependency
112
130
  name: vcr
113
131
  requirement: !ruby/object:Gem::Requirement
114
132
  requirements:
115
133
  - - ">="
116
134
  - !ruby/object:Gem::Version
117
- version: '0'
135
+ version: 6.0.0
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '6.0'
118
139
  type: :development
119
140
  prerelease: false
120
141
  version_requirements: !ruby/object:Gem::Requirement
121
142
  requirements:
122
143
  - - ">="
123
144
  - !ruby/object:Gem::Version
124
- version: '0'
145
+ version: 6.0.0
146
+ - - "~>"
147
+ - !ruby/object:Gem::Version
148
+ version: '6.0'
125
149
  - !ruby/object:Gem::Dependency
126
150
  name: webmock
127
151
  requirement: !ruby/object:Gem::Requirement
128
152
  requirements:
129
- - - ">="
153
+ - - "~>"
130
154
  - !ruby/object:Gem::Version
131
- version: '0'
155
+ version: '3.9'
132
156
  type: :development
133
157
  prerelease: false
134
158
  version_requirements: !ruby/object:Gem::Requirement
135
159
  requirements:
136
- - - ">="
160
+ - - "~>"
137
161
  - !ruby/object:Gem::Version
138
- version: '0'
162
+ version: '3.9'
139
163
  - !ruby/object:Gem::Dependency
140
164
  name: yard
141
165
  requirement: !ruby/object:Gem::Requirement
@@ -150,7 +174,7 @@ dependencies:
150
174
  - - "~>"
151
175
  - !ruby/object:Gem::Version
152
176
  version: '0.9'
153
- description: Gem for VirusTotal.com API
177
+ description: Gem for VirusTotal.com API, supporting API V3
154
178
  email:
155
179
  - paul@pwelch.net
156
180
  executables: []
@@ -160,50 +184,59 @@ files:
160
184
  - ".github/CODE_OF_CONDUCT.md"
161
185
  - ".github/CONTRIBUTING.md"
162
186
  - ".github/ISSUE_TEMPLATE.md"
187
+ - ".github/workflows/ruby.yml"
163
188
  - ".gitignore"
164
189
  - ".rubocop.yml"
165
- - ".travis.yml"
166
190
  - CHANGELOG.md
167
191
  - Gemfile
168
192
  - LICENSE.txt
169
193
  - README.md
170
194
  - Rakefile
171
195
  - lib/virustotal_api.rb
196
+ - lib/virustotal_api/analysis.rb
172
197
  - lib/virustotal_api/base.rb
173
- - lib/virustotal_api/domain_report.rb
198
+ - lib/virustotal_api/domain.rb
174
199
  - lib/virustotal_api/exceptions.rb
175
- - lib/virustotal_api/file_report.rb
176
- - lib/virustotal_api/file_scan.rb
177
- - lib/virustotal_api/ip_report.rb
200
+ - lib/virustotal_api/file.rb
201
+ - lib/virustotal_api/group.rb
202
+ - lib/virustotal_api/ip.rb
178
203
  - lib/virustotal_api/uri.rb
179
- - lib/virustotal_api/url_report.rb
204
+ - lib/virustotal_api/url.rb
205
+ - lib/virustotal_api/user.rb
180
206
  - lib/virustotal_api/version.rb
207
+ - test/analysis_test.rb
181
208
  - test/base_test.rb
182
- - test/domain_report_test.rb
209
+ - test/domain_test.rb
183
210
  - test/exceptions_test.rb
184
- - test/file_report_test.rb
185
- - test/file_scan_test.rb
186
- - test/fixtures/domain_report.yml
187
- - test/fixtures/ip_report.yml
211
+ - test/file_test.rb
212
+ - test/fixtures/analysis.yml
213
+ - test/fixtures/domain.yml
214
+ - test/fixtures/file_analyse.yml
215
+ - test/fixtures/file_find.yml
216
+ - test/fixtures/file_not_found.yml
217
+ - test/fixtures/file_rate_limit.yml
218
+ - test/fixtures/file_unauthorized.yml
219
+ - test/fixtures/file_upload.yml
220
+ - test/fixtures/group_find.yml
221
+ - test/fixtures/ip.yml
188
222
  - test/fixtures/null_file
189
- - test/fixtures/queue_unscanned_url_report.yml
190
- - test/fixtures/report.yml
191
- - test/fixtures/report_not_found.yml
192
- - test/fixtures/request_forbidden.yml
193
- - test/fixtures/scan.yml
194
- - test/fixtures/unscanned_url_report.yml
195
- - test/fixtures/url_report.yml
196
- - test/ip_report_test.rb
223
+ - test/fixtures/unscanned_url_find.yml
224
+ - test/fixtures/url_analyse.yml
225
+ - test/fixtures/url_find.yml
226
+ - test/fixtures/user_find.yml
227
+ - test/group_test.rb
228
+ - test/ip_test.rb
197
229
  - test/test_helper.rb
198
230
  - test/uri_test.rb
199
- - test/url_report_test.rb
231
+ - test/url_test.rb
232
+ - test/user_test.rb
200
233
  - test/version_test.rb
201
234
  - virustotal_api.gemspec
202
235
  homepage: https://github.com/pwelch/virustotal_api
203
236
  licenses:
204
237
  - MIT
205
238
  metadata: {}
206
- post_install_message:
239
+ post_install_message:
207
240
  rdoc_options: []
208
241
  require_paths:
209
242
  - lib
@@ -211,36 +244,42 @@ required_ruby_version: !ruby/object:Gem::Requirement
211
244
  requirements:
212
245
  - - ">="
213
246
  - !ruby/object:Gem::Version
214
- version: '0'
247
+ version: '2.5'
215
248
  required_rubygems_version: !ruby/object:Gem::Requirement
216
249
  requirements:
217
250
  - - ">="
218
251
  - !ruby/object:Gem::Version
219
252
  version: '0'
220
253
  requirements: []
221
- rubyforge_project:
222
- rubygems_version: 2.7.6
223
- signing_key:
254
+ rubygems_version: 3.0.3
255
+ signing_key:
224
256
  specification_version: 4
225
257
  summary: Gem for VirusTotal.com API
226
258
  test_files:
259
+ - test/analysis_test.rb
227
260
  - test/base_test.rb
228
- - test/domain_report_test.rb
261
+ - test/domain_test.rb
229
262
  - test/exceptions_test.rb
230
- - test/file_report_test.rb
231
- - test/file_scan_test.rb
232
- - test/fixtures/domain_report.yml
233
- - test/fixtures/ip_report.yml
263
+ - test/file_test.rb
264
+ - test/fixtures/analysis.yml
265
+ - test/fixtures/domain.yml
266
+ - test/fixtures/file_analyse.yml
267
+ - test/fixtures/file_find.yml
268
+ - test/fixtures/file_not_found.yml
269
+ - test/fixtures/file_rate_limit.yml
270
+ - test/fixtures/file_unauthorized.yml
271
+ - test/fixtures/file_upload.yml
272
+ - test/fixtures/group_find.yml
273
+ - test/fixtures/ip.yml
234
274
  - test/fixtures/null_file
235
- - test/fixtures/queue_unscanned_url_report.yml
236
- - test/fixtures/report.yml
237
- - test/fixtures/report_not_found.yml
238
- - test/fixtures/request_forbidden.yml
239
- - test/fixtures/scan.yml
240
- - test/fixtures/unscanned_url_report.yml
241
- - test/fixtures/url_report.yml
242
- - test/ip_report_test.rb
275
+ - test/fixtures/unscanned_url_find.yml
276
+ - test/fixtures/url_analyse.yml
277
+ - test/fixtures/url_find.yml
278
+ - test/fixtures/user_find.yml
279
+ - test/group_test.rb
280
+ - test/ip_test.rb
243
281
  - test/test_helper.rb
244
282
  - test/uri_test.rb
245
- - test/url_report_test.rb
283
+ - test/url_test.rb
284
+ - test/user_test.rb
246
285
  - test/version_test.rb