bg-common 0.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 +7 -0
- data/.gitignore +9 -0
- data/.ruby-version +1 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/LICENSE +674 -0
- data/README.md +274 -0
- data/Rakefile +10 -0
- data/app/jobs/bg/common/analytics/ga_event_job.rb +13 -0
- data/app/jobs/bg/common/analytics/intercom_create_user_job.rb +15 -0
- data/app/jobs/bg/common/analytics/intercom_event_job.rb +13 -0
- data/app/jobs/bg/common/analytics/intercom_export_users_job.rb +15 -0
- data/app/jobs/bg/common/analytics/intercom_update_users_job.rb +17 -0
- data/app/jobs/bg/common/analytics/keen_event_job.rb +13 -0
- data/bg-common.gemspec +26 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/bg/common/analytics/ga.rb +12 -0
- data/lib/bg/common/analytics/google_analytics/client.rb +27 -0
- data/lib/bg/common/analytics/google_analytics/events.rb +40 -0
- data/lib/bg/common/analytics/intercom/client.rb +39 -0
- data/lib/bg/common/analytics/intercom/events.rb +36 -0
- data/lib/bg/common/analytics/intercom/user.rb +67 -0
- data/lib/bg/common/analytics/intercom.rb +14 -0
- data/lib/bg/common/analytics/keen/client.rb +16 -0
- data/lib/bg/common/analytics/keen/events.rb +31 -0
- data/lib/bg/common/analytics/keen.rb +12 -0
- data/lib/bg/common/analytics/tracker.rb +24 -0
- data/lib/bg/common/analytics.rb +43 -0
- data/lib/bg/common/engine.rb +8 -0
- data/lib/bg/common/middlewares/basic_auth.rb +32 -0
- data/lib/bg/common/rails.rb +9 -0
- data/lib/bg/common/version.rb +5 -0
- data/lib/bg/common.rb +50 -0
- metadata +119 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
#
|
2
|
+
# Module that wraps the Keen events API to create specific
|
3
|
+
# events related to app actions.
|
4
|
+
#
|
5
|
+
module BG
|
6
|
+
module Common
|
7
|
+
module Analytics
|
8
|
+
module Keen
|
9
|
+
module Events
|
10
|
+
#
|
11
|
+
# Creates an event in Keen
|
12
|
+
#
|
13
|
+
# @param data, Hash
|
14
|
+
#
|
15
|
+
# The data param includes the information for the event to register on
|
16
|
+
# Keen. It can be any valid Ruby hash.
|
17
|
+
#
|
18
|
+
# more info here: https://github.com/keenlabs/keen-gem#synchronous-publishing
|
19
|
+
#
|
20
|
+
def create_event event, data
|
21
|
+
if BG::Common.active_job?
|
22
|
+
KeenEventJob.perform_later event, data
|
23
|
+
else
|
24
|
+
Client.new.call event, data
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module BG
|
2
|
+
module Common
|
3
|
+
module Analytics
|
4
|
+
class Tracker
|
5
|
+
def initialize
|
6
|
+
end
|
7
|
+
|
8
|
+
def call data
|
9
|
+
if Analytics.ga? and data[:ga]
|
10
|
+
GA.create_event data[:ga]
|
11
|
+
end
|
12
|
+
|
13
|
+
if Analytics.intercom? and data[:intercom]
|
14
|
+
Intercom.create_event data[:intercom]
|
15
|
+
end
|
16
|
+
|
17
|
+
if Analytics.keen? and data[:keen]
|
18
|
+
Keen.create_event data[:keen][:event], data[:keen][:data]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require_relative 'analytics/tracker'
|
2
|
+
|
3
|
+
module BG
|
4
|
+
module Common
|
5
|
+
module Analytics
|
6
|
+
class << self
|
7
|
+
def load!
|
8
|
+
load_ga if ga?
|
9
|
+
load_intercom if intercom?
|
10
|
+
load_keen if keen?
|
11
|
+
end
|
12
|
+
|
13
|
+
def ga?
|
14
|
+
defined?(::Gabba) && ENV['GA_TRACKER_CODE'] && ENV['GA_DOMAIN']
|
15
|
+
end
|
16
|
+
|
17
|
+
def intercom?
|
18
|
+
defined?(::Intercom)
|
19
|
+
end
|
20
|
+
|
21
|
+
def keen?
|
22
|
+
defined?(::Keen) && ENV['KEEN_PROJECT_ID']
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def load_ga
|
28
|
+
require_relative 'analytics/ga'
|
29
|
+
end
|
30
|
+
|
31
|
+
def load_intercom
|
32
|
+
require_relative 'analytics/intercom'
|
33
|
+
end
|
34
|
+
|
35
|
+
def load_keen
|
36
|
+
require_relative 'analytics/keen'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
BG::Common::Analytics.load!
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module BG
|
2
|
+
module Common
|
3
|
+
module Middlewares
|
4
|
+
class BasicAuth
|
5
|
+
def initialize app
|
6
|
+
@app = app
|
7
|
+
end
|
8
|
+
|
9
|
+
def call env
|
10
|
+
if ENV['BASIC_AUTH_ENABLED'] == 'true'
|
11
|
+
auth = Rack::Auth::Basic.new(@app) do |u, p|
|
12
|
+
u == username && p == password
|
13
|
+
end
|
14
|
+
|
15
|
+
auth.call env
|
16
|
+
else
|
17
|
+
@status, @headers, @response = @app.call(env)
|
18
|
+
[@status, @headers, @response]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def username
|
23
|
+
ENV['BASIC_AUTH_USERNAME']
|
24
|
+
end
|
25
|
+
|
26
|
+
def password
|
27
|
+
ENV['BASIC_AUTH_PASSWORD']
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/bg/common.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'bg/common/version'
|
2
|
+
require 'bg/common/middlewares/basic_auth'
|
3
|
+
|
4
|
+
module BG
|
5
|
+
module Common
|
6
|
+
class << self
|
7
|
+
def load!
|
8
|
+
if rails?
|
9
|
+
register_railtie
|
10
|
+
register_engine
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def logger
|
15
|
+
# TODO: Make this configurable
|
16
|
+
@logger ||= Logging.logger['bg_common']
|
17
|
+
@logger.level = :debug
|
18
|
+
|
19
|
+
@logger.add_appenders \
|
20
|
+
Logging.appenders.stdout,
|
21
|
+
Logging.appenders.file('log/bg_common.log')
|
22
|
+
end
|
23
|
+
|
24
|
+
# Paths
|
25
|
+
def gem_path
|
26
|
+
@gem_path ||= File.expand_path '../..', File.dirname(__FILE__)
|
27
|
+
end
|
28
|
+
|
29
|
+
def active_job?
|
30
|
+
defined?(::ActiveJob::Base)
|
31
|
+
end
|
32
|
+
|
33
|
+
def rails?
|
34
|
+
defined?(::Rails)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def register_railtie
|
40
|
+
require 'bg/common/rails'
|
41
|
+
end
|
42
|
+
|
43
|
+
def register_engine
|
44
|
+
require 'bg/common/engine'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
BG::Common.load!
|
metadata
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bg-common
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Youssef Chaker
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-08-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.14'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.14'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.0'
|
55
|
+
description: A Ruby library of common behaviors, especially for Ruby on Rails applications.
|
56
|
+
email:
|
57
|
+
- youssef@bearandgiraffe.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".gitignore"
|
63
|
+
- ".ruby-version"
|
64
|
+
- ".travis.yml"
|
65
|
+
- CODE_OF_CONDUCT.md
|
66
|
+
- Gemfile
|
67
|
+
- LICENSE
|
68
|
+
- README.md
|
69
|
+
- Rakefile
|
70
|
+
- app/jobs/bg/common/analytics/ga_event_job.rb
|
71
|
+
- app/jobs/bg/common/analytics/intercom_create_user_job.rb
|
72
|
+
- app/jobs/bg/common/analytics/intercom_event_job.rb
|
73
|
+
- app/jobs/bg/common/analytics/intercom_export_users_job.rb
|
74
|
+
- app/jobs/bg/common/analytics/intercom_update_users_job.rb
|
75
|
+
- app/jobs/bg/common/analytics/keen_event_job.rb
|
76
|
+
- bg-common.gemspec
|
77
|
+
- bin/console
|
78
|
+
- bin/setup
|
79
|
+
- lib/bg/common.rb
|
80
|
+
- lib/bg/common/analytics.rb
|
81
|
+
- lib/bg/common/analytics/ga.rb
|
82
|
+
- lib/bg/common/analytics/google_analytics/client.rb
|
83
|
+
- lib/bg/common/analytics/google_analytics/events.rb
|
84
|
+
- lib/bg/common/analytics/intercom.rb
|
85
|
+
- lib/bg/common/analytics/intercom/client.rb
|
86
|
+
- lib/bg/common/analytics/intercom/events.rb
|
87
|
+
- lib/bg/common/analytics/intercom/user.rb
|
88
|
+
- lib/bg/common/analytics/keen.rb
|
89
|
+
- lib/bg/common/analytics/keen/client.rb
|
90
|
+
- lib/bg/common/analytics/keen/events.rb
|
91
|
+
- lib/bg/common/analytics/tracker.rb
|
92
|
+
- lib/bg/common/engine.rb
|
93
|
+
- lib/bg/common/middlewares/basic_auth.rb
|
94
|
+
- lib/bg/common/rails.rb
|
95
|
+
- lib/bg/common/version.rb
|
96
|
+
homepage: https://github.com/bearandgiraffe/bg-common
|
97
|
+
licenses: []
|
98
|
+
metadata: {}
|
99
|
+
post_install_message:
|
100
|
+
rdoc_options: []
|
101
|
+
require_paths:
|
102
|
+
- lib
|
103
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0'
|
108
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
requirements: []
|
114
|
+
rubyforge_project:
|
115
|
+
rubygems_version: 2.5.2
|
116
|
+
signing_key:
|
117
|
+
specification_version: 4
|
118
|
+
summary: A Ruby library of common behaviors, especially for Ruby on Rails applications.
|
119
|
+
test_files: []
|