hawkei 1.0.0 → 1.1.0

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: 519333f18c5cd49c3f527ccdcd32aab016ed0cab420b34fd6beea68846894da0
4
- data.tar.gz: 3ab8e90d94b056ea8c9e9193de8d43111263628e0c0435d4f12fb897af0e7831
3
+ metadata.gz: 893522c1632805ef73162ae330ff9d75b6d5bf478db747b8e8eb97007079fd26
4
+ data.tar.gz: afc3533d6b8145e67a8a749f2c8c862db1bba1bd5ad1ef2b30cc9a7459bfb9c6
5
5
  SHA512:
6
- metadata.gz: da169662f01c97bfadb06c1058803e6f63e9036301c94b7bf90a6728a24cc2c7b29368b97f706b791989554b3b916822d404c169560cf64e3f30041d3ad8e9ea
7
- data.tar.gz: ea4d6c964a1620361e7cfcbd5692a88d5f20cbb72494d13e637a08534d077822633517072c34240ea41da72d857fa9f5057030e525a4ed0643bae704306e647b
6
+ metadata.gz: c6f40b5d43f90c145517e017271ade3102e93dcec519643a912268745e5f5fca6d96cc54d551ca445393471aefb320f1961b96155050708912dc31269ffafe90
7
+ data.tar.gz: 695e5ff9f92f062adba51344d654aa205320df30d5cf33ae74990fac6a4cd929c3dd1cd8838ee9b5d6674fa505dcae6749d6a2a0e442c443d6f2f345afa93475
@@ -4,7 +4,7 @@ Metrics/LineLength:
4
4
  Max: 120
5
5
  Metrics/ClassLength:
6
6
  CountComments: false
7
- Max: 120
7
+ Max: 200
8
8
  Metrics/MethodLength:
9
9
  CountComments: false
10
10
  Max: 20
data/Makefile CHANGED
@@ -1,6 +1,9 @@
1
1
  export FORCE_COLOR = true
2
2
 
3
- .PHONY: lint test
3
+ .PHONY: lint test build
4
+
5
+ build:
6
+ @gem build hawkei.gemspec
4
7
 
5
8
  test:
6
9
  @bundle exec rspec spec/
data/README.md CHANGED
@@ -1,11 +1,12 @@
1
+ [![npm version](https://img.shields.io/gem/v/hawkei.svg?style=flat-square)](https://rubygems.org/gems/hawkei)
2
+ [![build status](https://img.shields.io/travis/hawkei-io/hawkei-ruby.svg?style=flat-square)](https://travis-ci.org/hawkei-io/hawkei-ruby)
3
+
1
4
  # Hawkei
2
5
 
3
6
  [Hawkei](https://hawkei.io) Ruby library
4
7
 
5
8
  Interact easily with our API using our Ruby library.
6
9
 
7
- [![Build Status](https://travis-ci.org/hawkei-io/hawkei-ruby.svg?branch=master)](https://travis-ci.org/hawkei-io/hawkei-ruby)
8
-
9
10
  ## Setup
10
11
 
11
12
  - [Start by creating an account](https://app.hawkei.io/registration)
@@ -10,6 +10,7 @@ require 'concurrent'
10
10
 
11
11
  # Base
12
12
  require 'hawkei/version'
13
+ require 'hawkei/const'
13
14
  require 'hawkei/formated_logger'
14
15
  require 'hawkei/library_name'
15
16
  require 'hawkei/util'
@@ -77,7 +78,11 @@ module Hawkei
77
78
  def track(name, payload = {}, options = {})
78
79
  return true unless configurations.enabled
79
80
 
80
- payload[:name] = name
81
+ payload = {
82
+ name: name,
83
+ type: 'track',
84
+ }.merge(payload)
85
+
81
86
  Hawkei::Plugins::Rails::Data.store_data if defined?(Hawkei::Plugins::Rails::Data)
82
87
 
83
88
  payload = Message.extended.merge(payload)
@@ -0,0 +1,8 @@
1
+ module Hawkei
2
+ module Const
3
+
4
+ SESSION_TRACKER_ID = '_hawkei_stid'.freeze
5
+ FOLLOW = '_hawkei_f'.freeze
6
+
7
+ end
8
+ end
@@ -11,6 +11,7 @@ module Hawkei
11
11
  message_id: SecureRandom.uuid,
12
12
  timestamp: Time.now.utc.iso8601(3),
13
13
  session_tracker_id: session_tracker_id,
14
+ auto_id: Hawkei::Store.get(:auto_id),
14
15
  )
15
16
  end
16
17
 
@@ -3,6 +3,7 @@ require 'uri'
3
3
  module Hawkei
4
4
  module Plugins
5
5
  module Rack
6
+
6
7
  ##
7
8
  # Hawkei \Plugins \Rack \Middleware
8
9
  #
@@ -19,11 +20,15 @@ module Hawkei
19
20
 
20
21
  store_tracker(request)
21
22
  store_request_data(request, env)
23
+ store_and_send_track_request(request)
22
24
 
23
25
  Hawkei::Plugins::Rails::MiddlewareData.store_data(request) if defined?(::Rails)
26
+
24
27
  status, headers, body = @app.call(env)
25
28
 
26
29
  write_cookie_session_tracker_id!(headers)
30
+ send_track_response(request, status)
31
+
27
32
  [status, headers, body]
28
33
  ensure
29
34
  Hawkei::Store.clear! unless env['hawkei_test']
@@ -31,14 +36,37 @@ module Hawkei
31
36
 
32
37
  private
33
38
 
34
- def session_tracker_id_name
35
- '_hawkei_stid'.freeze
39
+ def store_and_send_track_request(request)
40
+ auto_id = request.cookies[Hawkei::Const::FOLLOW]
41
+ return unless auto_id
42
+
43
+ Hawkei::Store.set(:auto_id, auto_id)
44
+
45
+ Hawkei.track(
46
+ nil,
47
+ sub_type: 'request',
48
+ url_path: request.path,
49
+ )
50
+ end
51
+
52
+ def send_track_response(request, status)
53
+ auto_id = request.cookies[Hawkei::Const::FOLLOW]
54
+ return unless auto_id
55
+
56
+ Hawkei.track(
57
+ nil,
58
+ sub_type: 'response',
59
+ url_path: request.path,
60
+ properties: {
61
+ status: status,
62
+ },
63
+ )
36
64
  end
37
65
 
38
66
  def store_tracker(request)
39
67
  Hawkei::Store.set(
40
68
  :session_tracker_id,
41
- request.cookies[session_tracker_id_name] || SecureRandom.uuid
69
+ request.cookies[Hawkei::Const::SESSION_TRACKER_ID] || SecureRandom.uuid
42
70
  )
43
71
  end
44
72
 
@@ -68,7 +96,7 @@ module Hawkei
68
96
  def write_cookie_session_tracker_id!(headers)
69
97
  ::Rack::Utils.set_cookie_header!(
70
98
  headers || {},
71
- session_tracker_id_name,
99
+ Hawkei::Const::SESSION_TRACKER_ID,
72
100
  Util.deep_compact(
73
101
  value: Hawkei::Store.get(:session_tracker_id),
74
102
  path: '/',
@@ -9,7 +9,9 @@ module Hawkei
9
9
  class ClientMiddleware
10
10
 
11
11
  def call(_worker_class, job, _queue, _redis_pool)
12
- job['_hawkei_stid'] = Hawkei::Store.store[:session_tracker_id]
12
+ job[Hawkei::Const::SESSION_TRACKER_ID] = Hawkei::Store.store[:session_tracker_id]
13
+ job[Hawkei::Const::FOLLOW] = Hawkei::Store.store[:auto_id]
14
+
13
15
  yield
14
16
  end
15
17
 
@@ -9,9 +9,14 @@ module Hawkei
9
9
  class ServerMiddleware
10
10
 
11
11
  def call(_worker, job, _queue)
12
- Hawkei::Store.set(:session_tracker_id, job['_hawkei_stid'] || SecureRandom.uuid)
13
- Hawkei::Store.set(:server_software, "Sidekiq #{::Sidekiq::VERSION}")
12
+ Hawkei::Store.bulk_set(
13
+ session_tracker_id: job[Hawkei::Const::SESSION_TRACKER_ID] || SecureRandom.uuid,
14
+ server_software: "Sidekiq #{::Sidekiq::VERSION}",
15
+ auto_id: job[Hawkei::Const::FOLLOW],
16
+ )
17
+
14
18
  store_worker_data(job)
19
+
15
20
  yield
16
21
  ensure
17
22
  Hawkei::Store.clear!
@@ -1,3 +1,3 @@
1
1
  module Hawkei # :nodoc:
2
- VERSION = '1.0.0'.freeze
2
+ VERSION = '1.1.0'.freeze
3
3
  end
@@ -15,12 +15,14 @@ describe Hawkei::Message do
15
15
  context 'with store' do
16
16
  before do
17
17
  Hawkei::Store.set(:session_tracker_id, 'hello')
18
+ Hawkei::Store.set(:auto_id, 'auto')
18
19
  end
19
20
 
20
21
  let(:expected_hash) {{
21
22
  message_id: kind_of(String),
22
23
  timestamp: kind_of(String),
23
24
  session_tracker_id: 'hello',
25
+ auto_id: 'auto',
24
26
  }}
25
27
 
26
28
  it { expect(base.base).to match(expected_hash) }
@@ -50,6 +52,7 @@ describe Hawkei::Message do
50
52
  context 'with store' do
51
53
  before do
52
54
  Hawkei::Store.set(:session_tracker_id, 'hello')
55
+ Hawkei::Store.set(:auto_id, 'auto')
53
56
  Hawkei::Store.set(:request,
54
57
  url: 'http://www.test.com/',
55
58
  ssl: true,
@@ -83,6 +86,7 @@ describe Hawkei::Message do
83
86
  message_id: kind_of(String),
84
87
  timestamp: kind_of(String),
85
88
  session_tracker_id: 'hello',
89
+ auto_id: 'auto',
86
90
  library: {
87
91
  name: 'hawkei',
88
92
  language: 'ruby',
@@ -36,6 +36,7 @@ describe Hawkei::Plugins::Sidekiq::ServerMiddleware do
36
36
  let(:expected) {{
37
37
  session_tracker_id: '06a09f70-6219-4860-babc-18aa47a62f7f',
38
38
  server_software: include("Sidekiq"),
39
+ auto_id: nil,
39
40
  worker: {
40
41
  name: 'sidekiq',
41
42
  version: kind_of(String),
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hawkei
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hawkei
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-27 00:00:00.000000000 Z
11
+ date: 2019-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -119,6 +119,7 @@ files:
119
119
  - lib/hawkei/api_resource.rb
120
120
  - lib/hawkei/batch.rb
121
121
  - lib/hawkei/config.rb
122
+ - lib/hawkei/const.rb
122
123
  - lib/hawkei/errors.rb
123
124
  - lib/hawkei/formated_logger.rb
124
125
  - lib/hawkei/hawkei_object.rb