virustotal_api 0.3.0 → 0.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8bed66a7fba9485458455710be627e1f833347bceb426162e95580a0523f709e
4
- data.tar.gz: 958f96c673f266360f5da1f5c28e9c948407956176be6af1196ad53aee7ab551
3
+ metadata.gz: d5cb4002cc7336dab43ad9cad54f42f646428c80b80bdd9c21c54d16dfa971a4
4
+ data.tar.gz: 2e4091e0944e2ae0e4038574964035690e43eaf5aab0f69e26cb51ce1f6d36aa
5
5
  SHA512:
6
- metadata.gz: b633ba4b732ea5cc41470928879ef92c75000a66df300d7640a4e28d210a85192cd69fb5a4c96e4fd37f1434eda2c0678a3ac359c235fb46a588f67cebe20d51
7
- data.tar.gz: 25bf3927a97a5fdc9435caa0073223b46fb4af8badc0f18edb735c5ce34174b585a98db7b04a05b9aea35213a2f0d1e9f6c47be1c9132c78668c04334776dac6
6
+ metadata.gz: 3635ade214ad1a803a85a7169c84eedc085a5793bc3973aebe73e30f9f7b54cb4f6d46b79d66403441f02729f9f74ea52b70e147cdcee4a1181539c8a393a47d
7
+ data.tar.gz: 27ae5dffc0d0fbbaa379b9dd96daab5a4fe513c406a5234d4d481bcd25016084c2a589e3fa01ad0792d2ee2eda71d9e5884144b9198bb305e5c80f5e6a22c3cf
@@ -0,0 +1,19 @@
1
+ version: 2
2
+ jobs:
3
+ build:
4
+ docker:
5
+ - image: circleci/ruby:2.5.3-stretch
6
+ steps:
7
+ - checkout
8
+ - run:
9
+ name: Setup
10
+ command: |
11
+ gem update bundler
12
+ bundle install
13
+ - run:
14
+ name: Rubocop
15
+ command: bundle exec rake rubocop
16
+ - run:
17
+ name: Run Tests
18
+ command: bundle exec rake test
19
+
data/.rubocop.yml CHANGED
@@ -10,9 +10,6 @@ Style/StringLiterals:
10
10
  Style/UnneededPercentQ:
11
11
  Enabled: true
12
12
 
13
- Style/HashSyntax:
14
- EnforcedStyle: hash_rockets
15
-
16
13
  # Disabled Checks
17
14
  Style/Documentation:
18
15
  Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # VirusTotal API Changelog
2
2
 
3
+ ## 0.4.0
4
+
5
+ * Add ReScan [#15](https://github.com/pwelch/virustotal_api/pull/15)
6
+ * Add URL Scan [#16](https://github.com/pwelch/virustotal_api/pull/16)
7
+ * [@jonnynux](https://github.com/jonnynux)
8
+
3
9
  ## 0.3.0
4
10
 
5
11
  * Add optional scan param for url report API [#5](https://github.com/pwelch/virustotal_api/pull/5)
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gemspec
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Ruby Gem for [VirusTotal](https://www.virustotal.com) [V2 API](https://www.virustotal.com/en/documentation/public-api/)
4
4
 
5
5
  [![Gem Version](https://badge.fury.io/rb/virustotal_api.svg)](http://badge.fury.io/rb/virustotal_api)
6
- [![Build Status](https://secure.travis-ci.org/pwelch/virustotal_api.svg)](http://travis-ci.org/pwelch/virustotal_api)
6
+ [![CircleCI](https://circleci.com/gh/pwelch/virustotal_api.svg?style=svg)](https://circleci.com/gh/pwelch/virustotal_api)
7
7
 
8
8
  ## Installation
9
9
 
@@ -65,7 +65,7 @@ vtscan.scan_id
65
65
  # => "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b-1419454668"
66
66
 
67
67
  # Response results are available via #response
68
- vtreport.response
68
+ vtscan.response
69
69
  # =>
70
70
  {
71
71
  "scan_id"=>"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b-1419454668",
@@ -79,6 +79,32 @@ vtreport.response
79
79
  }
80
80
  ```
81
81
 
82
+ ### File Rescan
83
+
84
+ ```ruby
85
+ require 'virustotal_api'
86
+
87
+ sha256 = '01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b'
88
+ api_key = 'MY_API_KEY'
89
+
90
+ vtrescan = VirustotalAPI::FileRescan.rescan(sha256, api_key)
91
+
92
+ # Rescan ID of file
93
+ vtrescan.rescan_id
94
+ # => "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b-1562684247"
95
+
96
+ # Response results are available via #response
97
+ vtrescan.response
98
+ # =>
99
+ {
100
+ "permalink": "https://www.virustotal.com/file/01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b/analysis/1562684247/",
101
+ "response_code": 1,
102
+ "sha256": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b",
103
+ "resource": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b",
104
+ "scan_id": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b-1562684247"
105
+ }
106
+ ```
107
+
82
108
  ### URL Report
83
109
 
84
110
  ```ruby
@@ -102,6 +128,34 @@ vturl_report.report["scans"]["Opera"]
102
128
  # => {"detected"=>false, "result"=>"clean site"}
103
129
  ```
104
130
 
131
+ ### URL Scan
132
+
133
+ ```ruby
134
+ require 'virustotal_api'
135
+
136
+ url = 'http://www.google.com'
137
+ api_key = 'MY_API_KEY'
138
+
139
+ vturl_scan = VirustotalAPI::URLScan.scan(url, api_key)
140
+
141
+ # Scan ID of file
142
+ vturl_scan.scan_id
143
+ # => "dd014af5ed6b38d9130e3f466f850e46d21b951199d53a18ef29ee9341614eaf-1562751553"
144
+
145
+ # Response results are available via #response
146
+ vturl_scan.response
147
+ # =>
148
+ {
149
+ "permalink": "https://www.virustotal.com/url/dd014af5ed6b38d9130e3f466f850e46d21b951199d53a18ef29ee9341614eaf/analysis/1562751553/",
150
+ "resource": "http://www.google.com/",
151
+ "url": "http://www.google.com/",
152
+ "response_code": 1,
153
+ "scan_date": "2019-07-10 09:39:13",
154
+ "scan_id": "dd014af5ed6b38d9130e3f466f850e46d21b951199d53a18ef29ee9341614eaf-1562751553",
155
+ "verbose_msg": "Scan request successfully queued, come back later for the report"
156
+ }
157
+ ```
158
+
105
159
  ### IP Report
106
160
 
107
161
  ```ruby
@@ -140,6 +194,12 @@ vtdomain_report.report
140
194
  # => Hash of report results
141
195
  ```
142
196
 
197
+ ## Contributors
198
+
199
+ - [@postmodern](https://github.com/postmodern)
200
+ - [@mkunkel](https://github.com/mkunkel)
201
+ - [@jonnynux](https://github.com/jonnynux)
202
+
143
203
  ## Contributing
144
204
 
145
205
  1. Fork it ( https://github.com/pwelch/virustotal_api/fork )
data/Rakefile CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require 'bundler/gem_tasks'
3
4
  require 'rake/testtask'
@@ -21,4 +22,4 @@ namespace :yard do
21
22
  end
22
23
  end
23
24
 
24
- task :default => :test
25
+ task default: :test
@@ -1,8 +1,11 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require 'virustotal_api/domain_report'
3
4
  require 'virustotal_api/file_report'
5
+ require 'virustotal_api/file_rescan'
4
6
  require 'virustotal_api/file_scan'
5
7
  require 'virustotal_api/ip_report'
6
8
  require 'virustotal_api/url_report'
9
+ require 'virustotal_api/url_scan'
7
10
  require 'virustotal_api/uri'
8
11
  require 'virustotal_api/version'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'virustotal_api/exceptions'
2
4
  require 'rest-client'
3
5
  require 'json'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require_relative 'base'
3
4
 
@@ -15,7 +16,7 @@ module VirustotalAPI
15
16
  def self.find(domain, api_key)
16
17
  response = RestClient.get(
17
18
  api_uri + '/domain/report',
18
- { :params => params(domain, api_key) }
19
+ { params: params(domain, api_key) }
19
20
  )
20
21
  report = parse(response)
21
22
 
@@ -27,8 +28,8 @@ module VirustotalAPI
27
28
  # @return [Hash] params for GET Request
28
29
  def self.params(domain, api_key)
29
30
  {
30
- :domain => domain,
31
- :apikey => api_key
31
+ domain: domain,
32
+ apikey: api_key
32
33
  }
33
34
  end
34
35
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module VirustotalAPI
2
4
  class RateLimitError < RuntimeError
3
5
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require_relative 'base'
3
4
 
@@ -28,8 +29,8 @@ module VirustotalAPI
28
29
  # @return [Hash] params for POST Request
29
30
  def self.params(resource, api_key)
30
31
  {
31
- :resource => resource,
32
- :apikey => api_key
32
+ resource: resource,
33
+ apikey: api_key
33
34
  }
34
35
  end
35
36
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+
5
+ module VirustotalAPI
6
+ class FileRescan < Base
7
+ attr_reader :response, :rescan_id
8
+
9
+ def initialize(response)
10
+ @response = JSON.parse(response)
11
+ @rescan_id = @response.fetch('scan_id') { nil }
12
+ end
13
+
14
+ # @param [String] resource file as a md5/sha1/sha256 hash
15
+ # @param [String] api_key for virustotal
16
+ # @return [VirustotalAPI::FileRescan] Reponse
17
+ def self.rescan(resource, api_key)
18
+ response = RestClient.post(
19
+ api_uri + '/file/rescan',
20
+ apikey: api_key,
21
+ resource: resource
22
+ )
23
+
24
+ new(response)
25
+ end
26
+
27
+ # @return [Boolean] if file was queued
28
+ # 0 => not_present, 1 => exists, -2 => queued_for_analysis
29
+ def queued_for_analysis?
30
+ response_code = report.fetch('response_code') { nil }
31
+
32
+ response_code == -2
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require_relative 'base'
3
4
 
@@ -17,9 +18,9 @@ module VirustotalAPI
17
18
  def self.scan(file_path, api_key, opts = {})
18
19
  response = RestClient.post(
19
20
  api_uri + '/file/scan',
20
- :apikey => api_key,
21
- :filename => opts.fetch('filename') { File.basename(file_path) },
22
- :file => File.open(file_path, 'r')
21
+ apikey: api_key,
22
+ filename: opts.fetch('filename') { File.basename(file_path) },
23
+ file: File.open(file_path, 'r')
23
24
  )
24
25
 
25
26
  new(response)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require_relative 'base'
3
4
 
@@ -15,7 +16,7 @@ module VirustotalAPI
15
16
  def self.find(ip, api_key)
16
17
  response = RestClient.get(
17
18
  api_uri + '/ip-address/report',
18
- { :params => params(ip, api_key) }
19
+ { params: params(ip, api_key) }
19
20
  )
20
21
  report = parse(response)
21
22
 
@@ -27,8 +28,8 @@ module VirustotalAPI
27
28
  # @return [Hash] params for GET Request
28
29
  def self.params(ip, api_key)
29
30
  {
30
- :ip => ip,
31
- :apikey => api_key
31
+ ip: ip,
32
+ apikey: api_key
32
33
  }
33
34
  end
34
35
  end
@@ -1,4 +1,5 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  module VirustotalAPI
3
- URI = 'https://www.virustotal.com/vtapi/v2'.freeze
4
+ URI = 'https://www.virustotal.com/vtapi/v2'
4
5
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require_relative 'base'
3
4
 
@@ -11,7 +12,7 @@ module VirustotalAPI
11
12
  @scan_id = report.fetch('scan_id') { nil }
12
13
  end
13
14
 
14
- # @param [String] resource file as a md5/sha1/sha256 hash
15
+ # @param [String] resource as an ip/domain/url
15
16
  # @param [String] api_key for virustotal
16
17
  # @param [Integer] optional param to start scan if not found. 1 for true
17
18
  # @return [VirustotalAPI::URLReport] Report Search Result
@@ -25,15 +26,15 @@ module VirustotalAPI
25
26
  new(report)
26
27
  end
27
28
 
28
- # @param [String] resource file as a md5/sha1/sha256 hash
29
+ # @param [String] resource as an ip/domain/url
29
30
  # @param [String] api_key for virustotal
30
31
  # @param [Integer] optional param to start scan if not found. 1 for true
31
32
  # @return [Hash] params for POST Request
32
33
  def self.params(resource, api_key, scan = 0)
33
34
  {
34
- :resource => resource,
35
- :apikey => api_key,
36
- :scan => scan.to_s
35
+ resource: resource,
36
+ apikey: api_key,
37
+ scan: scan.to_s
37
38
  }
38
39
  end
39
40
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+
5
+ module VirustotalAPI
6
+ class URLScan < Base
7
+ attr_reader :response, :scan_id
8
+
9
+ def initialize(response)
10
+ @response = JSON.parse(response)
11
+ @scan_id = @response.fetch('scan_id') { nil }
12
+ end
13
+
14
+ # @param [String] url
15
+ # @param [String] api_key for virustotal
16
+ # @return [VirustotalAPI::URLScan] Reponse
17
+ def self.scan(url, api_key)
18
+ response = RestClient.post(
19
+ api_uri + '/url/scan',
20
+ apikey: api_key,
21
+ url: url
22
+ )
23
+
24
+ new(response)
25
+ end
26
+
27
+ # @return [Boolean] if file was queued
28
+ # 0 => not_present, 1 => exists, -2 => queued_for_analysis
29
+ def queued_for_analysis?
30
+ response_code = report.fetch('response_code') { nil }
31
+
32
+ response_code == -2
33
+ end
34
+ end
35
+ end
@@ -1,4 +1,5 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  module VirustotalAPI
3
- VERSION = '0.3.0'.freeze
4
+ VERSION = '0.4.0'
4
5
  end
data/test/base_test.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  # rubocop:disable LineLength
3
4
  require './test/test_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require './test/test_helper'
3
4
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require './test/test_helper'
3
4
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require './test/test_helper'
2
4
 
3
5
  class VirustotalAPIFileReportTest < Minitest::Test
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require './test/test_helper'
4
+
5
+ class VirustotalAPIFileRescanTest < Minitest::Test
6
+ # rubocop:disable LineLength
7
+ def setup
8
+ @sha256 = '01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b'
9
+ @api_key = 'testapikey'
10
+ end
11
+
12
+ def test_class_exists
13
+ assert VirustotalAPI::FileRescan
14
+ end
15
+
16
+ def test_rescan_response
17
+ VCR.use_cassette('rescan') do
18
+ virustotal_rescan = VirustotalAPI::FileRescan.rescan(@sha256, @api_key)
19
+
20
+ assert virustotal_rescan.response.is_a?(Hash)
21
+ end
22
+ end
23
+
24
+ def test_rescan_id
25
+ VCR.use_cassette('rescan') do
26
+ virustotal_rescan = VirustotalAPI::FileRescan.rescan(@sha256, @api_key)
27
+
28
+ assert virustotal_rescan.rescan_id.is_a?(String)
29
+ end
30
+ end
31
+ # rubocop:enable LineLength
32
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require './test/test_helper'
3
4
 
@@ -0,0 +1,47 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://www.virustotal.com/vtapi/v2/file/rescan
6
+ body:
7
+ encoding: UTF-8
8
+ string: apikey=testapikey&resource=01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
9
+ headers:
10
+ Accept:
11
+ - "*/*"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.1p57
16
+ Content-Length:
17
+ - '145'
18
+ Content-Type:
19
+ - application/x-www-form-urlencoded
20
+ Host:
21
+ - www.virustotal.com
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Cache-Control:
28
+ - no-cache
29
+ Content-Type:
30
+ - application/json
31
+ X-Cloud-Trace-Context:
32
+ - 642602c25c3eda6df338b27d506a65e3
33
+ Date:
34
+ - Tue, 09 Jul 2019 15:04:57 GMT
35
+ Server:
36
+ - Google Frontend
37
+ Content-Length:
38
+ - '402'
39
+ body:
40
+ encoding: UTF-8
41
+ string: '{"permalink": "https://www.virustotal.com/file/01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b/analysis/1562684247/",
42
+ "response_code": 1, "sha256": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b",
43
+ "resource": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b",
44
+ "scan_id": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b-1562684247"}'
45
+ http_version:
46
+ recorded_at: Tue, 09 Jul 2019 15:04:34 GMT
47
+ recorded_with: VCR 5.0.0
@@ -0,0 +1,48 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://www.virustotal.com/vtapi/v2/url/scan
6
+ body:
7
+ encoding: UTF-8
8
+ string: apikey=testapikey&url=http%3A%2F%2Fwww.google.com
9
+ headers:
10
+ Accept:
11
+ - "*/*"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.1p57
16
+ Content-Length:
17
+ - '103'
18
+ Content-Type:
19
+ - application/x-www-form-urlencoded
20
+ Host:
21
+ - www.virustotal.com
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Cache-Control:
28
+ - no-cache
29
+ Content-Type:
30
+ - application/json
31
+ X-Cloud-Trace-Context:
32
+ - 3e75d46007d403e053ab2dea60a4aa71
33
+ Date:
34
+ - Wed, 10 Jul 2019 09:49:10 GMT
35
+ Server:
36
+ - Google Frontend
37
+ Content-Length:
38
+ - '433'
39
+ body:
40
+ encoding: UTF-8
41
+ string: '{"permalink": "https://www.virustotal.com/url/dd014af5ed6b38d9130e3f466f850e46d21b951199d53a18ef29ee9341614eaf/analysis/1562751553/",
42
+ "resource": "http://www.google.com/", "url": "http://www.google.com/", "response_code":
43
+ 1, "scan_date": "2019-07-10 09:39:13", "scan_id": "dd014af5ed6b38d9130e3f466f850e46d21b951199d53a18ef29ee9341614eaf-1562751553",
44
+ "verbose_msg": "Scan request successfully queued, come back later for the
45
+ report"}'
46
+ http_version:
47
+ recorded_at: Wed, 10 Jul 2019 09:48:46 GMT
48
+ recorded_with: VCR 5.0.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require './test/test_helper'
3
4
 
data/test/test_helper.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require './lib/virustotal_api'
3
4
  require 'minitest/autorun'
data/test/uri_test.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require './test/test_helper'
3
4
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require './test/test_helper'
3
4
 
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require './test/test_helper'
4
+
5
+ class VirustotalAPIURLScanTest < Minitest::Test
6
+ def setup
7
+ @url = 'http://www.google.com'
8
+ @api_key = 'testapikey'
9
+ end
10
+
11
+ def test_class_exists
12
+ assert VirustotalAPI::URLScan
13
+ end
14
+
15
+ def test_scan_response
16
+ VCR.use_cassette('url_scan') do
17
+ vturl_scan = VirustotalAPI::URLScan.scan(@url, @api_key)
18
+
19
+ assert vturl_scan.response.is_a?(Hash)
20
+ end
21
+ end
22
+
23
+ def test_scan_url
24
+ VCR.use_cassette('url_scan') do
25
+ vturl_scan = VirustotalAPI::URLScan.scan(@url, @api_key)
26
+
27
+ assert vturl_scan.scan_id.is_a?(String)
28
+ end
29
+ end
30
+ end
data/test/version_test.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  require './test/test_helper'
3
4
 
@@ -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)
@@ -21,11 +22,11 @@ Gem::Specification.new do |spec|
21
22
  spec.add_dependency 'json'
22
23
  spec.add_dependency 'rest-client'
23
24
 
24
- spec.add_development_dependency 'bundler', '~> 1.16'
25
+ spec.add_development_dependency 'bundler', '~> 2.0'
25
26
  spec.add_development_dependency 'minitest'
26
27
  spec.add_development_dependency 'pry'
27
28
  spec.add_development_dependency 'rake', '~> 12.3'
28
- spec.add_development_dependency 'rubocop'
29
+ spec.add_development_dependency 'rubocop', '~> 0.71'
29
30
  spec.add_development_dependency 'vcr'
30
31
  spec.add_development_dependency 'webmock'
31
32
  spec.add_development_dependency 'yard', '~> 0.9'
metadata CHANGED
@@ -1,14 +1,14 @@
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.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - pwelch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-31 00:00:00.000000000 Z
11
+ date: 2019-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.16'
47
+ version: '2.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.16'
54
+ version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -98,16 +98,16 @@ dependencies:
98
98
  name: rubocop
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: '0.71'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: '0.71'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: vcr
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -157,12 +157,12 @@ executables: []
157
157
  extensions: []
158
158
  extra_rdoc_files: []
159
159
  files:
160
+ - ".circleci/config.yml"
160
161
  - ".github/CODE_OF_CONDUCT.md"
161
162
  - ".github/CONTRIBUTING.md"
162
163
  - ".github/ISSUE_TEMPLATE.md"
163
164
  - ".gitignore"
164
165
  - ".rubocop.yml"
165
- - ".travis.yml"
166
166
  - CHANGELOG.md
167
167
  - Gemfile
168
168
  - LICENSE.txt
@@ -173,15 +173,18 @@ files:
173
173
  - lib/virustotal_api/domain_report.rb
174
174
  - lib/virustotal_api/exceptions.rb
175
175
  - lib/virustotal_api/file_report.rb
176
+ - lib/virustotal_api/file_rescan.rb
176
177
  - lib/virustotal_api/file_scan.rb
177
178
  - lib/virustotal_api/ip_report.rb
178
179
  - lib/virustotal_api/uri.rb
179
180
  - lib/virustotal_api/url_report.rb
181
+ - lib/virustotal_api/url_scan.rb
180
182
  - lib/virustotal_api/version.rb
181
183
  - test/base_test.rb
182
184
  - test/domain_report_test.rb
183
185
  - test/exceptions_test.rb
184
186
  - test/file_report_test.rb
187
+ - test/file_rescan_test.rb
185
188
  - test/file_scan_test.rb
186
189
  - test/fixtures/domain_report.yml
187
190
  - test/fixtures/ip_report.yml
@@ -190,13 +193,16 @@ files:
190
193
  - test/fixtures/report.yml
191
194
  - test/fixtures/report_not_found.yml
192
195
  - test/fixtures/request_forbidden.yml
196
+ - test/fixtures/rescan.yml
193
197
  - test/fixtures/scan.yml
194
198
  - test/fixtures/unscanned_url_report.yml
195
199
  - test/fixtures/url_report.yml
200
+ - test/fixtures/url_scan.yml
196
201
  - test/ip_report_test.rb
197
202
  - test/test_helper.rb
198
203
  - test/uri_test.rb
199
204
  - test/url_report_test.rb
205
+ - test/url_scan_test.rb
200
206
  - test/version_test.rb
201
207
  - virustotal_api.gemspec
202
208
  homepage: https://github.com/pwelch/virustotal_api
@@ -218,8 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
224
  - !ruby/object:Gem::Version
219
225
  version: '0'
220
226
  requirements: []
221
- rubyforge_project:
222
- rubygems_version: 2.7.6
227
+ rubygems_version: 3.0.3
223
228
  signing_key:
224
229
  specification_version: 4
225
230
  summary: Gem for VirusTotal.com API
@@ -228,6 +233,7 @@ test_files:
228
233
  - test/domain_report_test.rb
229
234
  - test/exceptions_test.rb
230
235
  - test/file_report_test.rb
236
+ - test/file_rescan_test.rb
231
237
  - test/file_scan_test.rb
232
238
  - test/fixtures/domain_report.yml
233
239
  - test/fixtures/ip_report.yml
@@ -236,11 +242,14 @@ test_files:
236
242
  - test/fixtures/report.yml
237
243
  - test/fixtures/report_not_found.yml
238
244
  - test/fixtures/request_forbidden.yml
245
+ - test/fixtures/rescan.yml
239
246
  - test/fixtures/scan.yml
240
247
  - test/fixtures/unscanned_url_report.yml
241
248
  - test/fixtures/url_report.yml
249
+ - test/fixtures/url_scan.yml
242
250
  - test/ip_report_test.rb
243
251
  - test/test_helper.rb
244
252
  - test/uri_test.rb
245
253
  - test/url_report_test.rb
254
+ - test/url_scan_test.rb
246
255
  - test/version_test.rb
data/.travis.yml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- sudo: false
3
- branches:
4
- except:
5
- - gh-pages
6
- cache: bundler
7
- language: ruby
8
- rvm:
9
- - 2.1
10
- before_install: gem update --remote bundler
11
- install:
12
- - bundle install --retry=3
13
- script:
14
- - bundle exec rake test
15
- - bundle exec rake rubocop