seer-rb 0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 74e195941b3642297ccac3ca04b9ba165286db6f
4
+ data.tar.gz: 5e6db0e02a5e50914c29e78bbfab9e909af0ed27
5
+ SHA512:
6
+ metadata.gz: 91eba63a80bb0e2b6fcf4654359b356ab085c519be6241bf5a5dd89a787c066752e0a610a8d19ec31f7dea03e8124c97f4232f5c5594518f06ba11c4b3909525
7
+ data.tar.gz: 6d8de23a8cd6f69658d9b35e821b25821a22fc3c46ed296671f09c443eb9215ef0bbfbc90a27e756a7d9c71b40ae48204bf5c94da568e3c59c6f27824dfacf22
data/README.md ADDED
@@ -0,0 +1,61 @@
1
+ # seer-rb
2
+
3
+ Ruby SDK for SEER API
4
+
5
+ ## Example
6
+
7
+ ### Host query
8
+
9
+ #### Register with API token
10
+
11
+ ```ruby
12
+ seer = Seer::Hosts.new(token: api_token, host: api_host)
13
+ ```
14
+
15
+ #### Get host information by IP
16
+
17
+ ```ruby
18
+ host = seer.ip(ip)
19
+ ```
20
+
21
+ #### Get host information by custom search syntax
22
+
23
+ ```ruby
24
+ host = seer.search(query, return_field)
25
+ ```
26
+
27
+ #### Get hosts by port
28
+
29
+ ```ruby
30
+ hosts = seer.port(port)
31
+ ```
32
+
33
+ ### Domain query
34
+
35
+ #### Register with API token
36
+
37
+ ```ruby
38
+ seer = Seer::DNS.new(token: api_token, host: api_host)
39
+ ```
40
+
41
+ #### Get type A record by IP
42
+
43
+ ```ruby
44
+ seer.ip(ip)
45
+ ```
46
+
47
+ #### Get type A record by domain
48
+
49
+ ```ruby
50
+ seer.domain(domain)
51
+ ```
52
+
53
+ ## Installation
54
+
55
+ ```
56
+ gem install seer-rb
57
+ ```
58
+
59
+ ```
60
+ gem "seer-rb"
61
+ ```
@@ -0,0 +1,12 @@
1
+ # Standard libs
2
+ require 'json'
3
+
4
+ # Third party libs
5
+ require 'rest-client'
6
+
7
+ # Custom libs
8
+ require 'seer/dns'
9
+ require 'seer/hosts'
10
+ require 'seer/org'
11
+ require 'seer/status'
12
+ require 'seer/version'
data/lib/seer.rb ADDED
@@ -0,0 +1,22 @@
1
+ require 'environment'
2
+
3
+ # SEER API Wrapper
4
+ # @author ztz <ztz@ztz.me>
5
+ # @version 0.1
6
+ module Seer
7
+ # Send request to SEER API
8
+ # @param url [String] Request url
9
+ # @param body [String] Request body
10
+ # @param header [Hash] Request hash
11
+ # @return [Hash]
12
+ def request(url, body, header)
13
+ response = RestClient.post(
14
+ url,
15
+ JSON.dump(body),
16
+ header
17
+ )
18
+ JSON.load response
19
+ end
20
+
21
+ module_function :request
22
+ end
data/lib/seer/dns.rb ADDED
@@ -0,0 +1,35 @@
1
+ module Seer
2
+ # DNS API controller
3
+ class DNS
4
+ # Initialize a DNS object
5
+ # @param token [string] API token
6
+ # @param version [string] API version you want use (defaut 1)
7
+ # @param host [string] API host
8
+ def initialize(token: '', version: '1', host: '')
9
+ @host = host + '/dns'
10
+ @header = {
11
+ content_type: 'application/json',
12
+ accept: "application/seer+json;version=#{version}",
13
+ x_seer_token: token
14
+ }
15
+ end
16
+
17
+ # Get ip from domain
18
+ # @param domain [string]
19
+ # @return [Hash] Result
20
+ def domain(domain)
21
+ body = { domain: domain }
22
+ url = @host + '/domain'
23
+ Seer.request(url, body, @header)
24
+ end
25
+
26
+ # Get domain by ip
27
+ # @param ip [String]
28
+ # @return [Hash] Result
29
+ def ip(ip)
30
+ body = { ip: ip }
31
+ url = @host + '/ip'
32
+ Seer.request(url, body, @header)
33
+ end
34
+ end
35
+ end
data/lib/seer/hosts.rb ADDED
@@ -0,0 +1,93 @@
1
+ module Seer
2
+ # Hosts API controller
3
+ class Hosts
4
+ # Initialize a Hosts object
5
+ # @param token [string] API token
6
+ # @param version [string] API version you want use (defaut 1)
7
+ # @param host [string] API host
8
+ def initialize(token: '', version: '1', host: '')
9
+ @host = host + '/hosts'
10
+ @header = {
11
+ content_type: 'application/json',
12
+ accept: "application/seer+json;version=#{version}",
13
+ x_seer_token: token
14
+ }
15
+ end
16
+
17
+ # Get host by ip
18
+ # @param ip [String] IP Address
19
+ # @param minify [Boolean] Only return IP address (default false)
20
+ # @return [Hash] Result
21
+ def ip(ip, minify: false)
22
+ body = {
23
+ ip: ip,
24
+ minify: minify
25
+ }
26
+ url = @host + '/ip'
27
+
28
+ Seer.request(url, body, @header)
29
+ end
30
+
31
+ # Get hosts by port
32
+ # @param port [Fixnum] Port you want to search
33
+ # @param page [Fixnum] The page of results
34
+ # @param minify [Boolean] Only return IP address (default false)
35
+ # @return [Hash] Result
36
+ def port(port, page: 1, minify: false)
37
+ body = {
38
+ port: port,
39
+ page: page,
40
+ minify: minify
41
+ }
42
+ url = @host + '/port'
43
+
44
+ Seer.request(url, body, @header)
45
+ end
46
+
47
+ # Get hosts by service
48
+ # @param service [String] Service you want to search
49
+ # @param page [Fixnum] The page of results
50
+ # @param minify [Boolean] Only return IP address (default false)
51
+ # @return [Hash] Result
52
+ def service(service, page: 1, minify: false)
53
+ body = {
54
+ service: service,
55
+ page: page,
56
+ minify: minify
57
+ }
58
+ url = @host + '/service'
59
+
60
+ Seer.request(url, body, @header)
61
+ end
62
+
63
+ # Get hosts by custom search
64
+ # @param query [String] Custom query
65
+ # @param page [Fixnum] The page of results
66
+ # @param minify [Boolean] Only return IP address (default false)
67
+ # @return [Hash] Result
68
+ def search(query, page: 1, minify: false)
69
+ body = {
70
+ query: query,
71
+ page: page,
72
+ minify: minify
73
+ }
74
+ url = @host + '/search'
75
+
76
+ Seer.request(url, body, @header)
77
+ end
78
+
79
+ # Aggregations by query and field
80
+ # @param query [String] Custom query
81
+ # @param fields [String] The field you want to aggs
82
+ # @return [Hash] Result
83
+ def aggs(query, fields)
84
+ body = {
85
+ query: query,
86
+ fields: fields
87
+ }
88
+ url = @host + '/aggs'
89
+
90
+ Seer.request(url, body, @header)
91
+ end
92
+ end
93
+ end
data/lib/seer/org.rb ADDED
@@ -0,0 +1,37 @@
1
+ module Seer
2
+ # ORG API controller
3
+ class Org
4
+ # Initialize a Org object
5
+ # @param token [string] API token
6
+ # @param version [string] :version ('1') API version you want use (defaut 1)
7
+ # @param host [string] API host (default http://seer.intra.nsfocus.com:8000/api)
8
+ def initialize(token: '', version: '1', host: '')
9
+ @host = host + '/org'
10
+ @header = {
11
+ content_type: 'application/json',
12
+ accept: "application/seer+json;version=#{version}",
13
+ x_seer_token: token
14
+ }
15
+ end
16
+
17
+ # Get organization by ip
18
+ # @param ip [String] IP address for search
19
+ # @return [Hash] Result
20
+ def ip(ip)
21
+ body = { ip: ip }
22
+ url = @host + '/ip'
23
+
24
+ Seer.request(url, body, @header)
25
+ end
26
+
27
+ # Get organization by AS number
28
+ # @param asn [Fixnum] AS number
29
+ # @return [Hash] Result
30
+ def asn(asn)
31
+ body = { asn: asn }
32
+ url = @host + '/asn'
33
+
34
+ Seer.request(url, body, @header)
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,32 @@
1
+ module Seer
2
+ # Status API controller
3
+ class Status
4
+ # Initialize a Status object
5
+ # @param token [string] API token
6
+ # @param version [string] :version ('1') API version you want use (defaut 1)
7
+ # @param host [string] API host (default http://seer.intra.nsfocus.com:8000/api)
8
+ def initialize(token: '', version: '1', host: '')
9
+ @host = host + '/status'
10
+ @header = {
11
+ content_type: 'application/json',
12
+ accept: "application/seer+json;version=#{version}",
13
+ x_seer_token: token
14
+ }
15
+ end
16
+
17
+ # Get SEER supported service
18
+ # @param service [String] Return all service that SEER supported
19
+ # @return [Hash] Result
20
+ def service(service)
21
+ body = { service: service }
22
+ url = @host + '/service'
23
+
24
+ response = RestClient.post(
25
+ url,
26
+ JSON.dump(body),
27
+ @header
28
+ )
29
+ JSON.load response
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,20 @@
1
+ module Seer
2
+ # Version
3
+ class Version
4
+ # Major version
5
+ MAJOR = 0
6
+
7
+ # Minor version
8
+ MINOR = 1
9
+
10
+ class << self
11
+ # @return [String]
12
+ def to_s
13
+ [MAJOR, MINOR].compact.join('.')
14
+ end
15
+ end
16
+
17
+ # Version
18
+ VERSION = Version.to_s
19
+ end
20
+ end
data/seer-rb.gemspec ADDED
@@ -0,0 +1,14 @@
1
+ require File.expand_path('../lib/seer/version.rb', __FILE__)
2
+
3
+ Gem::Specification.new do |s|
4
+ s.author = 'ztz'
5
+ s.summary = 'Ruby SDK for SEER API'
6
+ s.description = 'Ruby SDK for SEER API'
7
+ s.email = %w(seer@nsfocus.com)
8
+ s.files = Dir['README.md', 'seer-rb.gemspec', 'lib/**/*']
9
+ s.homepage = 'https://github.com/seer-project/seer-rb'
10
+ s.license = 'MIT'
11
+ s.name = 'seer-rb'
12
+ s.require_path = 'lib'
13
+ s.version = Seer::Version
14
+ end
metadata ADDED
@@ -0,0 +1,54 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: seer-rb
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - ztz
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-26 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Ruby SDK for SEER API
14
+ email:
15
+ - seer@nsfocus.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - README.md
21
+ - lib/environment.rb
22
+ - lib/seer.rb
23
+ - lib/seer/dns.rb
24
+ - lib/seer/hosts.rb
25
+ - lib/seer/org.rb
26
+ - lib/seer/status.rb
27
+ - lib/seer/version.rb
28
+ - seer-rb.gemspec
29
+ homepage: https://github.com/seer-project/seer-rb
30
+ licenses:
31
+ - MIT
32
+ metadata: {}
33
+ post_install_message:
34
+ rdoc_options: []
35
+ require_paths:
36
+ - lib
37
+ required_ruby_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ required_rubygems_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ requirements: []
48
+ rubyforge_project:
49
+ rubygems_version: 2.4.8
50
+ signing_key:
51
+ specification_version: 4
52
+ summary: Ruby SDK for SEER API
53
+ test_files: []
54
+ has_rdoc: