hawkei 1.0.0 → 1.1.0

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
  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