pulsedive 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 178d84eeeca66dd30d149b1f2879cfa3f9ebb0a7a75812b58b6f9bfba100b2c9
4
- data.tar.gz: b6044f94b6ffaaa84adc6fd44a107971bf0ac0ce148d66bb9940c0f53f6a0bd8
3
+ metadata.gz: 82b27042cde7526ac9b1425a8fe2f1872213870eec3fabbd7cdc38c54f0f5201
4
+ data.tar.gz: f4f06366ca8ffec1014dd14c3635d1cbf9d2df985d153bc3104eef58b1dd2a03
5
5
  SHA512:
6
- metadata.gz: 1a9e1791d8efbad997d635defb0991a30aa3bc5c53f49d7ecc043efcae6ccf32f4cca7cc8faf78afa23638a19656bf8bf897eac4e60706d53f5aa4a3fa25d7ca
7
- data.tar.gz: 3294e54b1695efbe0c4eed06978fcec194d8d07a18c9db1b2d0c05f778495656a212fc03f97790592e7fa338287124f7e0c468bb15c620d9916b3b3a7fb6289c
6
+ metadata.gz: d9858214f93918781493fc9c92cba8f01170540738ed1074bf608c28d140610b6f11abbff81fcfc7278a39ce28b162c45097aa8b62b88246757b44a3485ef023
7
+ data.tar.gz: ecf6313b4d80e6527de5979032d256a317642657c4a63d7ed0c7316100ee906f4606ab312837197442b2de555d205af50fbc8b0df45cff0b9a0cb648be23e9e6
@@ -3,6 +3,5 @@ sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
- - 2.4
7
- - 2.5
8
- before_install: gem install bundler -v 1.16.3
6
+ - 2.6
7
+ before_install: gem install bundler -v 2.0.1
data/Gemfile CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
6
 
5
7
  # Specify your gem's dependencies in pulsedive.gemspec
6
8
  gemspec
data/README.md CHANGED
@@ -1,27 +1,18 @@
1
1
  # pulsedive-rb
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/pulsedive.svg)](https://badge.fury.io/rb/pulsedive)
3
4
  [![Build Status](https://travis-ci.org/ninoseki/pulsedive-rb.svg?branch=master)](https://travis-ci.org/ninoseki/pulsedive-rb)
4
- [![Maintainability](https://api.codeclimate.com/v1/badges/35b08b3018cee65b42a0/maintainability)](https://codeclimate.com/github/ninoseki/pulsedive-rb/maintainability)
5
+ [![CodeFactor](https://www.codefactor.io/repository/github/ninoseki/pulsedive-rb/badge)](https://www.codefactor.io/repository/github/ninoseki/pulsedive-rb)
5
6
  [![Coverage Status](https://coveralls.io/repos/github/ninoseki/pulsedive-rb/badge.svg?branch=master)](https://coveralls.io/github/ninoseki/pulsedive-rb?branch=master)
6
7
 
7
- A Ruby library for [Pulsedive](https://pulsedive.com/) API
8
+ [Pulsedive](https://pulsedive.com/) API wrapper for Ruby.
8
9
 
9
10
  ## Installation
10
11
 
11
- Add this line to your application's Gemfile:
12
-
13
- ```ruby
14
- gem 'pulsedive'
12
+ ```bash
13
+ gem install pulsedive
15
14
  ```
16
15
 
17
- And then execute:
18
-
19
- $ bundle
20
-
21
- Or install it yourself as:
22
-
23
- $ gem install pulsedive
24
-
25
16
  ## Usage
26
17
 
27
18
  ### As a Library
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/gem_tasks"
2
4
  require "rspec/core/rake_task"
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require "bundler/setup"
4
5
  require "pulsedive"
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require "pulsedive"
4
5
 
5
- Pulsedive::CLI::Main::start
6
+ Pulsedive::CLI::Main.start
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "pulsedive/api"
2
4
  require "pulsedive/error"
3
5
  require "pulsedive/client"
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "base64"
2
4
 
3
5
  module Pulsedive
4
6
  class Analyze < Client
5
- def add_to_queue(ioc, enrich = 1, probe = 1)
7
+ def add_to_queue(ioc, enrich: 1, probe: 1)
6
8
  params = {
7
9
  "ioc": Base64.strict_encode64(ioc),
8
10
  "enrich": enrich,
@@ -1,19 +1,29 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Pulsedive
2
4
  class API
3
-
4
5
  attr_reader :api_key
5
- attr_reader :indicator
6
- attr_reader :threat
7
- attr_reader :feed
8
- attr_reader :analyze
9
6
 
10
7
  def initialize(api_key = ENV["PULSEDIVE_API_KEY"])
11
8
  raise(ArgumentError, "'api_key' argument is required") unless api_key
12
9
 
13
- @indicator = Indicator.new(api_key)
14
- @threat = Threat.new(api_key)
15
- @feed = Feed.new(api_key)
16
- @analyze = Analyze.new(api_key)
10
+ @api_key = api_key
11
+ end
12
+
13
+ def indicator
14
+ @indicator ||= Indicator.new(api_key)
15
+ end
16
+
17
+ def threat
18
+ @threat ||= Threat.new(api_key)
19
+ end
20
+
21
+ def feed
22
+ @feed ||= Feed.new(api_key)
23
+ end
24
+
25
+ def analyze
26
+ @analyze ||= Analyze.new(api_key)
17
27
  end
18
28
 
19
29
  def search(params)
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "thor"
2
4
  require "json"
3
5
 
4
6
  module Pulsedive
5
7
  module CLI
6
8
  class Base < Thor
7
-
8
9
  class_option :API_KEY, type: :string
9
10
 
10
11
  no_commands do
@@ -16,7 +17,7 @@ module Pulsedive
16
17
  yield
17
18
  rescue ResponseError => e
18
19
  puts "Warning: #{e}"
19
- rescue ArgumentError => _
20
+ rescue ArgumentError => _e
20
21
  puts "Please provide your Pulsedive API key via --API_KEY or ENV['PULSEDIVE_API_KEY']"
21
22
  end
22
23
  end
@@ -116,7 +117,7 @@ module Pulsedive
116
117
  enrich = options[:enrich] || 1
117
118
  probe = options[:probe] || 1
118
119
  with_error_handling do
119
- json = api.analyze.add_to_queue(ioc, enrich, probe)
120
+ json = api.analyze.add_to_queue(ioc, enrich: enrich, probe: probe)
120
121
  puts JSON.pretty_generate(json)
121
122
  end
122
123
  end
@@ -1,14 +1,14 @@
1
- require 'net/https'
2
- require 'active_support'
3
- require 'active_support/core_ext/hash'
1
+ # frozen_string_literal: true
2
+
3
+ require "net/https"
4
+ require "uri"
4
5
 
5
6
  module Pulsedive
6
7
  class Client
7
-
8
8
  attr_reader :api_key
9
9
 
10
- HOST = "pulsedive.com".freeze
11
- URL = "https://#{HOST}".freeze
10
+ HOST = "pulsedive.com"
11
+ URL = "https://#{HOST}"
12
12
 
13
13
  def initialize(api_key)
14
14
  @api_key = api_key
@@ -24,8 +24,8 @@ module Pulsedive
24
24
  if proxy = ENV["HTTPS_PROXY"] || ENV["https_proxy"]
25
25
  uri = URI(proxy)
26
26
  {
27
- proxy_address: uri.hostname,
28
- proxy_port: uri.port,
27
+ proxy_address: uri.hostname,
28
+ proxy_port: uri.port,
29
29
  proxy_from_env: false,
30
30
  use_ssl: true
31
31
  }
@@ -37,16 +37,14 @@ module Pulsedive
37
37
  def request(req)
38
38
  Net::HTTP.start(HOST, 443, https_options) do |http|
39
39
  response = http.request(req)
40
- if response.code == '200'
41
- json = JSON.parse(response.body)
42
- if json["error"]
43
- raise(ResponseError, json["error"])
44
- else
45
- yield json
46
- end
47
- else
48
- raise(ResponseError, "unsupported response code returned: #{response.code}")
40
+ if response.code != "200"
41
+ raise(ResponseError, "Unsupported response code returned: #{response.code}")
49
42
  end
43
+
44
+ json = JSON.parse(response.body)
45
+ raise(ResponseError, json["error"]) if json["error"]
46
+
47
+ yield json
50
48
  end
51
49
  end
52
50
 
@@ -54,12 +52,12 @@ module Pulsedive
54
52
  params["key"] = api_key
55
53
 
56
54
  url = url_for(path)
57
- url.query = params.to_query
55
+ url.query = URI.encode_www_form(params)
58
56
  get = Net::HTTP::Get.new(url)
59
57
  request(get, &block)
60
58
  end
61
59
 
62
- def post(path, params , &block)
60
+ def post(path, params, &block)
63
61
  params["key"] = api_key
64
62
 
65
63
  post = Net::HTTP::Post.new(url_for(path))
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Pulsedive
2
4
  class ResponseError < StandardError; end
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Pulsedive
2
4
  class Feed < Client
3
5
  def get_by_id(fid)
@@ -7,7 +9,7 @@ module Pulsedive
7
9
  get("/api/info.php", params) { |json| json }
8
10
  end
9
11
 
10
- def get_linked_indicators_by_id(fid, page = 0)
12
+ def get_linked_indicators_by_id(fid, page: 0)
11
13
  params = {
12
14
  "fid": fid,
13
15
  "get": "links",
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Pulsedive
2
4
  class Indicator < Client
3
-
4
- def get_by_id(iid, schema = 1)
5
+ def get_by_id(iid, schema: 1)
5
6
  params = {
6
7
  "iid": iid,
7
8
  "schema": schema
@@ -16,7 +17,7 @@ module Pulsedive
16
17
  get("/api/info.php", params) { |json| json }
17
18
  end
18
19
 
19
- def get_links_by_id(iid, page = 0)
20
+ def get_links_by_id(iid, page: 0)
20
21
  params = {
21
22
  "iid": iid,
22
23
  "get": "links",
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Pulsedive
2
4
  class Search < Client
3
- def search(params)
5
+ def search(**params)
4
6
  get("/api/search.php", params) { |json| json }
5
7
  end
6
8
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Pulsedive
2
4
  class Threat < Client
3
5
  def get_by_id(tid)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Pulsedive
2
- VERSION = "0.1.3".freeze
4
+ VERSION = "0.1.4"
3
5
  end
@@ -1,4 +1,6 @@
1
- lib = File.expand_path("../lib", __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require "pulsedive/version"
4
6
 
@@ -15,21 +17,19 @@ Gem::Specification.new do |spec|
15
17
 
16
18
  # Specify which files should be added to the gem when it is released.
17
19
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
18
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
20
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
19
21
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
22
  end
21
23
  spec.bindir = "exe"
22
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
25
  spec.require_paths = ["lib"]
24
26
 
25
- spec.add_development_dependency "bundler", "~> 1.16"
27
+ spec.add_development_dependency "bundler", "~> 2.0"
26
28
  spec.add_development_dependency "coveralls", "~> 0.8"
27
- spec.add_development_dependency "dotenv", "~> 2.5"
28
- spec.add_development_dependency "rake", "~> 10.0"
29
- spec.add_development_dependency "rspec", "~> 3.0"
30
- spec.add_development_dependency "vcr", "~> 4.0"
31
- spec.add_development_dependency "webmock", "~> 3.4"
29
+ spec.add_development_dependency "rake", "~> 13.0"
30
+ spec.add_development_dependency "rspec", "~> 3.9"
31
+ spec.add_development_dependency "vcr", "~> 5.0"
32
+ spec.add_development_dependency "webmock", "~> 3.7"
32
33
 
33
- spec.add_runtime_dependency "activesupport", "~> 5.2"
34
- spec.add_runtime_dependency "thor", "~> 0.19"
34
+ spec.add_runtime_dependency "thor", "~> 0.20"
35
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pulsedive
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manabu Niseki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-12 00:00:00.000000000 Z
11
+ date: 2019-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
19
+ version: '2.0'
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: '1.16'
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: coveralls
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,104 +38,76 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.8'
41
- - !ruby/object:Gem::Dependency
42
- name: dotenv
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '2.5'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '2.5'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rake
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '10.0'
47
+ version: '13.0'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '10.0'
54
+ version: '13.0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rspec
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '3.0'
61
+ version: '3.9'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '3.0'
68
+ version: '3.9'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: vcr
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: '4.0'
75
+ version: '5.0'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: '4.0'
82
+ version: '5.0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: webmock
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: '3.4'
89
+ version: '3.7'
104
90
  type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
- version: '3.4'
111
- - !ruby/object:Gem::Dependency
112
- name: activesupport
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '5.2'
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '5.2'
96
+ version: '3.7'
125
97
  - !ruby/object:Gem::Dependency
126
98
  name: thor
127
99
  requirement: !ruby/object:Gem::Requirement
128
100
  requirements:
129
101
  - - "~>"
130
102
  - !ruby/object:Gem::Version
131
- version: '0.19'
103
+ version: '0.20'
132
104
  type: :runtime
133
105
  prerelease: false
134
106
  version_requirements: !ruby/object:Gem::Requirement
135
107
  requirements:
136
108
  - - "~>"
137
109
  - !ruby/object:Gem::Version
138
- version: '0.19'
110
+ version: '0.20'
139
111
  description: Ruby library for Pulsedive API
140
112
  email:
141
113
  - manabu.niseki@gmail.com
@@ -144,7 +116,6 @@ executables:
144
116
  extensions: []
145
117
  extra_rdoc_files: []
146
118
  files:
147
- - ".codeclimae.yml"
148
119
  - ".gitignore"
149
120
  - ".rspec"
150
121
  - ".travis.yml"
@@ -164,7 +135,6 @@ files:
164
135
  - lib/pulsedive/error.rb
165
136
  - lib/pulsedive/feed.rb
166
137
  - lib/pulsedive/indicator.rb
167
- - lib/pulsedive/response.rb
168
138
  - lib/pulsedive/search.rb
169
139
  - lib/pulsedive/threat.rb
170
140
  - lib/pulsedive/version.rb
@@ -188,8 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
158
  - !ruby/object:Gem::Version
189
159
  version: '0'
190
160
  requirements: []
191
- rubyforge_project:
192
- rubygems_version: 2.7.6
161
+ rubygems_version: 3.0.3
193
162
  signing_key:
194
163
  specification_version: 4
195
164
  summary: Ruby library for Pulsedive API
@@ -1,13 +0,0 @@
1
-
2
- version: "2"
3
- prepare:
4
- fetch:
5
- - url: "https://raw.githubusercontent.com/janlelis/relaxed.ruby.style/master/.rubocop.yml"
6
- path: "alternate-rubocop-path.yml"
7
- plugins:
8
- rubocop:
9
- enabled: true
10
- config:
11
- file: "alternate-rubocop-path.yml"
12
- exclude_patterns:
13
- - "spec/**/*"
@@ -1,8 +0,0 @@
1
- module Pulsedive
2
- class Response
3
- include Enumerable
4
- def initialize(client, params)
5
-
6
- end
7
- end
8
- end