virustotal_api 0.3.0 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
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