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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4bc4cf50b16fba0a2a0f157228f2e991971ec1c5
4
- data.tar.gz: 8b5662123003bae91a98820762dab66cdc6b1fad
3
+ metadata.gz: b8a31fc1e478d96b855e7383fc2af085c5a8d7b3
4
+ data.tar.gz: f10c78920589755365c8358d86349c97cecf302e
5
5
  SHA512:
6
- metadata.gz: c838f35ff7d5327b627871dc4e001d575a1644ae139adf495a915b4f302222946e0916a8a79f2a4f5d2335d848f479d413f46666e979359ec8e93cd0c8789a8e
7
- data.tar.gz: 9946dc4f20809b61cfc32fd21f6e8e9ce7c364df6c5434efc3376dc2c53ea21d878bdb547730e59851400a5ea85f21447750808e678ec71920958f1dd6332faf
6
+ metadata.gz: 6be6c405be3cac7aabcd0d06903443072ebde442b492e45781ef915dda291d0f6ca3b39f61348603a5a9471d77ccc8fd18a136d626a0a03de949153a491cfdbb
7
+ data.tar.gz: f41b65e1475cfe051df1bad8f9b34b3a1e31e1b40b9de67057c39c29afdaf4dca6f92bb74540e70fcf3886340886be26bbbf11caf8529b357beffaf6aa947847
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,4 @@
1
+ Style/Tab:
2
+ Enabled: false
3
+ Metrics/LineLength:
4
+ Max: 100
data/.travis.yml ADDED
@@ -0,0 +1 @@
1
+ language: ruby
data/Gemfile CHANGED
@@ -2,3 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in gaevents.gemspec
4
4
  gemspec
5
+
6
+ group :development, :test do
7
+ gem 'rubocop', '~> 0.59.2', require: false
8
+ end
data/README.md CHANGED
@@ -1,8 +1,9 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/gaevents.svg)](https://badge.fury.io/rb/gaevents)
2
+ [![Build Status](https://travis-ci.com/singhshivam/gaevents.svg?branch=master)](https://travis-ci.com/singhshivam/gaevents)
2
3
 
3
4
  # Gaevents
4
5
 
5
- This gem provides an integration for sending multiple events to Google Analytics. Events are sent in batches leveraging Measurement Protocol.
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 "bundler/gem_tasks"
2
- task :default => :spec
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 "bundler/setup"
4
- require "gaevents"
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 "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
data/gaevents.gemspec CHANGED
@@ -1,27 +1,32 @@
1
- # coding: utf-8
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 = "gaevents"
6
+ spec.name = 'gaevents'
8
7
  spec.version = Gaevents::VERSION
9
- spec.authors = ["singhshivam"]
10
- spec.email = ["shivam@blogvault.net"]
8
+ spec.authors = ['singhshivam']
9
+ spec.email = ['shivam@blogvault.net']
11
10
 
12
- spec.summary = %q{Sends events to google analytics in batches leveraging Measurement Protocol}
13
- spec.description = %q{Provides an integration for sending multiple events to Google Analytics}
14
- spec.homepage = "https://github.com/singhshivam/gaevents"
15
- spec.license = "MIT"
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 = "exe"
23
+ spec.bindir = 'exe'
21
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
- spec.require_paths = ["lib"]
25
+ spec.require_paths = ['lib']
23
26
 
24
- spec.add_development_dependency "bundler", "~> 1.14"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_runtime_dependency 'rest-client', '~> 2.0', '>= 2.0.2'
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 "gaevents/version"
2
- require "rest-client"
3
- require_relative "gaevents/event"
1
+ require 'gaevents/version'
2
+ require 'rest-client'
3
+ require_relative 'gaevents/event'
4
4
 
5
+ # collection of events
5
6
  class GAEvents
6
- BULK_URI = 'https://www.google-analytics.com/batch'.freeze
7
- COLLECT_URI = 'https://www.google-analytics.com/collect'.freeze
7
+ BULK_URI = 'https://www.google-analytics.com/batch'.freeze
8
+ COLLECT_URI = 'https://www.google-analytics.com/collect'.freeze
8
9
 
9
- class << self
10
- attr_accessor :api_key
10
+ class << self
11
+ attr_accessor :api_key
11
12
 
12
- def send_event(event)
13
- resource = RestClient::Resource.new COLLECT_URI
14
- resource.post(track_body([event]), {:content_type => 'text/plain'})
15
- end
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
- # takes Array of Event as parameter
18
- def track(events)
19
- # as per GA: A maximum of 20 hits can be specified per request
20
- # https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide#batch
21
- res = []
22
- events.each_slice(20) { |_events|
23
- resource = RestClient::Resource.new BULK_URI
24
- res << resource.post(track_body(_events.compact), {:content_type => 'text/plain'})
25
- }
26
- res
27
- end
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
- def track_body(*events)
30
- events.flatten.map(&:payload).join("\n")
31
- end
32
- end
30
+ def track_body(*events)
31
+ events.flatten.map(&:payload).join("\n")
32
+ end
33
+ end
33
34
  end
@@ -1,22 +1,26 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class GAEvents
2
- class Event
3
- attr_accessor :params
4
+ # Class to define analytical events
5
+ # expected attributes: tid, cid and t
6
+ class Event
7
+ attr_accessor :params
4
8
 
5
- # Initialize Events by passing a hash.
6
- # Keys could be any GA allowed parameter.
7
- # Please refer Measurement Protocol Parameter Reference for available options:
8
- # https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters
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
- # As per Measurement Protocol, parameters: v, tid, cid and t should always be present.
11
- # This gem automatically injects v. Ensure you always pass tid, cid and t while
12
- # initializing events.
13
- def initialize(hash = {})
14
- @params = hash.reject { |k,v| !v }
15
- @params["v"] = 1
16
- end
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
- def payload
19
- URI.encode_www_form(@params)
20
- end
21
- end
22
+ def payload
23
+ URI.encode_www_form(@params)
24
+ end
25
+ end
22
26
  end
@@ -1,3 +1,3 @@
1
1
  module Gaevents
2
- VERSION = "1.02"
2
+ VERSION = '1.03'.freeze
3
3
  end
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.02'
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: 2017-12-27 00:00:00.000000000 Z
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: Sends events to google analytics in batches leveraging Measurement Protocol
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: []