gaevents 1.02 → 1.03
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 +4 -4
- data/.rspec +2 -0
- data/.rubocop.yml +4 -0
- data/.travis.yml +1 -0
- data/Gemfile +4 -0
- data/README.md +2 -1
- data/Rakefile +2 -2
- data/bin/console +3 -3
- data/gaevents.gemspec +19 -14
- data/lib/gaevents.rb +27 -26
- data/lib/gaevents/event.rb +21 -17
- data/lib/gaevents/version.rb +1 -1
- metadata +36 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b8a31fc1e478d96b855e7383fc2af085c5a8d7b3
|
|
4
|
+
data.tar.gz: f10c78920589755365c8358d86349c97cecf302e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6be6c405be3cac7aabcd0d06903443072ebde442b492e45781ef915dda291d0f6ca3b39f61348603a5a9471d77ccc8fd18a136d626a0a03de949153a491cfdbb
|
|
7
|
+
data.tar.gz: f41b65e1475cfe051df1bad8f9b34b3a1e31e1b40b9de67057c39c29afdaf4dca6f92bb74540e70fcf3886340886be26bbbf11caf8529b357beffaf6aa947847
|
data/.rspec
ADDED
data/.rubocop.yml
ADDED
data/.travis.yml
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
language: ruby
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
[](https://badge.fury.io/rb/gaevents)
|
|
2
|
+
[](https://travis-ci.com/singhshivam/gaevents)
|
|
2
3
|
|
|
3
4
|
# Gaevents
|
|
4
5
|
|
|
5
|
-
This gem
|
|
6
|
+
This gem allows you to update multiple background events in one go (via batches). Unlike other gems you do not need to load a js file to send events. Gaevents leverage GA's Measurement Protocol to send the events.
|
|
6
7
|
|
|
7
8
|
## Installation
|
|
8
9
|
|
data/Rakefile
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require
|
|
2
|
-
task :
|
|
1
|
+
require 'bundler/gem_tasks'
|
|
2
|
+
task default: :spec
|
data/bin/console
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
3
|
+
require 'bundler/setup'
|
|
4
|
+
require 'gaevents'
|
|
5
5
|
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
|
@@ -10,5 +10,5 @@ require "gaevents"
|
|
|
10
10
|
# require "pry"
|
|
11
11
|
# Pry.start
|
|
12
12
|
|
|
13
|
-
require
|
|
13
|
+
require 'irb'
|
|
14
14
|
IRB.start(__FILE__)
|
data/gaevents.gemspec
CHANGED
|
@@ -1,27 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
3
|
require 'gaevents/version'
|
|
5
4
|
|
|
6
5
|
Gem::Specification.new do |spec|
|
|
7
|
-
spec.name =
|
|
6
|
+
spec.name = 'gaevents'
|
|
8
7
|
spec.version = Gaevents::VERSION
|
|
9
|
-
spec.authors = [
|
|
10
|
-
spec.email = [
|
|
8
|
+
spec.authors = ['singhshivam']
|
|
9
|
+
spec.email = ['shivam@blogvault.net']
|
|
11
10
|
|
|
12
|
-
spec.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
spec.description = 'Provides an integration for sending multiple events to Google Analytics'
|
|
12
|
+
spec.summary = 'This gem allows you to update multiple background events ' \
|
|
13
|
+
'in one go (via batches). Unlike other gems ' \
|
|
14
|
+
'you dont need to load a js file to send events. ' \
|
|
15
|
+
'Gaevents leverage GA\'s Measurement Protocol.'
|
|
16
|
+
|
|
17
|
+
spec.homepage = 'https://github.com/singhshivam/gaevents'
|
|
18
|
+
spec.license = 'MIT'
|
|
16
19
|
|
|
17
20
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
18
21
|
f.match(%r{^(test|spec|features)/})
|
|
19
22
|
end
|
|
20
|
-
spec.bindir =
|
|
23
|
+
spec.bindir = 'exe'
|
|
21
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
22
|
-
spec.require_paths = [
|
|
25
|
+
spec.require_paths = ['lib']
|
|
23
26
|
|
|
24
|
-
spec.add_development_dependency
|
|
25
|
-
spec.add_development_dependency
|
|
26
|
-
|
|
27
|
+
spec.add_development_dependency 'bundler', '~> 1.14'
|
|
28
|
+
spec.add_development_dependency 'pry'
|
|
29
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
|
30
|
+
spec.add_development_dependency 'rspec'
|
|
31
|
+
spec.add_runtime_dependency 'rest-client', '~> 2.0', '>= 2.0.2'
|
|
27
32
|
end
|
data/lib/gaevents.rb
CHANGED
|
@@ -1,33 +1,34 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require_relative
|
|
1
|
+
require 'gaevents/version'
|
|
2
|
+
require 'rest-client'
|
|
3
|
+
require_relative 'gaevents/event'
|
|
4
4
|
|
|
5
|
+
# collection of events
|
|
5
6
|
class GAEvents
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
BULK_URI = 'https://www.google-analytics.com/batch'.freeze
|
|
8
|
+
COLLECT_URI = 'https://www.google-analytics.com/collect'.freeze
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
class << self
|
|
11
|
+
attr_accessor :api_key
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
def send_event(event)
|
|
14
|
+
resource = RestClient::Resource.new COLLECT_URI
|
|
15
|
+
resource.post(track_body([event]), content_type: 'text/plain')
|
|
16
|
+
end
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
# takes Array of Event as parameter
|
|
19
|
+
def track(events)
|
|
20
|
+
# as per GA: A maximum of 20 hits can be specified per request
|
|
21
|
+
# https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide#batch
|
|
22
|
+
res = []
|
|
23
|
+
events.each_slice(20) do |events_slice|
|
|
24
|
+
resource = RestClient::Resource.new BULK_URI
|
|
25
|
+
res << resource.post(track_body(events_slice.compact), content_type: 'text/plain')
|
|
26
|
+
end
|
|
27
|
+
res
|
|
28
|
+
end
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
def track_body(*events)
|
|
31
|
+
events.flatten.map(&:payload).join("\n")
|
|
32
|
+
end
|
|
33
|
+
end
|
|
33
34
|
end
|
data/lib/gaevents/event.rb
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
class GAEvents
|
|
2
|
-
|
|
3
|
-
|
|
4
|
+
# Class to define analytical events
|
|
5
|
+
# expected attributes: tid, cid and t
|
|
6
|
+
class Event
|
|
7
|
+
attr_accessor :params
|
|
4
8
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
# Initialize Events by passing a hash.
|
|
10
|
+
# Keys could be any GA allowed parameter.
|
|
11
|
+
# Please refer Measurement Protocol Parameter Reference for available options:
|
|
12
|
+
# https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters
|
|
9
13
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
# As per Measurement Protocol, parameters: v, tid, cid and t should always be present.
|
|
15
|
+
# This gem automatically injects v. Ensure you always pass tid, cid and t while
|
|
16
|
+
# initializing events.
|
|
17
|
+
def initialize(hash = {})
|
|
18
|
+
@params = hash.select { |_k, v| v }
|
|
19
|
+
@params['v'] = 1
|
|
20
|
+
end
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
def payload
|
|
23
|
+
URI.encode_www_form(@params)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
22
26
|
end
|
data/lib/gaevents/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gaevents
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '1.
|
|
4
|
+
version: '1.03'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- singhshivam
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-10-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -24,6 +24,20 @@ dependencies:
|
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '1.14'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: pry
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
27
41
|
- !ruby/object:Gem::Dependency
|
|
28
42
|
name: rake
|
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -38,6 +52,20 @@ dependencies:
|
|
|
38
52
|
- - "~>"
|
|
39
53
|
- !ruby/object:Gem::Version
|
|
40
54
|
version: '10.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rspec
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
41
69
|
- !ruby/object:Gem::Dependency
|
|
42
70
|
name: rest-client
|
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -66,6 +94,9 @@ extensions: []
|
|
|
66
94
|
extra_rdoc_files: []
|
|
67
95
|
files:
|
|
68
96
|
- ".gitignore"
|
|
97
|
+
- ".rspec"
|
|
98
|
+
- ".rubocop.yml"
|
|
99
|
+
- ".travis.yml"
|
|
69
100
|
- CODE_OF_CONDUCT.md
|
|
70
101
|
- Gemfile
|
|
71
102
|
- LICENSE.txt
|
|
@@ -100,5 +131,7 @@ rubyforge_project:
|
|
|
100
131
|
rubygems_version: 2.5.2
|
|
101
132
|
signing_key:
|
|
102
133
|
specification_version: 4
|
|
103
|
-
summary:
|
|
134
|
+
summary: This gem allows you to update multiple background events in one go (via batches).
|
|
135
|
+
Unlike other gems you dont need to load a js file to send events. Gaevents leverage
|
|
136
|
+
GA's Measurement Protocol.
|
|
104
137
|
test_files: []
|