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.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +5 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +674 -0
  8. data/README.md +274 -0
  9. data/Rakefile +10 -0
  10. data/app/jobs/bg/common/analytics/ga_event_job.rb +13 -0
  11. data/app/jobs/bg/common/analytics/intercom_create_user_job.rb +15 -0
  12. data/app/jobs/bg/common/analytics/intercom_event_job.rb +13 -0
  13. data/app/jobs/bg/common/analytics/intercom_export_users_job.rb +15 -0
  14. data/app/jobs/bg/common/analytics/intercom_update_users_job.rb +17 -0
  15. data/app/jobs/bg/common/analytics/keen_event_job.rb +13 -0
  16. data/bg-common.gemspec +26 -0
  17. data/bin/console +14 -0
  18. data/bin/setup +8 -0
  19. data/lib/bg/common/analytics/ga.rb +12 -0
  20. data/lib/bg/common/analytics/google_analytics/client.rb +27 -0
  21. data/lib/bg/common/analytics/google_analytics/events.rb +40 -0
  22. data/lib/bg/common/analytics/intercom/client.rb +39 -0
  23. data/lib/bg/common/analytics/intercom/events.rb +36 -0
  24. data/lib/bg/common/analytics/intercom/user.rb +67 -0
  25. data/lib/bg/common/analytics/intercom.rb +14 -0
  26. data/lib/bg/common/analytics/keen/client.rb +16 -0
  27. data/lib/bg/common/analytics/keen/events.rb +31 -0
  28. data/lib/bg/common/analytics/keen.rb +12 -0
  29. data/lib/bg/common/analytics/tracker.rb +24 -0
  30. data/lib/bg/common/analytics.rb +43 -0
  31. data/lib/bg/common/engine.rb +8 -0
  32. data/lib/bg/common/middlewares/basic_auth.rb +32 -0
  33. data/lib/bg/common/rails.rb +9 -0
  34. data/lib/bg/common/version.rb +5 -0
  35. data/lib/bg/common.rb +50 -0
  36. 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,12 @@
1
+ require_relative 'keen/client'
2
+ require_relative 'keen/events'
3
+
4
+ module BG
5
+ module Common
6
+ module Analytics
7
+ module Keen
8
+ extend Events
9
+ end
10
+ end
11
+ end
12
+ 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,8 @@
1
+ module BG
2
+ module Common
3
+ module Rails
4
+ class Engine < ::Rails::Engine
5
+ end
6
+ end
7
+ end
8
+ end
@@ -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
@@ -0,0 +1,9 @@
1
+ module BG
2
+ module Common
3
+ class Railtie < ::Rails::Railtie
4
+ initializer 'bg.common.configure_rails_initialization' do
5
+ ::Rails.application.middleware.use BG::Common::Middlewares::BasicAuth
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ module BG
2
+ module Common
3
+ VERSION = "0.1.0"
4
+ end
5
+ 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: []