remark_analytics 1.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4c76a31814603a543b8ded0d7160a91742560ebf3a0fecef0bc3eb9398a83e92
4
+ data.tar.gz: e5f4c54206f4623f730ca26459212fa90c6785f1ded21849384fa48eab94a6b7
5
+ SHA512:
6
+ metadata.gz: 9cfb9a742215c299b72d254beb2f36a11bcc1b65a3f1c2d4f04d324ddbe9ab1afa01a8afc1b6e436d8afdec12b3c91aa94c571c5258f01f0cfe504e450836955
7
+ data.tar.gz: cb957ffc43dec4a9d3d44aff5bc206a9dfe819c620a7bff4afb70c761866da741a7d08d1822a86885f50a658cdb561615520aa31a6f81b5b42e66c9aa909cd2b
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # README #
2
+
3
+ This README would normally document whatever steps are necessary to get your application up and running.
4
+
5
+ ### What is this repository for? ###
6
+
7
+ * Quick summary
8
+ * Version
9
+ * [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)
10
+
11
+ ### How do I get set up? ###
12
+
13
+ * Summary of set up
14
+ * Configuration
15
+ * Dependencies
16
+ * Database configuration
17
+ * How to run tests
18
+ * Deployment instructions
19
+
20
+ ### Contribution guidelines ###
21
+
22
+ * Writing tests
23
+ * Code review
24
+ * Other guidelines
25
+
26
+ ### Who do I talk to? ###
27
+
28
+ * Repo owner or admin
29
+ * Other community or team contact
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RemarkAnalytics
4
+ class Event
5
+ def self.emit(event_parameters)
6
+ event_params = prepare_post_parameters(event_parameters)
7
+ post_event(event_params)
8
+ end
9
+
10
+ def self.prepare_post_parameters(event_parameters)
11
+ # mix up the event params with other reuired data
12
+ result = {}
13
+ result[:name] = event_parameters[:name].presence
14
+ result[:resource_type] = event_parameters[:resource_type].presence
15
+ result[:resource_id] = event_parameters[:resource_id].presence
16
+ result[:data] = event_parameters[:data].presence || {}
17
+ result[:application_version] = event_parameters[:application_version].presence ||
18
+ RemarkAnalytics::VERSION
19
+ result[:occured_at] = event_parameters[:occured_at].presence || Time.zone.now
20
+ result[:tenant_name] = event_parameters[:tenant_name].presence ||
21
+ Rails.application.secrets.try(:REMARK_ANALYTICS_TENANT_NAME) || VP_SETTINGS[:tenant]
22
+
23
+ # validate params at the other side (analytics api endoint)
24
+ result
25
+ end
26
+
27
+ def self.post_event(event_params)
28
+ if Rails.env.development? || Rails.env.test?
29
+ RemarkAnalytics::Jobs::PostEventJob.perform_now(event_params)
30
+ return
31
+ end
32
+
33
+ RemarkAnalytics::Jobs::PostEventJob.perform_later(event_params)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RemarkAnalytics
4
+ module Jobs
5
+ class ApplicationJob < ActiveJob::Base
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RemarkAnalytics
4
+ module Jobs
5
+ class PostEventJob < ApplicationJob
6
+ def perform(event_params)
7
+ return if connection.blank?
8
+
9
+ connection.post(
10
+ @events_endpoint,
11
+ { event: event_params }.to_json,
12
+ 'Content-Type' => 'application/json'
13
+ )
14
+ end
15
+
16
+ protected
17
+
18
+ def connection
19
+ analytics_url = Rails.application.secrets.try(:REMARK_ANALYTICS_URL)
20
+ username = Rails.application.secrets.try(:REMARK_ANALYTICS_USERNAME)
21
+ password = Rails.application.secrets.try(:REMARK_ANALYTICS_PASSWORD)
22
+ @events_endpoint = "#{analytics_url}/api/v1/events"
23
+
24
+ if analytics_url.blank?
25
+ Sentry.capture_message('REMARK_ANALYTICS_URL not set')
26
+ return
27
+ end
28
+
29
+ if username.blank?
30
+ Sentry.capture_message('REMARK_ANALYTICS_USERNAME not set')
31
+ return
32
+ end
33
+
34
+ if password.blank?
35
+ Sentry.capture_message('REMARK_ANALYTICS_PASSWORD not set')
36
+ return
37
+ end
38
+
39
+ Faraday.new do |conn|
40
+ conn.request(:authorization, :basic, username, password)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,4 @@
1
+ module RemarkAnalytics
2
+ class Railtie < ::Rails::Railtie
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module RemarkAnalytics
2
+ VERSION = '1.0.0'.freeze
3
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'remark_analytics/railtie'
4
+ require 'remark_analytics/version'
5
+ require 'remark_analytics/event'
6
+
7
+ require 'remark_analytics/jobs/application_job'
8
+ require 'remark_analytics/jobs/post_event_job'
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: remark_analytics
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Nick Rockx
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-06-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.3'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.3.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.3'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.3.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: rails
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 6.0.4
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 6.0.4.8
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 6.0.4
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 6.0.4.8
53
+ description: This gem/plugin is used in applications that need to fire events to the
54
+ ReMark Analytics system
55
+ email:
56
+ - nick.rockx@remarkgroup.com
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - README.md
62
+ - lib/remark_analytics.rb
63
+ - lib/remark_analytics/event.rb
64
+ - lib/remark_analytics/jobs/application_job.rb
65
+ - lib/remark_analytics/jobs/post_event_job.rb
66
+ - lib/remark_analytics/railtie.rb
67
+ - lib/remark_analytics/version.rb
68
+ homepage: https://bitbucket.org/ivaldi/rubygems-remark-analytics/src/master/
69
+ licenses:
70
+ - MIT
71
+ metadata: {}
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '3'
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubygems_version: 3.3.16
88
+ signing_key:
89
+ specification_version: 4
90
+ summary: Gem to fire events to ReMark Analytics API from a client application
91
+ test_files: []