virustotalx 1.1.0 → 1.2.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 +4 -4
- data/.github/workflows/test.yml +26 -0
- data/.overcommit.yml +9 -0
- data/.standard.yml +4 -0
- data/README.md +13 -7
- data/Rakefile +1 -1
- data/lib/virustotal/api.rb +9 -0
- data/lib/virustotal/clients/base.rb +13 -11
- data/lib/virustotal/clients/domain.rb +2 -2
- data/lib/virustotal/clients/file.rb +2 -2
- data/lib/virustotal/clients/graph.rb +3 -2
- data/lib/virustotal/clients/intelligence.rb +30 -0
- data/lib/virustotal/clients/ip_address.rb +2 -2
- data/lib/virustotal/clients/url.rb +2 -2
- data/lib/virustotal/errors.rb +11 -0
- data/lib/virustotal/version.rb +1 -1
- data/lib/virustotal.rb +2 -2
- data/renovate.json +5 -0
- data/virustotalx.gemspec +19 -17
- metadata +50 -18
- data/.travis.yml +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29c0a2908fdf7c04604adbdf13e22e34883b71ccfa2ccdb803067a835d7feb47
|
4
|
+
data.tar.gz: 2c13fbcdcdc79cb3489825760fb62560693bb715191e75dd165c55d25e96ab89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22ae1e88179b146f4ae4569899567f01525228f2605143301c89f7d070fd8d2354d5db7c1c763d9a71cc6bafd78c30532851f9c97e718015feec74b8420307a4
|
7
|
+
data.tar.gz: 282f86c261ccfea33d66287d8d5e08c8d2efc2be7d9a1d4c7d91c14986492307ded9d8aa149522f17e328a402e8d08a474edefe5ac18adcd5695d15fe0b65c67
|
@@ -0,0 +1,26 @@
|
|
1
|
+
name: Ruby CI
|
2
|
+
|
3
|
+
on: [pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
|
8
|
+
runs-on: ubuntu-latest
|
9
|
+
|
10
|
+
strategy:
|
11
|
+
fail-fast: false
|
12
|
+
matrix:
|
13
|
+
ruby: [2.7, '3.0']
|
14
|
+
|
15
|
+
steps:
|
16
|
+
- uses: actions/checkout@v2
|
17
|
+
- name: Set up Ruby
|
18
|
+
uses: ruby/setup-ruby@v1
|
19
|
+
with:
|
20
|
+
ruby-version: ${{ matrix.ruby }}
|
21
|
+
bundler-cache: true
|
22
|
+
- name: Build and test with Rake
|
23
|
+
run: |
|
24
|
+
gem install bundler
|
25
|
+
bundle install
|
26
|
+
bundle exec rake
|
data/.overcommit.yml
ADDED
data/.standard.yml
ADDED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# virustotalx
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/virustotalx)
|
4
|
-
[](https://github.com/ninoseki/virustotalx/actions/workflows/test.yml)
|
5
5
|
[](https://coveralls.io/github/ninoseki/virustotalx?branch=master)
|
6
6
|
[](https://www.codefactor.io/repository/github/ninoseki/virustotalx)
|
7
7
|
|
@@ -44,7 +44,7 @@ api.ip_address.get("1.1.1.1")
|
|
44
44
|
### Files
|
45
45
|
|
46
46
|
| HTTP Method | URL | API method |
|
47
|
-
|
47
|
+
|-------------|------------------------------------|------------------------------------------------------------|
|
48
48
|
| POST | /files | api.file.upload(filepath) |
|
49
49
|
| GET | /files/upload_url | api.file.upload_url |
|
50
50
|
| GET | /files/{id} | api.file.get(id) |
|
@@ -62,7 +62,7 @@ api.ip_address.get("1.1.1.1")
|
|
62
62
|
### URLs
|
63
63
|
|
64
64
|
| HTTP Method | URL | API method |
|
65
|
-
|
65
|
+
|-------------|-----------------------------|----------------------------------------------------------------|
|
66
66
|
| POST | /urls | N/A |
|
67
67
|
| GET | /urls/{id} | api.url.get(id) |
|
68
68
|
| POST | /urls/{id}/analyse | api.url.analyse(id) |
|
@@ -78,7 +78,7 @@ Note: you can use a URL as an id.
|
|
78
78
|
### Domains
|
79
79
|
|
80
80
|
| HTTP Method | URL | API method |
|
81
|
-
|
81
|
+
|-------------|----------------------------------|--------------------------------------------------------------|
|
82
82
|
| GET | /domains/{domain} | api.domain.get(domain) |
|
83
83
|
| GET | /domains/{domain}/comments | api.domain.comment(domain) |
|
84
84
|
| POST | /domains/{domain}/comments | api.domain.add_comment(domain, text) |
|
@@ -87,7 +87,7 @@ Note: you can use a URL as an id.
|
|
87
87
|
### IP addresses
|
88
88
|
|
89
89
|
| HTTP Method | URL | API method |
|
90
|
-
|
90
|
+
|-------------|-----------------------------------|---------------------------------------------------------------------------------|
|
91
91
|
| GET | /ip_addresses/{ip} | api.ip_address.get(ip) |
|
92
92
|
| GET | /ip_addresses/{ip}/comments | api.ip_address.comments(id) |
|
93
93
|
| POST | /ip_addresses/{ip}/comments | api.ip_address.add_comment(id, text) |
|
@@ -96,13 +96,13 @@ Note: you can use a URL as an id.
|
|
96
96
|
### Analyses
|
97
97
|
|
98
98
|
| HTTP Method | URL | API method |
|
99
|
-
|
99
|
+
|-------------|----------------|----------------------|
|
100
100
|
| GET | /analyses/{id} | api.analysis.get(ip) |
|
101
101
|
|
102
102
|
## Graphs
|
103
103
|
|
104
104
|
| HTTP Method | URL | API method |
|
105
|
-
|
105
|
+
|-------------|------------------------------------------------------|-------------------------------------------------------------------------------------|
|
106
106
|
| GET | graphs | api.graph.search(filter: nil, limit: nil, cursor: nil, order: nil, attributes: nil) |
|
107
107
|
| POST | graphs | api.graph.create(\*\*params) |
|
108
108
|
| GET | graphs/{id} | api.graph.get(id) |
|
@@ -117,6 +117,12 @@ Note: you can use a URL as an id.
|
|
117
117
|
| DELETE | graphs/{id}/relationships/editors/{user_or_group_id} | api.graph.delete_editor(id, user_or_group_id) |
|
118
118
|
| GET | graphs/{id}/relationships/{relationship} | api.graph.`relationship`(id) |
|
119
119
|
|
120
|
+
## Intelligence
|
121
|
+
|
122
|
+
| HTTP Method | URL | API method |
|
123
|
+
|-------------|---------------------|--------------------------------------------------------------------------------------------|
|
124
|
+
| GET | intelligence/search | api.intelligence.search(query, order: nil, limit: nil, cursor: nil, descriptors_only: nil) |
|
125
|
+
|
120
126
|
## License
|
121
127
|
|
122
128
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
CHANGED
data/lib/virustotal/api.rb
CHANGED
@@ -69,5 +69,14 @@ module VirusTotal
|
|
69
69
|
def graph
|
70
70
|
@graph ||= Client::Graph.new(key: key)
|
71
71
|
end
|
72
|
+
|
73
|
+
#
|
74
|
+
# Intelligence API endpoint client
|
75
|
+
#
|
76
|
+
# @return [VirusTotal::Client::Intelligence]
|
77
|
+
#
|
78
|
+
def intelligence
|
79
|
+
@intelligence ||= Client::Intelligence.new(key: key)
|
80
|
+
end
|
72
81
|
end
|
73
82
|
end
|
@@ -16,8 +16,9 @@ module VirusTotal
|
|
16
16
|
domain: "domains",
|
17
17
|
file: "files",
|
18
18
|
graph: "graphs",
|
19
|
+
intelligence: "intelligence",
|
19
20
|
ipaddress: "ip_addresses",
|
20
|
-
url: "urls"
|
21
|
+
url: "urls"
|
21
22
|
}.freeze
|
22
23
|
|
23
24
|
attr_reader :key
|
@@ -38,7 +39,8 @@ module VirusTotal
|
|
38
39
|
end
|
39
40
|
|
40
41
|
def https_options
|
41
|
-
|
42
|
+
proxy = ENV["HTTPS_PROXY"] || ENV["https_proxy"]
|
43
|
+
if proxy
|
42
44
|
uri = URI(proxy)
|
43
45
|
{
|
44
46
|
proxy_address: uri.hostname,
|
@@ -55,13 +57,13 @@ module VirusTotal
|
|
55
57
|
code = code.to_s.to_sym
|
56
58
|
|
57
59
|
table = {
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
60
|
+
'400': BadRequestError,
|
61
|
+
'401': AuthenticationRequiredError,
|
62
|
+
'403': ForbiddenError,
|
63
|
+
'404': NotFoundError,
|
64
|
+
'409': AlreadyExistsError,
|
65
|
+
'429': QuotaExceededError,
|
66
|
+
'503': TransientError
|
65
67
|
}
|
66
68
|
raise Error, "Unsupported response code returned: #{code} - #{message}" unless table.key?(code)
|
67
69
|
|
@@ -78,7 +80,7 @@ module VirusTotal
|
|
78
80
|
code = response.code.to_i
|
79
81
|
body = response.body
|
80
82
|
json = JSON.parse(body) if response["Content-Type"].to_s.include?("application/json")
|
81
|
-
message = json ? json
|
83
|
+
message = json ? json["message"] : body
|
82
84
|
|
83
85
|
case code
|
84
86
|
when 200
|
@@ -114,7 +116,7 @@ module VirusTotal
|
|
114
116
|
post = Net::HTTP::Post.new(url_for(path))
|
115
117
|
|
116
118
|
data = [
|
117
|
-
["file", file, {
|
119
|
+
["file", file, { filename: filename }]
|
118
120
|
]
|
119
121
|
post.set_form(data, "multipart/form-data")
|
120
122
|
|
@@ -10,7 +10,7 @@ module VirusTotal
|
|
10
10
|
private
|
11
11
|
|
12
12
|
def relationships
|
13
|
-
@relationships ||= %w
|
13
|
+
@relationships ||= %w[
|
14
14
|
communicating_files
|
15
15
|
downloaded_files
|
16
16
|
graphs
|
@@ -19,7 +19,7 @@ module VirusTotal
|
|
19
19
|
resolutions
|
20
20
|
siblings
|
21
21
|
urls
|
22
|
-
|
22
|
+
].map(&:to_sym)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -89,7 +89,7 @@ module VirusTotal
|
|
89
89
|
private
|
90
90
|
|
91
91
|
def relationships
|
92
|
-
@relationships ||= %w
|
92
|
+
@relationships ||= %w[
|
93
93
|
analyses
|
94
94
|
behaviours
|
95
95
|
bundled_files
|
@@ -112,7 +112,7 @@ module VirusTotal
|
|
112
112
|
submissions
|
113
113
|
screenshots
|
114
114
|
votes
|
115
|
-
|
115
|
+
].map(&:to_sym)
|
116
116
|
end
|
117
117
|
end
|
118
118
|
end
|
@@ -4,6 +4,7 @@ module VirusTotal
|
|
4
4
|
module Client
|
5
5
|
class Graph < Base
|
6
6
|
include Action::Get
|
7
|
+
include Action::Relationships
|
7
8
|
|
8
9
|
#
|
9
10
|
# Return graphs.
|
@@ -181,14 +182,14 @@ module VirusTotal
|
|
181
182
|
private
|
182
183
|
|
183
184
|
def relationships
|
184
|
-
@relationships ||= %w
|
185
|
+
@relationships ||= %w[
|
185
186
|
comments
|
186
187
|
items
|
187
188
|
viewers
|
188
189
|
editors
|
189
190
|
owner
|
190
191
|
group
|
191
|
-
|
192
|
+
].map(&:to_sym)
|
192
193
|
end
|
193
194
|
end
|
194
195
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module VirusTotal
|
4
|
+
module Client
|
5
|
+
class Intelligence < Base
|
6
|
+
#
|
7
|
+
# Intelligense search
|
8
|
+
#
|
9
|
+
# @param [String] query Search query
|
10
|
+
# @param [String, nil] order Sort order
|
11
|
+
# @param [Integer, nil] limit Maximum number of results
|
12
|
+
# @param [String, nil] cursor Continuation cursor
|
13
|
+
# @param [Boolean, nil] descriptors_only Whether to return full object information or just object descriptors
|
14
|
+
#
|
15
|
+
# @return [Hash]
|
16
|
+
#
|
17
|
+
def search(query, order: nil, limit: nil, cursor: nil, descriptors_only: nil)
|
18
|
+
params = {
|
19
|
+
query: query,
|
20
|
+
order: order,
|
21
|
+
limit: limit,
|
22
|
+
cursor: cursor,
|
23
|
+
descriptors_only: descriptors_only
|
24
|
+
}.compact
|
25
|
+
|
26
|
+
_get("/#{name}/search", params) { |json| json }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -10,7 +10,7 @@ module VirusTotal
|
|
10
10
|
private
|
11
11
|
|
12
12
|
def relationships
|
13
|
-
@relationships ||= %w
|
13
|
+
@relationships ||= %w[
|
14
14
|
communicating_files
|
15
15
|
downloaded_files
|
16
16
|
graphs
|
@@ -18,7 +18,7 @@ module VirusTotal
|
|
18
18
|
referrer_files
|
19
19
|
resolutions
|
20
20
|
urls
|
21
|
-
|
21
|
+
].map(&:to_sym)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -45,14 +45,14 @@ module VirusTotal
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def relationships
|
48
|
-
@relationships ||= %w
|
48
|
+
@relationships ||= %w[
|
49
49
|
analyses
|
50
50
|
downloaded_files
|
51
51
|
graphs
|
52
52
|
last_serving_ip_address
|
53
53
|
redirecting_urls
|
54
54
|
submissions
|
55
|
-
|
55
|
+
].map(&:to_sym)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
data/lib/virustotal/errors.rb
CHANGED
@@ -4,15 +4,26 @@ module VirusTotal
|
|
4
4
|
class Error < StandardError; end
|
5
5
|
|
6
6
|
class AlreadyExistsError < Error; end
|
7
|
+
|
7
8
|
class AuthenticationRequiredError < Error; end
|
9
|
+
|
8
10
|
class BadRequestError < Error; end
|
11
|
+
|
9
12
|
class ForbiddenError < Error; end
|
13
|
+
|
10
14
|
class InvalidArgumentError < Error; end
|
15
|
+
|
11
16
|
class NotFoundError < Error; end
|
17
|
+
|
12
18
|
class QuotaExceededError < Error; end
|
19
|
+
|
13
20
|
class RateLimitError < Error; end
|
21
|
+
|
14
22
|
class TooManyRequestsError < Error; end
|
23
|
+
|
15
24
|
class TransientError < Error; end
|
25
|
+
|
16
26
|
class UserNotActiveError < Error; end
|
27
|
+
|
17
28
|
class WrongCredentialsError < Error; end
|
18
29
|
end
|
data/lib/virustotal/version.rb
CHANGED
data/lib/virustotal.rb
CHANGED
@@ -17,8 +17,8 @@ require "virustotal/clients/analysis"
|
|
17
17
|
require "virustotal/clients/domain"
|
18
18
|
require "virustotal/clients/file"
|
19
19
|
require "virustotal/clients/graph"
|
20
|
+
require "virustotal/clients/intelligence"
|
20
21
|
require "virustotal/clients/ip_address"
|
21
22
|
require "virustotal/clients/url"
|
22
23
|
|
23
|
-
module VirusTotal
|
24
|
-
end
|
24
|
+
module VirusTotal; end
|
data/virustotalx.gemspec
CHANGED
@@ -1,33 +1,35 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
lib = File.expand_path(
|
3
|
+
lib = File.expand_path("lib", __dir__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
require "virustotal/version"
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name
|
9
|
-
spec.version
|
10
|
-
spec.authors
|
11
|
-
spec.email
|
8
|
+
spec.name = "virustotalx"
|
9
|
+
spec.version = VirusTotal::VERSION
|
10
|
+
spec.authors = ["Manabu Niseki"]
|
11
|
+
spec.email = ["manabu.niseki@gmail.com"]
|
12
12
|
|
13
|
-
spec.summary
|
14
|
-
spec.description
|
15
|
-
spec.homepage
|
16
|
-
spec.license
|
13
|
+
spec.summary = "Yet another VirusTotal API wrapper for Ruby"
|
14
|
+
spec.description = "Yet another VirusTotal API wrapper for Ruby"
|
15
|
+
spec.homepage = "https://github.com/ninoseki/virustotalx"
|
16
|
+
spec.license = "MIT"
|
17
17
|
|
18
18
|
# Specify which files should be added to the gem when it is released.
|
19
19
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
20
|
-
spec.files
|
20
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
21
21
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
22
22
|
end
|
23
|
-
spec.bindir
|
24
|
-
spec.executables
|
23
|
+
spec.bindir = "exe"
|
24
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
25
25
|
spec.require_paths = ["lib"]
|
26
26
|
|
27
|
-
spec.add_development_dependency "bundler", "~> 2.
|
28
|
-
spec.add_development_dependency "
|
27
|
+
spec.add_development_dependency "bundler", "~> 2.2"
|
28
|
+
spec.add_development_dependency "coveralls_reborn", "~> 0.23"
|
29
|
+
spec.add_development_dependency "overcommit", "~> 0.58"
|
29
30
|
spec.add_development_dependency "rake", "~> 13.0"
|
30
|
-
spec.add_development_dependency "rspec", "~> 3.
|
31
|
-
spec.add_development_dependency "
|
32
|
-
spec.add_development_dependency "
|
31
|
+
spec.add_development_dependency "rspec", "~> 3.10"
|
32
|
+
spec.add_development_dependency "standard", "~> 1.3"
|
33
|
+
spec.add_development_dependency "vcr", "~> 6.0"
|
34
|
+
spec.add_development_dependency "webmock", "~> 3.14"
|
33
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: virustotalx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manabu Niseki
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,28 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
19
|
+
version: '2.2'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '2.
|
26
|
+
version: '2.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: coveralls_reborn
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.23'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
40
|
+
version: '0.23'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: overcommit
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.58'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.58'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,42 +72,56 @@ dependencies:
|
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
75
|
+
version: '3.10'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.10'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: standard
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.3'
|
62
90
|
type: :development
|
63
91
|
prerelease: false
|
64
92
|
version_requirements: !ruby/object:Gem::Requirement
|
65
93
|
requirements:
|
66
94
|
- - "~>"
|
67
95
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3
|
96
|
+
version: '1.3'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: vcr
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
72
100
|
requirements:
|
73
101
|
- - "~>"
|
74
102
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
103
|
+
version: '6.0'
|
76
104
|
type: :development
|
77
105
|
prerelease: false
|
78
106
|
version_requirements: !ruby/object:Gem::Requirement
|
79
107
|
requirements:
|
80
108
|
- - "~>"
|
81
109
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
110
|
+
version: '6.0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: webmock
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
115
|
- - "~>"
|
88
116
|
- !ruby/object:Gem::Version
|
89
|
-
version: '3.
|
117
|
+
version: '3.14'
|
90
118
|
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
93
121
|
requirements:
|
94
122
|
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
|
-
version: '3.
|
124
|
+
version: '3.14'
|
97
125
|
description: Yet another VirusTotal API wrapper for Ruby
|
98
126
|
email:
|
99
127
|
- manabu.niseki@gmail.com
|
@@ -101,9 +129,11 @@ executables: []
|
|
101
129
|
extensions: []
|
102
130
|
extra_rdoc_files: []
|
103
131
|
files:
|
132
|
+
- ".github/workflows/test.yml"
|
104
133
|
- ".gitignore"
|
134
|
+
- ".overcommit.yml"
|
105
135
|
- ".rspec"
|
106
|
-
- ".
|
136
|
+
- ".standard.yml"
|
107
137
|
- Gemfile
|
108
138
|
- LICENSE
|
109
139
|
- README.md
|
@@ -121,17 +151,19 @@ files:
|
|
121
151
|
- lib/virustotal/clients/domain.rb
|
122
152
|
- lib/virustotal/clients/file.rb
|
123
153
|
- lib/virustotal/clients/graph.rb
|
154
|
+
- lib/virustotal/clients/intelligence.rb
|
124
155
|
- lib/virustotal/clients/ip_address.rb
|
125
156
|
- lib/virustotal/clients/url.rb
|
126
157
|
- lib/virustotal/errors.rb
|
127
158
|
- lib/virustotal/version.rb
|
128
159
|
- lib/virustotalx.rb
|
160
|
+
- renovate.json
|
129
161
|
- virustotalx.gemspec
|
130
162
|
homepage: https://github.com/ninoseki/virustotalx
|
131
163
|
licenses:
|
132
164
|
- MIT
|
133
165
|
metadata: {}
|
134
|
-
post_install_message:
|
166
|
+
post_install_message:
|
135
167
|
rdoc_options: []
|
136
168
|
require_paths:
|
137
169
|
- lib
|
@@ -146,8 +178,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
178
|
- !ruby/object:Gem::Version
|
147
179
|
version: '0'
|
148
180
|
requirements: []
|
149
|
-
rubygems_version: 3.
|
150
|
-
signing_key:
|
181
|
+
rubygems_version: 3.2.22
|
182
|
+
signing_key:
|
151
183
|
specification_version: 4
|
152
184
|
summary: Yet another VirusTotal API wrapper for Ruby
|
153
185
|
test_files: []
|