lens 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 10f546261d6a085dbc5a3f8697d5353f90cb99ea
4
- data.tar.gz: e2aa9893e2c0cf249d3924f16f376cdb8afa0b12
3
+ metadata.gz: a012ff1b501e256ecf5d23cd85ddbab93691ec19
4
+ data.tar.gz: bca5e5234778aa9affe85d7f93a40897a4b8c752
5
5
  SHA512:
6
- metadata.gz: 79a3b8440a837c148818c90f34b2cf1e5899c39a15c16a7cbb728166f37c703c2a2d40f46ea76a2799612ab6cd3f5724ca850f8101534e11f49fdad9c7b2a01f
7
- data.tar.gz: d5fa938e9c2b2d82c37265ac5a14e9b4479627d4043d2bf4035ecc9bf61ed02b223c4cef64b8c8eca0dce61daac699dff6a5199e4cb9871c283567327576861f
6
+ metadata.gz: bb648a4b48e3111a157ed48553fba8f88ca266f614d16814798c62ca3df61e3f70c1b338bc077244e0e325d029e13331ab99f5e6d08d674d5e9b492048af89ca
7
+ data.tar.gz: c020252259fa32e042c5654918e5d7cb3712a9d0138be712151913dfe2a7100fe0d9ee36397c28ec6afaf38755288bcf2d1b6f19aec2e04c7cc998fed780c448
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lens (0.0.1)
4
+ lens (0.0.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -67,7 +67,7 @@ GEM
67
67
  activesupport (= 4.0.3)
68
68
  rake (>= 0.8.7)
69
69
  thor (>= 0.18.1, < 2.0)
70
- rake (10.3.2)
70
+ rake (0.9.6)
71
71
  rspec (3.2.0)
72
72
  rspec-core (~> 3.2.0)
73
73
  rspec-expectations (~> 3.2.0)
@@ -106,7 +106,7 @@ DEPENDENCIES
106
106
  bundler (~> 1.6)
107
107
  lens!
108
108
  pry (~> 0.10)
109
- pry-nav
109
+ pry-nav (~> 0)
110
110
  rails (>= 3.0)
111
- rake
112
- rspec (~> 3.2.0)
111
+ rake (~> 0)
112
+ rspec (~> 3.2)
@@ -1,9 +1,9 @@
1
1
  module Lens
2
2
  class Configuration
3
- attr_accessor :app_id, :secret, :protocol, :host, :port
3
+ attr_accessor :app_key, :secret, :protocol, :host, :port
4
4
 
5
5
  def protocol
6
- 'https'
6
+ @protocol || default_protocol
7
7
  end
8
8
 
9
9
  def host
@@ -21,5 +21,9 @@ module Lens
21
21
  def default_host
22
22
  'lens.coub.com'
23
23
  end
24
+
25
+ def default_protocol
26
+ 'https'
27
+ end
24
28
  end
25
29
  end
data/lib/lens/core.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "lens/version"
2
2
  require "lens/configuration"
3
3
  require "lens/sender"
4
+ require "lens/event_formatter"
4
5
  require "lens/trace"
5
6
 
6
7
  module Lens
@@ -0,0 +1,38 @@
1
+ module Lens
2
+ class EventFormatter
3
+ def initialize(event, records)
4
+ @event = event
5
+ @records = records
6
+ end
7
+
8
+ def json_formatted
9
+ formatted.to_json
10
+ end
11
+
12
+ def formatted
13
+ @formatted ||= { data: event_data }
14
+ end
15
+
16
+ private
17
+
18
+ def event_payload
19
+ @event_payload ||= @event.payload
20
+ end
21
+
22
+ def event_data
23
+ @event_data ||=
24
+ {
25
+ action: event_payload[:action],
26
+ controller: event_payload[:controller],
27
+ params: event_payload[:params],
28
+ method: event_payload[:method],
29
+ url: event_payload[:path],
30
+ records: @records,
31
+ duration: @event.duration,
32
+ meta: {
33
+ client_version: VERSION
34
+ }
35
+ }
36
+ end
37
+ end
38
+ end
data/lib/lens/railtie.rb CHANGED
@@ -18,12 +18,6 @@ module Lens
18
18
  Trace.current.add(event)
19
19
  end
20
20
 
21
- ActiveSupport::Notifications.subscribe('net_http.request') do |*args|
22
- next unless Trace.current
23
- event = ActiveSupport::Notifications::Event.new(*args)
24
- Trace.current.add(event)
25
- end
26
-
27
21
  ActiveSupport::Notifications.subscribe('process_action.action_controller') do |*args|
28
22
  next unless Trace.current
29
23
  event = ActiveSupport::Notifications::Event.new(*args)
data/lib/lens/sender.rb CHANGED
@@ -1,8 +1,9 @@
1
1
  require 'pry'
2
+ require 'json'
2
3
 
3
4
  module Lens
4
5
  class Sender
5
- NOTICES_URI = 'api/v1/record'
6
+ NOTICES_URI = 'api/v1/data/rec'
6
7
  HTTP_ERRORS = [Timeout::Error,
7
8
  Errno::EINVAL,
8
9
  Errno::ECONNRESET,
@@ -13,8 +14,7 @@ module Lens
13
14
  Errno::ECONNREFUSED].freeze
14
15
 
15
16
  def initialize(options = {})
16
- [ :app_id,
17
- :secret,
17
+ [ :app_key,
18
18
  :protocol,
19
19
  :host,
20
20
  :port
@@ -24,11 +24,10 @@ module Lens
24
24
  end
25
25
 
26
26
  def send_to_lens(data)
27
- response = send_request(url.path, data, {'X-API-Key' => secret})
27
+ response = send_request(url.path, data)
28
28
  end
29
29
 
30
- attr_reader :app_id,
31
- :secret,
30
+ attr_reader :app_key,
32
31
  :protocol,
33
32
  :host,
34
33
  :port
@@ -42,12 +41,12 @@ module Lens
42
41
  def setup_http_connection
43
42
  Net::HTTP.new(url.host, url.port)
44
43
  rescue => e
45
- log(:error, "[Honeybadger::Sender#setup_http_connection] Failure initializing the HTTP connection.\nError: #{e.class} - #{e.message}\nBacktrace:\n#{e.backtrace.join("\n\t")}")
44
+ log(:error, "[Lens::Sender#setup_http_connection] Failure initializing the HTTP connection.\nError: #{e.class} - #{e.message}\nBacktrace:\n#{e.backtrace.join("\n\t")}")
46
45
  raise e
47
46
  end
48
47
 
49
48
  def send_request(path, data, headers = {})
50
- http_connection.post(path, data, http_headers(headers))
49
+ http_connection.post(path, data.to_json, http_headers(headers))
51
50
  rescue *HTTP_ERRORS => e
52
51
  raise e
53
52
  nil
@@ -56,7 +55,8 @@ module Lens
56
55
  def http_headers(headers=nil)
57
56
  {}.tap do |hash|
58
57
  hash.merge!(HEADERS)
59
- hash.merge!({'X-API-Key' => secret})
58
+ hash.merge!({'X-Auth-Token' => app_key})
59
+ hash.merge!({'Content-Type' =>'application/json'})
60
60
  hash.merge!(headers) if headers
61
61
  end
62
62
  end
data/lib/lens/trace.rb CHANGED
@@ -2,31 +2,45 @@ require 'rails'
2
2
 
3
3
  module Lens
4
4
  class Trace
5
- attr_reader :id, :duration
6
-
7
- def self.current
8
- Thread.current[:__lens_trace]
9
- end
10
-
11
- def self.create(id)
12
- Thread.current[:__lens_trace] = new(id)
13
- end
14
-
15
5
  def initialize(id)
16
6
  @id = id
17
- @events = []
18
- @duration = 0
7
+ @data = []
19
8
  end
20
9
 
21
10
  def add(event)
22
- @events.push event
11
+ @data.push event.payload
23
12
  end
24
13
 
25
14
  def complete(event)
26
- @duration = event.duration
27
- Rails.logger.info "all [LENS] >>> #{@events}"
28
- Rails.logger.info "last [LENS] >>> #{event}"
15
+ formatted_data = Lens::EventFormatter.new(event, @data).json_formatted
16
+ log(data)
17
+ send(data)
29
18
  Thread.current[:__lens_trace] = nil
30
19
  end
20
+
21
+ private
22
+
23
+ def send(data)
24
+ log(data)
25
+ Lens.sender.send_to_lens(data)
26
+ end
27
+
28
+ def log(data)
29
+ Rails.logger.info "all [LENS] >>> #{data}" if verbose?
30
+ end
31
+
32
+ def verbose?
33
+ true
34
+ end
35
+ end
36
+
37
+ class << Trace
38
+ def current
39
+ Thread.current[:__lens_trace]
40
+ end
41
+
42
+ def create(id)
43
+ Thread.current[:__lens_trace] = new(id)
44
+ end
31
45
  end
32
46
  end
data/lib/lens/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lens
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lens::EventFormatter do
4
+ let(:event) { double(payload: {}, duration: 2.33) }
5
+ let(:records) { [] }
6
+ let(:formatter) { Lens::EventFormatter.new(event, records) }
7
+
8
+ describe "#formatted" do
9
+ subject { formatter.formatted }
10
+
11
+ it "returns hash" do
12
+ expect(subject).to be_a(Hash)
13
+ end
14
+
15
+ it "has data key" do
16
+ expect(subject).to have_key(:data)
17
+ end
18
+
19
+ it "data key is not empty" do
20
+ expect(subject[:data]).to_not be_empty
21
+ end
22
+ end
23
+ end
@@ -2,12 +2,14 @@ module Helpers
2
2
  def stub_http(options = {})
3
3
  response = options[:response] || Net::HTTPSuccess.new('1.2', '200', 'OK')
4
4
  response.stub(:body => options[:body] || '{"id":"1234"}')
5
- http = double(:post => response,
6
- :read_timeout= => nil,
7
- :open_timeout= => nil,
8
- :ca_file= => nil,
9
- :verify_mode= => nil,
10
- :use_ssl= => nil)
5
+ http = double(
6
+ :post => response,
7
+ :read_timeout= => nil,
8
+ :open_timeout= => nil,
9
+ :ca_file= => nil,
10
+ :verify_mode= => nil,
11
+ :use_ssl= => nil
12
+ )
11
13
  Net::HTTP.stub(:new).and_return(http)
12
14
  http
13
15
  end
@@ -15,7 +17,7 @@ module Helpers
15
17
  def reset_config
16
18
  Lens.configuration = nil
17
19
  Lens.configure do |config|
18
- config.app_id = 'app_key_123'
20
+ config.app_key = 'app_key_123'
19
21
  config.secret = 'abc123'
20
22
  end
21
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lens
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - kgorin
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-15 00:00:00.000000000 Z
12
+ date: 2015-06-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -99,10 +99,12 @@ files:
99
99
  - lib/lens.rb
100
100
  - lib/lens/configuration.rb
101
101
  - lib/lens/core.rb
102
+ - lib/lens/event_formatter.rb
102
103
  - lib/lens/railtie.rb
103
104
  - lib/lens/sender.rb
104
105
  - lib/lens/trace.rb
105
106
  - lib/lens/version.rb
107
+ - spec/lens/event_formatter_spec.rb
106
108
  - spec/lens/sender_spec.rb
107
109
  - spec/spec_helper.rb
108
110
  - spec/support/helpers.rb
@@ -131,6 +133,7 @@ signing_key:
131
133
  specification_version: 4
132
134
  summary: Gem to send Rails request stats
133
135
  test_files:
136
+ - spec/lens/event_formatter_spec.rb
134
137
  - spec/lens/sender_spec.rb
135
138
  - spec/spec_helper.rb
136
139
  - spec/support/helpers.rb