changelog_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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/changelog_client.rb +75 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 232a016ed930c4dcd338b510cca864d3363316d6
4
+ data.tar.gz: 643736164435667d915eaa73744ab564164299c2
5
+ SHA512:
6
+ metadata.gz: c1d23f9af2b297c39221db65dd28b45516527f895136df4691a87c698e7065a6edddd5a38614437353f257c76300c8bcd196bdfed313380deb60d63c6ce4f9fb
7
+ data.tar.gz: e92d7e7abbfc671b07d0b50e0fb7f10c576ca0294e469b3acc41a65b590684737603000aeea62d57667c2aacb2c1d1a177ebc53b202915cbbae55732b98d3ecd
@@ -0,0 +1,75 @@
1
+ require 'json'
2
+ require 'net/http'
3
+ require 'uri'
4
+
5
+ SEVERITY = {
6
+ 'INFO' => 1,
7
+ 'NOTIFICATION' => 2,
8
+ 'WARNING' => 3,
9
+ 'ERROR' => 4,
10
+ 'CRITICAL' => 5 }
11
+
12
+ API_HOST = 'localhost'
13
+ API_PORT = '5000'
14
+
15
+ class ChangelogClient
16
+ def initialize(host = API_HOST, port = API_PORT)
17
+ @host = host
18
+ @port = port
19
+ @endpoint = '/api/events'
20
+ end
21
+
22
+ def deflate_severity(severity)
23
+ return severity if severity.is_a? Integer
24
+ SEVERITY[severity]
25
+ end
26
+
27
+ # Sends a message to the Changelog server
28
+ #
29
+ # Example:
30
+ # >> client = ChangelogClient.new("host", "port")
31
+ # >> client.send("This is the message", "INFO", "Mycategory")
32
+ # => true
33
+ #
34
+ # Arguments:
35
+ # message: (String)
36
+ # severity: (String, Integer)
37
+ # category: (String)
38
+ # extra_headers: (Hash)
39
+ def send(message, severity, category = 'misc', extra_headers = nil)
40
+ http = Net::HTTP.new(@host, server_port)
41
+ headers = {
42
+ 'User-Agent' => "ccp/client v.#{Gem.loaded_specs['changelog_client'].version.to_s}",
43
+ 'Content-Type' => 'application/json'
44
+ }
45
+
46
+ headers << extra_headers if extra_headers
47
+
48
+ data = {
49
+ 'criticality' => deflate_severity(severity),
50
+ 'unix_timestamp' => ::Time.now.to_i,
51
+ 'category' => category,
52
+ 'description' => message
53
+ }
54
+ begin
55
+ response = http.post(@endpoint, JSON.generate(data), headers)
56
+ if response.body.include? '"OK"'
57
+ return true
58
+ else
59
+ puts 'Failed to send changelog message to server'
60
+ return false
61
+ end
62
+ rescue Exception => e
63
+ puts "Failed to send changelog message to server: #{e.message}"
64
+ return false
65
+ end
66
+ end
67
+
68
+ def server_port
69
+ if @port == 80
70
+ nil
71
+ else
72
+ @port
73
+ end
74
+ end
75
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: changelog_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Adam Papai
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-01 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A client library for the Changelog server
14
+ email: wooh@wooh.hu
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/changelog_client.rb
20
+ homepage: https://github.com/woohgit/changelog_client
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.3.0
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: A ruby client for Changelog
44
+ test_files: []