bg-common 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []