virustotal_api 0.2.0 → 0.5.1

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 (60) hide show
  1. checksums.yaml +5 -5
  2. data/.github/CODE_OF_CONDUCT.md +46 -0
  3. data/.github/CONTRIBUTING.md +7 -0
  4. data/.github/ISSUE_TEMPLATE.md +15 -0
  5. data/.github/workflows/ruby.yml +26 -0
  6. data/.gitignore +1 -0
  7. data/.rubocop.yml +17 -5
  8. data/CHANGELOG.md +33 -4
  9. data/Gemfile +1 -1
  10. data/README.md +83 -31
  11. data/Rakefile +3 -2
  12. data/lib/virustotal_api.rb +7 -6
  13. data/lib/virustotal_api/analysis.rb +24 -0
  14. data/lib/virustotal_api/base.rb +37 -10
  15. data/lib/virustotal_api/domain.rb +24 -0
  16. data/lib/virustotal_api/exceptions.rb +5 -0
  17. data/lib/virustotal_api/file.rb +56 -0
  18. data/lib/virustotal_api/ip.rb +24 -0
  19. data/lib/virustotal_api/uri.rb +4 -2
  20. data/lib/virustotal_api/url.rb +46 -0
  21. data/lib/virustotal_api/version.rb +4 -2
  22. data/test/analysis_test.rb +23 -0
  23. data/test/base_test.rb +10 -29
  24. data/test/domain_test.rb +32 -0
  25. data/test/exceptions_test.rb +16 -1
  26. data/test/file_test.rb +68 -0
  27. data/test/fixtures/analysis.yml +544 -0
  28. data/test/fixtures/domain.yml +830 -0
  29. data/test/fixtures/file_analyse.yml +52 -0
  30. data/test/fixtures/file_find.yml +1236 -0
  31. data/test/fixtures/file_unauthorized.yml +51 -0
  32. data/test/fixtures/file_upload.yml +54 -0
  33. data/test/fixtures/ip.yml +716 -0
  34. data/test/fixtures/unscanned_url_find.yml +44 -0
  35. data/test/fixtures/url_analyse.yml +52 -0
  36. data/test/fixtures/url_find.yml +599 -0
  37. data/test/{ip_report_test.rb → ip_test.rb} +6 -5
  38. data/test/test_helper.rb +2 -1
  39. data/test/uri_test.rb +3 -2
  40. data/test/url_test.rb +65 -0
  41. data/test/version_test.rb +3 -3
  42. data/virustotal_api.gemspec +16 -13
  43. metadata +108 -77
  44. data/.travis.yml +0 -15
  45. data/lib/virustotal_api/domain_report.rb +0 -35
  46. data/lib/virustotal_api/file_report.rb +0 -36
  47. data/lib/virustotal_api/file_scan.rb +0 -36
  48. data/lib/virustotal_api/ip_report.rb +0 -35
  49. data/lib/virustotal_api/url_report.rb +0 -37
  50. data/test/domain_report_test.rb +0 -31
  51. data/test/file_report_test.rb +0 -34
  52. data/test/file_scan_test.rb +0 -29
  53. data/test/fixtures/domain_report.yml +0 -311
  54. data/test/fixtures/ip_report.yml +0 -1323
  55. data/test/fixtures/report.yml +0 -110
  56. data/test/fixtures/report_not_found.yml +0 -42
  57. data/test/fixtures/request_forbidden.yml +0 -38
  58. data/test/fixtures/scan.yml +0 -49
  59. data/test/fixtures/url_report.yml +0 -95
  60. data/test/url_report_test.rb +0 -39
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  require './test/test_helper'
3
4
 
4
5
  class VirustotalAPIIPReportTest < Minitest::Test
@@ -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,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  require './lib/virustotal_api'
3
4
  require 'minitest/autorun'
4
5
  require 'webmock/minitest'
@@ -1,9 +1,10 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
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_nil 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
@@ -1,9 +1,9 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
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,5 +1,6 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'virustotal_api/version'
5
6
 
@@ -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 'rest-client'
22
- spec.add_dependency 'json'
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.7'
25
- spec.add_development_dependency 'rake', '~> 10.0'
26
- spec.add_development_dependency 'minitest'
27
- spec.add_development_dependency 'vcr'
28
- spec.add_development_dependency 'webmock'
29
- spec.add_development_dependency 'pry'
30
- spec.add_development_dependency 'yard', '~> 0.8'
31
- spec.add_development_dependency 'rubocop'
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'
30
+ spec.add_development_dependency 'rake', '~> 12.3'
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'
34
+ spec.add_development_dependency 'yard', '~> 0.9'
32
35
  end
metadata CHANGED
@@ -1,204 +1,234 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: virustotal_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - pwelch
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-19 00:00:00.000000000 Z
11
+ date: 2020-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rest-client
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
- name: json
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.7'
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.7'
66
+ version: '2.0'
55
67
  - !ruby/object:Gem::Dependency
56
- name: rake
68
+ name: minitest
57
69
  requirement: !ruby/object:Gem::Requirement
58
70
  requirements:
59
71
  - - "~>"
60
72
  - !ruby/object:Gem::Version
61
- version: '10.0'
73
+ version: '5.14'
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 5.14.1
62
77
  type: :development
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
66
81
  - - "~>"
67
82
  - !ruby/object:Gem::Version
68
- version: '10.0'
83
+ version: '5.14'
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: 5.14.1
69
87
  - !ruby/object:Gem::Dependency
70
- name: minitest
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
- name: vcr
102
+ name: rake
85
103
  requirement: !ruby/object:Gem::Requirement
86
104
  requirements:
87
- - - ">="
105
+ - - "~>"
88
106
  - !ruby/object:Gem::Version
89
- version: '0'
107
+ version: '12.3'
90
108
  type: :development
91
109
  prerelease: false
92
110
  version_requirements: !ruby/object:Gem::Requirement
93
111
  requirements:
94
- - - ">="
112
+ - - "~>"
95
113
  - !ruby/object:Gem::Version
96
- version: '0'
114
+ version: '12.3'
97
115
  - !ruby/object:Gem::Dependency
98
- name: webmock
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
- name: pry
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
- name: yard
150
+ name: webmock
127
151
  requirement: !ruby/object:Gem::Requirement
128
152
  requirements:
129
153
  - - "~>"
130
154
  - !ruby/object:Gem::Version
131
- version: '0.8'
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.8'
162
+ version: '3.9'
139
163
  - !ruby/object:Gem::Dependency
140
- name: rubocop
164
+ name: yard
141
165
  requirement: !ruby/object:Gem::Requirement
142
166
  requirements:
143
- - - ">="
167
+ - - "~>"
144
168
  - !ruby/object:Gem::Version
145
- version: '0'
169
+ version: '0.9'
146
170
  type: :development
147
171
  prerelease: false
148
172
  version_requirements: !ruby/object:Gem::Requirement
149
173
  requirements:
150
- - - ">="
174
+ - - "~>"
151
175
  - !ruby/object:Gem::Version
152
- version: '0'
153
- description: Gem for VirusTotal.com API
176
+ version: '0.9'
177
+ description: Gem for VirusTotal.com API, supporting API V3
154
178
  email:
155
179
  - paul@pwelch.net
156
180
  executables: []
157
181
  extensions: []
158
182
  extra_rdoc_files: []
159
183
  files:
184
+ - ".github/CODE_OF_CONDUCT.md"
185
+ - ".github/CONTRIBUTING.md"
186
+ - ".github/ISSUE_TEMPLATE.md"
187
+ - ".github/workflows/ruby.yml"
160
188
  - ".gitignore"
161
189
  - ".rubocop.yml"
162
- - ".travis.yml"
163
190
  - CHANGELOG.md
164
191
  - Gemfile
165
192
  - LICENSE.txt
166
193
  - README.md
167
194
  - Rakefile
168
195
  - lib/virustotal_api.rb
196
+ - lib/virustotal_api/analysis.rb
169
197
  - lib/virustotal_api/base.rb
170
- - lib/virustotal_api/domain_report.rb
198
+ - lib/virustotal_api/domain.rb
171
199
  - lib/virustotal_api/exceptions.rb
172
- - lib/virustotal_api/file_report.rb
173
- - lib/virustotal_api/file_scan.rb
174
- - lib/virustotal_api/ip_report.rb
200
+ - lib/virustotal_api/file.rb
201
+ - lib/virustotal_api/ip.rb
175
202
  - lib/virustotal_api/uri.rb
176
- - lib/virustotal_api/url_report.rb
203
+ - lib/virustotal_api/url.rb
177
204
  - lib/virustotal_api/version.rb
205
+ - test/analysis_test.rb
178
206
  - test/base_test.rb
179
- - test/domain_report_test.rb
207
+ - test/domain_test.rb
180
208
  - test/exceptions_test.rb
181
- - test/file_report_test.rb
182
- - test/file_scan_test.rb
183
- - test/fixtures/domain_report.yml
184
- - test/fixtures/ip_report.yml
209
+ - test/file_test.rb
210
+ - test/fixtures/analysis.yml
211
+ - test/fixtures/domain.yml
212
+ - test/fixtures/file_analyse.yml
213
+ - test/fixtures/file_find.yml
214
+ - test/fixtures/file_unauthorized.yml
215
+ - test/fixtures/file_upload.yml
216
+ - test/fixtures/ip.yml
185
217
  - test/fixtures/null_file
186
- - test/fixtures/report.yml
187
- - test/fixtures/report_not_found.yml
188
- - test/fixtures/request_forbidden.yml
189
- - test/fixtures/scan.yml
190
- - test/fixtures/url_report.yml
191
- - test/ip_report_test.rb
218
+ - test/fixtures/unscanned_url_find.yml
219
+ - test/fixtures/url_analyse.yml
220
+ - test/fixtures/url_find.yml
221
+ - test/ip_test.rb
192
222
  - test/test_helper.rb
193
223
  - test/uri_test.rb
194
- - test/url_report_test.rb
224
+ - test/url_test.rb
195
225
  - test/version_test.rb
196
226
  - virustotal_api.gemspec
197
227
  homepage: https://github.com/pwelch/virustotal_api
198
228
  licenses:
199
229
  - MIT
200
230
  metadata: {}
201
- post_install_message:
231
+ post_install_message:
202
232
  rdoc_options: []
203
233
  require_paths:
204
234
  - lib
@@ -206,35 +236,36 @@ required_ruby_version: !ruby/object:Gem::Requirement
206
236
  requirements:
207
237
  - - ">="
208
238
  - !ruby/object:Gem::Version
209
- version: '0'
239
+ version: '2.5'
210
240
  required_rubygems_version: !ruby/object:Gem::Requirement
211
241
  requirements:
212
242
  - - ">="
213
243
  - !ruby/object:Gem::Version
214
244
  version: '0'
215
245
  requirements: []
216
- rubyforge_project:
217
- rubygems_version: 2.5.1
218
- signing_key:
246
+ rubygems_version: 3.0.3
247
+ signing_key:
219
248
  specification_version: 4
220
249
  summary: Gem for VirusTotal.com API
221
250
  test_files:
251
+ - test/analysis_test.rb
222
252
  - test/base_test.rb
223
- - test/domain_report_test.rb
253
+ - test/domain_test.rb
224
254
  - test/exceptions_test.rb
225
- - test/file_report_test.rb
226
- - test/file_scan_test.rb
227
- - test/fixtures/domain_report.yml
228
- - test/fixtures/ip_report.yml
255
+ - test/file_test.rb
256
+ - test/fixtures/analysis.yml
257
+ - test/fixtures/domain.yml
258
+ - test/fixtures/file_analyse.yml
259
+ - test/fixtures/file_find.yml
260
+ - test/fixtures/file_unauthorized.yml
261
+ - test/fixtures/file_upload.yml
262
+ - test/fixtures/ip.yml
229
263
  - test/fixtures/null_file
230
- - test/fixtures/report.yml
231
- - test/fixtures/report_not_found.yml
232
- - test/fixtures/request_forbidden.yml
233
- - test/fixtures/scan.yml
234
- - test/fixtures/url_report.yml
235
- - test/ip_report_test.rb
264
+ - test/fixtures/unscanned_url_find.yml
265
+ - test/fixtures/url_analyse.yml
266
+ - test/fixtures/url_find.yml
267
+ - test/ip_test.rb
236
268
  - test/test_helper.rb
237
269
  - test/uri_test.rb
238
- - test/url_report_test.rb
270
+ - test/url_test.rb
239
271
  - test/version_test.rb
240
- has_rdoc: