eep_client 0.0.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.
- checksums.yaml +7 -0
- data/lib/eep_client.rb +104 -0
- data/lib/eep_client/const.rb +15 -0
- data/lib/eep_client/response.rb +49 -0
- metadata +61 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a0f27b56c72f0be65e77fab3edee05c69a69f1c7
|
4
|
+
data.tar.gz: 4f1714fb51a69cda64e381126ef38d873dd4afd9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ab6f685df7ddd049f674ea1c26f41e406c3e1e4a2980e3bdb78bde1f8389db3578d9e7208bc491819d9a0eb8165710dc6b0302e18b0a8c177803a6dc4d7d90e7
|
7
|
+
data.tar.gz: 03a8577eee00ab6588b481cbe33c3b8eef8919ad5be317bf1dc95cb7a00a595f8b2cfeb103f4d09af15f968658ca94aa99c05b7059f831a7adb057d08db3a1f8
|
data/lib/eep_client.rb
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'time'
|
2
|
+
require 'net/http'
|
3
|
+
require 'net/https'
|
4
|
+
require 'json'
|
5
|
+
require_relative 'eep_client/const'
|
6
|
+
require_relative 'eep_client/response'
|
7
|
+
|
8
|
+
## some constants
|
9
|
+
EVENT = 'event'
|
10
|
+
CLEAR = 'clear'
|
11
|
+
OK = 'ok'
|
12
|
+
|
13
|
+
# urls
|
14
|
+
BASE_URL = 'https://bender.lab.pdist.net'
|
15
|
+
BASE_RESOURCE = '/api/v1/'
|
16
|
+
EVENT_RESOURCE = BASE_RESOURCE + EVENT
|
17
|
+
CLEAR_RESOURCE = BASE_RESOURCE + CLEAR
|
18
|
+
|
19
|
+
# http config
|
20
|
+
POST = 'POST'
|
21
|
+
ACC_HDR = 'Accept'
|
22
|
+
CON_HDR = 'Content-type'
|
23
|
+
APP_JSON = 'application/json'
|
24
|
+
|
25
|
+
class EepClient
|
26
|
+
def initialize(api_token, options = { })
|
27
|
+
@api_token = api_token
|
28
|
+
@debug = options[:debug]
|
29
|
+
|
30
|
+
unless options[:no_send]
|
31
|
+
uri = URI(BASE_URL)
|
32
|
+
@http = Net::HTTP.new(uri.host, uri.port)
|
33
|
+
@http.use_ssl = true
|
34
|
+
@http.verify_mode = OpenSSL::SSL::VERIFY_NONE if options[:no_verify]
|
35
|
+
@http.set_debug_output($stdout) if @debug
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def send_event(event)
|
40
|
+
json = format_event(event)
|
41
|
+
if @debug
|
42
|
+
puts "sending event json:"
|
43
|
+
puts json
|
44
|
+
end
|
45
|
+
if @http
|
46
|
+
headers = { ACC_HDR => APP_JSON, CON_HDR => APP_JSON }
|
47
|
+
res = @http.send_request(POST, EVENT_RESOURCE, json, headers).body
|
48
|
+
Response.new_instance(JSON.parse(res))
|
49
|
+
else
|
50
|
+
Response.mock_event_ok
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def send_clear(clear)
|
55
|
+
json = format_clear(clear)
|
56
|
+
if @debug
|
57
|
+
puts "sending clear json:"
|
58
|
+
puts json
|
59
|
+
end
|
60
|
+
if @http
|
61
|
+
headers = { ACC_HDR => APP_JSON, CON_HDR => APP_JSON }
|
62
|
+
res = @http.send_request(POST, CLEAR_RESOURCE, json, headers).body
|
63
|
+
Response.new_instance(JSON.parse(res))
|
64
|
+
else
|
65
|
+
Response.mock_clear_ok
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
def format_data(type, data)
|
72
|
+
packet = {
|
73
|
+
api_token: @api_token,
|
74
|
+
type => data
|
75
|
+
}
|
76
|
+
|
77
|
+
if @debug
|
78
|
+
JSON.pretty_generate(packet)
|
79
|
+
else
|
80
|
+
JSON.generate(packet)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def format_event(data)
|
85
|
+
# event time attrs can take strings (iso8601 format), ints (unix epoch) or Time objects
|
86
|
+
[:creation_time, :last_time].each do |name|
|
87
|
+
val = data[name]
|
88
|
+
if val
|
89
|
+
case
|
90
|
+
when val.is_a?(Fixnum)
|
91
|
+
data[name] = Time.at(val).iso8601
|
92
|
+
when val.is_a?(Time)
|
93
|
+
data[name] = val.iso8601
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
format_data(:event, data)
|
98
|
+
end
|
99
|
+
|
100
|
+
def format_clear(data)
|
101
|
+
h = { :local_instance_id => data[:local_instance_id], :source_location => data[:source_location] }
|
102
|
+
format_data(:clear, h)
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class EepClient
|
2
|
+
module Const
|
3
|
+
# severities
|
4
|
+
SEV_INFO = 'info'
|
5
|
+
SEV_WARNING = 'warning'
|
6
|
+
SEV_ERROR = 'error'
|
7
|
+
SEV_CRITICAL = 'critical'
|
8
|
+
|
9
|
+
# priorities
|
10
|
+
PRI_NONE = 'none'
|
11
|
+
PRI_LOW = 'low'
|
12
|
+
PRI_MEDIUM = 'medium'
|
13
|
+
PRI_HIGH = 'high'
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
class EepClient
|
2
|
+
class Response
|
3
|
+
OK = 'ok'
|
4
|
+
MESSAGE = 'message'
|
5
|
+
STATUS = 'status'
|
6
|
+
ID = 'id'
|
7
|
+
MESSAGES = 'messages'
|
8
|
+
|
9
|
+
attr_reader :status
|
10
|
+
|
11
|
+
def initialize(options = { })
|
12
|
+
@status = options[STATUS]
|
13
|
+
@message = options[MESSAGE]
|
14
|
+
@id = options[ID]
|
15
|
+
@messages = options[MESSAGES]
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.new_instance(data)
|
19
|
+
if data.has_key? OK
|
20
|
+
OkResponse.new(data[OK])
|
21
|
+
else
|
22
|
+
ErrorResponse.new(data)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.mock_event_ok
|
27
|
+
OkResponse.new({ MESSAGE => 'event received', STATUS => 'unclassified', ID => 999 })
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.mock_clear_ok
|
31
|
+
OkResponse.new({ MESSAGE => 'event cleared', STATUS => 'unclassified', ID => 999 })
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class OkResponse < Response
|
36
|
+
attr_reader :message, :id
|
37
|
+
|
38
|
+
def to_s
|
39
|
+
"#{self.class.name} status: #@status, message: #@message, id: #@id"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
class ErrorResponse < Response
|
44
|
+
attr_reader :messages
|
45
|
+
def to_s
|
46
|
+
"#{self.class.name} status: #@status, err_messages: #{@messages.join(', ')}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
metadata
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: eep_client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mike Lewis
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-10-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: A client library for sending and clearing Events via the Event Enrichment
|
28
|
+
Platform (EEP) REST API
|
29
|
+
email: mike@eventenrichment.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- lib/eep_client.rb
|
35
|
+
- lib/eep_client/const.rb
|
36
|
+
- lib/eep_client/response.rb
|
37
|
+
homepage: http://rubygems.org/gems/eep_client
|
38
|
+
licenses:
|
39
|
+
- Apache License, Version 2.0
|
40
|
+
metadata: {}
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
require_paths:
|
44
|
+
- lib
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
requirements: []
|
56
|
+
rubyforge_project:
|
57
|
+
rubygems_version: 2.0.3
|
58
|
+
signing_key:
|
59
|
+
specification_version: 4
|
60
|
+
summary: Event Enrichment Platform (EEP) REST API client
|
61
|
+
test_files: []
|