evva 0.1.4.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +1 -2
- data/.rspec +0 -1
- data/.ruby-version +1 -0
- data/.travis.yml +1 -0
- data/Gemfile +10 -8
- data/Gemfile.lock +5 -6
- data/README.md +9 -0
- data/Rakefile +9 -0
- data/changelog.md +6 -0
- data/evva.gemspec +0 -3
- data/evva_config.yml +4 -1
- data/lib/evva/config.rb +3 -1
- data/lib/evva/google_sheet.rb +42 -35
- data/lib/evva/version.rb +2 -2
- data/lib/evva.rb +1 -1
- data/spec/fixtures/sample_public_enums.csv +3 -0
- data/spec/fixtures/sample_public_events.csv +4 -0
- data/spec/fixtures/sample_public_people_properties.csv +3 -0
- data/spec/fixtures/test.yml +4 -2
- data/spec/lib/evva/config_spec.rb +5 -3
- data/spec/lib/evva/google_sheet_spec.rb +44 -74
- metadata +9 -36
- data/spec/fixtures/sample_public_enums.html +0 -1
- data/spec/fixtures/sample_public_info.html +0 -1
- data/spec/fixtures/sample_public_people_properties.html +0 -1
- data/spec/fixtures/sample_public_sheet.html +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c9078e38ca6bba5b85a3349fb9e1c3f9c31b8de357080ffb1ab105e6bcbbdaa1
|
4
|
+
data.tar.gz: 16b264637125fafdc14a991a9cb984e440b948bdc7d934776329b8aa8ef2d89f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6efc1abd4ea8d72f7ac2edeccbf111deac25922fa0b1464d754d21e7bfef921efffddd228bb6d6913f3b64a4acfcd8763082f0b36b16e85e28b930d933df879c
|
7
|
+
data.tar.gz: 77a4ad5df7074b646def8c880654b551fcde2e10523e3dec622d202fba48ac7bdda6d1a882abcd5c54bc2e6175b2bb68a52c30ab77d1c522f29362bc9a297db3
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.7.3
|
data/.travis.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
language: ruby
|
data/Gemfile
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
|
-
ruby '2.
|
2
|
+
ruby '2.7.3'
|
3
3
|
|
4
4
|
gem 'colorize'
|
5
|
-
gem 'rubocop'
|
6
5
|
gem 'safe_yaml'
|
7
|
-
gem 'xml-simple'
|
8
6
|
|
9
|
-
|
10
|
-
gem '
|
11
|
-
gem '
|
12
|
-
gem '
|
13
|
-
gem '
|
7
|
+
group :test do
|
8
|
+
gem 'rake'
|
9
|
+
gem 'rspec'
|
10
|
+
gem 'rspec-its'
|
11
|
+
gem 'simplecov', require: false, group: :test
|
12
|
+
gem 'simplecov-rcov', require: false
|
13
|
+
gem 'webmock', '~> 1.20'
|
14
|
+
gem 'rubocop'
|
15
|
+
end
|
data/Gemfile.lock
CHANGED
@@ -10,7 +10,7 @@ GEM
|
|
10
10
|
diff-lcs (1.3)
|
11
11
|
docile (1.1.5)
|
12
12
|
hashdiff (0.3.7)
|
13
|
-
json (2.
|
13
|
+
json (2.3.0)
|
14
14
|
parallel (1.12.0)
|
15
15
|
parser (2.4.0.0)
|
16
16
|
ast (~> 2.2)
|
@@ -18,7 +18,7 @@ GEM
|
|
18
18
|
public_suffix (3.0.0)
|
19
19
|
rainbow (2.2.2)
|
20
20
|
rake
|
21
|
-
rake (12.
|
21
|
+
rake (12.3.3)
|
22
22
|
rspec (3.7.0)
|
23
23
|
rspec-core (~> 3.7.0)
|
24
24
|
rspec-expectations (~> 3.7.0)
|
@@ -56,13 +56,13 @@ GEM
|
|
56
56
|
addressable (>= 2.3.6)
|
57
57
|
crack (>= 0.3.2)
|
58
58
|
hashdiff
|
59
|
-
xml-simple (1.1.5)
|
60
59
|
|
61
60
|
PLATFORMS
|
62
61
|
ruby
|
63
62
|
|
64
63
|
DEPENDENCIES
|
65
64
|
colorize
|
65
|
+
rake
|
66
66
|
rspec
|
67
67
|
rspec-its
|
68
68
|
rubocop
|
@@ -70,10 +70,9 @@ DEPENDENCIES
|
|
70
70
|
simplecov
|
71
71
|
simplecov-rcov
|
72
72
|
webmock (~> 1.20)
|
73
|
-
xml-simple
|
74
73
|
|
75
74
|
RUBY VERSION
|
76
|
-
ruby 2.
|
75
|
+
ruby 2.7.3p183
|
77
76
|
|
78
77
|
BUNDLED WITH
|
79
|
-
|
78
|
+
2.2.26
|
data/README.md
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
Evva
|
2
|
+
========
|
3
|
+
|
4
|
+
[![Status](https://travis-ci.org/hole19/evva.svg?branch=master)](https://travis-ci.org/hole19/evva?branch=master)
|
5
|
+
[![Gem](https://img.shields.io/gem/v/evva.svg?style=flat)](http://rubygems.org/gems/evva "View this project in Rubygems")
|
6
|
+
|
7
|
+
Evva automatically generates code for triggering events based on a Google Sheets specification. It generated code for both iOS (Swift) and Android (Kotlin).
|
2
8
|
|
3
9
|
# Instalation
|
4
10
|
|
@@ -19,6 +25,9 @@ Evva
|
|
19
25
|
data_source:
|
20
26
|
type: google_sheet
|
21
27
|
sheet_id: <GOOGLE-DRIVE-SHEET-ID>
|
28
|
+
events_url: <GOOGLE-DRIVE-EVENTS-SHEET-URL>
|
29
|
+
people_properties_url: <GOOGLE-DRIVE-PEOPLE-PROPERTIES-SHEET-URL>
|
30
|
+
enum_classes_url: <GOOGLE-DRIVE-ENUM-CLASSES-SHEET-URL>
|
22
31
|
|
23
32
|
out_path: /folder/where/analytics/classes/are
|
24
33
|
event_file_name: /file/with/tracking/functions
|
data/Rakefile
ADDED
data/changelog.md
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
# Change Log
|
2
|
+
|
3
|
+
## [0.2.0] - 2021/08/30
|
4
|
+
- Google Spreadsheet option stopped working due to a change in the API. This version fixes that.
|
5
|
+
|
6
|
+
Note: You'll need a new setup. View README.
|
7
|
+
|
2
8
|
## [0.1.4.4] - 2019-02-04
|
3
9
|
- Adds support for dynamic android package name
|
4
10
|
|
data/evva.gemspec
CHANGED
data/evva_config.yml
CHANGED
@@ -3,9 +3,12 @@ type: iOS
|
|
3
3
|
data_source:
|
4
4
|
type: google_sheet
|
5
5
|
sheet_id: 1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4
|
6
|
+
events_url: https://path-to-csv
|
7
|
+
people_properties_url: https://path-to-csv
|
8
|
+
enum_classes_url: https://path-to-csv
|
6
9
|
|
7
10
|
out_path: analytics
|
8
11
|
event_file_name: MixpanelAnalytics
|
9
12
|
event_enum_file_name: MixpanelEvent
|
10
13
|
people_file_name: MixpanelProperties
|
11
|
-
package_name: com.hole19golf.hole19.analytics
|
14
|
+
package_name: com.hole19golf.hole19.analytics
|
data/lib/evva/config.rb
CHANGED
data/lib/evva/google_sheet.rb
CHANGED
@@ -1,36 +1,47 @@
|
|
1
1
|
require 'net/https'
|
2
|
-
require '
|
2
|
+
require 'csv'
|
3
3
|
|
4
4
|
module Evva
|
5
5
|
class GoogleSheet
|
6
|
-
def initialize(
|
7
|
-
@
|
6
|
+
def initialize(events_url, people_properties_url, enum_classes_url)
|
7
|
+
@events_url = events_url
|
8
|
+
@people_properties_url = people_properties_url
|
9
|
+
@enum_classes_url = enum_classes_url
|
8
10
|
end
|
9
11
|
|
10
12
|
def events
|
13
|
+
Logger.info("Downloading data from Google Sheet at #{@events_url}")
|
14
|
+
csv = get_csv(@events_url)
|
15
|
+
|
11
16
|
event_list = []
|
12
|
-
|
13
|
-
event_name =
|
14
|
-
properties = hash_parser(
|
17
|
+
csv.each do |row|
|
18
|
+
event_name = row['Event Name']
|
19
|
+
properties = hash_parser(row['Event Properties'])
|
15
20
|
event_list << Evva::MixpanelEvent.new(event_name, properties)
|
16
21
|
end
|
17
22
|
event_list
|
18
23
|
end
|
19
24
|
|
20
25
|
def people_properties
|
26
|
+
Logger.info("Downloading data from Google Sheet at #{@people_properties_url}")
|
27
|
+
csv = get_csv(@people_properties_url)
|
28
|
+
|
21
29
|
people_list = []
|
22
|
-
|
23
|
-
value =
|
30
|
+
csv.each do |row|
|
31
|
+
value = row['Property Name']
|
24
32
|
people_list << value
|
25
33
|
end
|
26
34
|
people_list
|
27
35
|
end
|
28
36
|
|
29
37
|
def enum_classes
|
38
|
+
Logger.info("Downloading data from Google Sheet at #{@enum_classes_url}")
|
39
|
+
csv = get_csv(@enum_classes_url)
|
40
|
+
|
30
41
|
enum_list = []
|
31
|
-
|
32
|
-
enum_name =
|
33
|
-
values =
|
42
|
+
csv.each do |row|
|
43
|
+
enum_name = row['Enum Name']
|
44
|
+
values = row['Possible Values'].split(',')
|
34
45
|
enum_list << Evva::MixpanelEnum.new(enum_name, values)
|
35
46
|
end
|
36
47
|
enum_list
|
@@ -38,42 +49,38 @@ module Evva
|
|
38
49
|
|
39
50
|
private
|
40
51
|
|
41
|
-
def
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
52
|
+
def get_csv(url)
|
53
|
+
data = get(url)
|
54
|
+
|
55
|
+
begin
|
56
|
+
CSV.parse(data, headers: true)
|
57
|
+
rescue StandardError => e
|
58
|
+
raise "Cannot parse. Expected CSV at #{url}: #{e}"
|
47
59
|
end
|
48
60
|
end
|
49
61
|
|
50
|
-
def
|
51
|
-
|
62
|
+
def get(url, max_redirects = 1)
|
63
|
+
raise "Too may redirects" if max_redirects == -1
|
64
|
+
|
65
|
+
uri = URI(url)
|
66
|
+
|
52
67
|
http = Net::HTTP.new(uri.host, uri.port)
|
53
68
|
http.use_ssl = true
|
54
69
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
55
|
-
data = http.get(uri.path, headers)
|
56
|
-
unless data.code.to_i == 200
|
57
|
-
raise "Cannot access sheet at #{uri} - HTTP #{data.code}"
|
58
|
-
end
|
59
70
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
71
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
72
|
+
response = http.request(request)
|
73
|
+
|
74
|
+
return get(response['location'], max_redirects - 1) if response.is_a? Net::HTTPRedirection
|
75
|
+
|
76
|
+
raise "Http Error #{response.body}" if response.code.to_i >= 400
|
66
77
|
|
67
|
-
|
68
|
-
Logger.info('Downloading Google Sheet...')
|
69
|
-
sheet = xml_data("https://spreadsheets.google.com/feeds/worksheets/#{sheet_id}/public/full")
|
70
|
-
url = sheet['entry'][sheet_number]['link'][0]['href']
|
71
|
-
xml_data(url)
|
78
|
+
response.body
|
72
79
|
end
|
73
80
|
|
74
81
|
def hash_parser(property_array)
|
75
82
|
h = {}
|
76
|
-
unless property_array.empty?
|
83
|
+
unless property_array.nil? || property_array.empty?
|
77
84
|
property_array.split(',').each do |prop|
|
78
85
|
split_prop = prop.split(':')
|
79
86
|
prop_name = split_prop[0].to_sym
|
data/lib/evva/version.rb
CHANGED
data/lib/evva.rb
CHANGED
@@ -55,7 +55,7 @@ module Evva
|
|
55
55
|
source =
|
56
56
|
case config[:type]
|
57
57
|
when 'google_sheet'
|
58
|
-
Evva::GoogleSheet.new(config[:
|
58
|
+
Evva::GoogleSheet.new(config[:events_url], config[:people_properties_url], config[:enum_classes_url])
|
59
59
|
end
|
60
60
|
events_bundle = {}
|
61
61
|
events_bundle[:events] = source.events
|
data/spec/fixtures/test.yml
CHANGED
@@ -2,10 +2,12 @@ type: Android
|
|
2
2
|
|
3
3
|
data_source:
|
4
4
|
type: google_sheet
|
5
|
-
|
5
|
+
events_url: https://path-to-csv
|
6
|
+
people_properties_url: https://path-to-csv
|
7
|
+
enum_classes_url: https://path-to-csv
|
6
8
|
|
7
9
|
out_path: analytics
|
8
10
|
event_file_name: MixpanelAnalytics
|
9
11
|
event_enum_file_name: MixpanelEvent
|
10
12
|
people_file_name: MixpanelProperties
|
11
|
-
package_name: com.package.name.analytics
|
13
|
+
package_name: com.package.name.analytics
|
@@ -5,8 +5,10 @@ describe Evva::Config do
|
|
5
5
|
{
|
6
6
|
type: 'EvvaOS',
|
7
7
|
data_source: {
|
8
|
-
type:
|
9
|
-
|
8
|
+
type: 'google_sheet',
|
9
|
+
events_url: 'https://events.csv',
|
10
|
+
people_properties_url: 'https://people_properties.csv',
|
11
|
+
enum_classes_url: 'https://enum_classes.csv',
|
10
12
|
},
|
11
13
|
out_path: 'clear/path/to/event',
|
12
14
|
event_file_name: 'event/file/name',
|
@@ -32,7 +34,7 @@ describe Evva::Config do
|
|
32
34
|
describe '#data_source' do
|
33
35
|
subject(:data_source) { config.data_source }
|
34
36
|
|
35
|
-
it { should eq(type: 'google_sheet',
|
37
|
+
it { should eq(type: 'google_sheet', events_url: 'https://events.csv', people_properties_url: 'https://people_properties.csv', enum_classes_url: 'https://enum_classes.csv') }
|
36
38
|
|
37
39
|
context 'when given an unknown type data source' do
|
38
40
|
before { hash[:data_source] = { type: 'i_dunno' } }
|
@@ -1,107 +1,77 @@
|
|
1
1
|
describe Evva::GoogleSheet do
|
2
|
-
let(:sheet) { Evva::GoogleSheet.new(
|
3
|
-
|
4
|
-
let(:
|
5
|
-
let(:
|
6
|
-
let(:enum_sheet) { "https://
|
7
|
-
let(:
|
8
|
-
let(:
|
9
|
-
let(:
|
10
|
-
|
11
|
-
|
2
|
+
let(:sheet) { Evva::GoogleSheet.new(events_sheet, people_sheet, enum_sheet) }
|
3
|
+
|
4
|
+
let(:events_sheet) { "https://wtvr1" }
|
5
|
+
let(:people_sheet) { "https://wtvr2" }
|
6
|
+
let(:enum_sheet) { "https://wtvr3" }
|
7
|
+
let(:events_file) { File.read('spec/fixtures/sample_public_events.csv') }
|
8
|
+
let(:people_file) { File.read('spec/fixtures/sample_public_people_properties.csv') }
|
9
|
+
let(:enum_file) { File.read('spec/fixtures/sample_public_enums.csv') }
|
10
|
+
|
11
|
+
before do
|
12
|
+
stub_request(:get, events_sheet).to_return(status: 200, body: events_file, headers: {})
|
13
|
+
stub_request(:get, people_sheet).to_return(status: 200, body: people_file, headers: {})
|
14
|
+
stub_request(:get, enum_sheet).to_return(status: 200, body: enum_file, headers: {})
|
15
|
+
end
|
12
16
|
|
13
17
|
describe '#events' do
|
14
18
|
subject(:events) { sheet.events }
|
15
|
-
before do
|
16
|
-
stub_request(:get, url_info).to_return(status: 200, body: file_info, headers: {})
|
17
|
-
stub_request(:get, url_sheet).to_return(status: 200, body: file_sheet, headers: {})
|
18
|
-
end
|
19
|
-
|
20
|
-
context 'when given a valid sheet' do
|
21
|
-
it do
|
22
|
-
expect { events }.not_to raise_error
|
23
|
-
end
|
24
19
|
|
25
|
-
|
26
|
-
|
27
|
-
Evva::MixpanelEvent.new('nav_feed_tap', {}),
|
28
|
-
Evva::MixpanelEvent.new('cp_view_scorecard', { course_id: 'Long', course_name: 'String' })]
|
29
|
-
expect(events).to eq(expected)
|
30
|
-
end
|
20
|
+
it do
|
21
|
+
expect { events }.not_to raise_error
|
31
22
|
end
|
32
23
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
end
|
24
|
+
it 'returns an array with the corresponding events' do
|
25
|
+
expected = [Evva::MixpanelEvent.new('cp_page_view', { course_id: 'Long', course_name: 'String' }),
|
26
|
+
Evva::MixpanelEvent.new('nav_feed_tap', {}),
|
27
|
+
Evva::MixpanelEvent.new('cp_view_scorecard', { course_id: 'Long', course_name: 'String' })]
|
28
|
+
expect(events).to eq(expected)
|
39
29
|
end
|
40
30
|
|
41
|
-
context
|
42
|
-
before { stub_request(:get,
|
31
|
+
context "when given an inexistent sheet" do
|
32
|
+
before { stub_request(:get, events_sheet).to_return(status: 400, body: "Not Found", headers: {}) }
|
43
33
|
|
44
34
|
it do
|
45
|
-
expect { events }.to raise_error /
|
35
|
+
expect { events }.to raise_error /Http Error/
|
46
36
|
end
|
47
37
|
end
|
48
38
|
|
49
|
-
context
|
50
|
-
before { stub_request(:get,
|
39
|
+
context "when url content is not CSV" do
|
40
|
+
before { stub_request(:get, events_sheet).to_return(status: 200, body: "{\"asdsa\": \"This is a json\"}", headers: {}) }
|
51
41
|
|
52
42
|
it do
|
53
|
-
expect { events }.to raise_error /Cannot parse. Expected
|
43
|
+
expect { events }.to raise_error /Cannot parse. Expected CSV/
|
54
44
|
end
|
55
45
|
end
|
56
46
|
end
|
57
47
|
|
58
|
-
describe '#
|
59
|
-
subject(:
|
60
|
-
let(:expected_enum) do
|
61
|
-
[
|
62
|
-
Evva::MixpanelEnum.new('PageViewSourceScreen', ['course_discovery','synced_courses','nearby','deal']),
|
63
|
-
Evva::MixpanelEnum.new('PremiumClickBuy', ['notes','hi_res_maps','whatever'])
|
64
|
-
]
|
65
|
-
end
|
66
|
-
|
67
|
-
context 'when given a valid sheet' do
|
68
|
-
before do
|
69
|
-
stub_request(:get, url_info).to_return(status: 200, body: file_info, headers: {})
|
70
|
-
stub_request(:get, enum_sheet).to_return(status: 200, body: enum_file, headers: {})
|
71
|
-
end
|
72
|
-
|
73
|
-
it do
|
74
|
-
expect { enum_classes }.not_to raise_error
|
75
|
-
end
|
48
|
+
describe '#people_properties' do
|
49
|
+
subject(:people_properties) { sheet.people_properties }
|
76
50
|
|
77
|
-
|
78
|
-
|
79
|
-
end
|
51
|
+
it do
|
52
|
+
expect { people_properties }.not_to raise_error
|
80
53
|
end
|
81
|
-
end
|
82
54
|
|
83
|
-
|
84
|
-
|
85
|
-
let(:expected_people_properties) do
|
86
|
-
[
|
55
|
+
it 'returns an array with the corresponding events' do
|
56
|
+
expect(people_properties).to eq [
|
87
57
|
'rounds_with_wear',
|
88
58
|
'total_friends'
|
89
59
|
]
|
90
60
|
end
|
61
|
+
end
|
91
62
|
|
92
|
-
|
93
|
-
|
94
|
-
stub_request(:get, url_info).to_return(status: 200, body: file_info, headers: {})
|
95
|
-
stub_request(:get, people_sheet).to_return(status: 200, body: people_file, headers: {})
|
96
|
-
end
|
63
|
+
describe '#enum_classes' do
|
64
|
+
subject(:enum_classes) { sheet.enum_classes }
|
97
65
|
|
98
|
-
|
99
|
-
|
100
|
-
|
66
|
+
it do
|
67
|
+
expect { enum_classes }.not_to raise_error
|
68
|
+
end
|
101
69
|
|
102
|
-
|
103
|
-
|
104
|
-
|
70
|
+
it 'returns an array with the corresponding events' do
|
71
|
+
expect(enum_classes).to eq [
|
72
|
+
Evva::MixpanelEnum.new('PageViewSourceScreen', ['course_discovery','synced_courses','nearby','deal']),
|
73
|
+
Evva::MixpanelEnum.new('PremiumClickBuy', ['notes','hi_res_maps','whatever'])
|
74
|
+
]
|
105
75
|
end
|
106
76
|
end
|
107
77
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evva
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RicardoTrindade
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: safe_yaml
|
@@ -38,34 +38,6 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0.7'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: xml-simple
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '1.1'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '1.1'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: webmock
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '1.20'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '1.20'
|
69
41
|
description: Evva generates all the analytics event tracking functions for you
|
70
42
|
email: ricardo.trindade743@gmail.com
|
71
43
|
executables:
|
@@ -76,9 +48,12 @@ files:
|
|
76
48
|
- ".gitignore"
|
77
49
|
- ".rspec"
|
78
50
|
- ".rubocop_todo.yml"
|
51
|
+
- ".ruby-version"
|
52
|
+
- ".travis.yml"
|
79
53
|
- Gemfile
|
80
54
|
- Gemfile.lock
|
81
55
|
- README.md
|
56
|
+
- Rakefile
|
82
57
|
- bin/evva
|
83
58
|
- changelog.md
|
84
59
|
- evva.gemspec
|
@@ -96,10 +71,9 @@ files:
|
|
96
71
|
- lib/evva/version.rb
|
97
72
|
- rubocop.yml
|
98
73
|
- spec/evva_spec.rb
|
99
|
-
- spec/fixtures/sample_public_enums.
|
100
|
-
- spec/fixtures/
|
101
|
-
- spec/fixtures/sample_public_people_properties.
|
102
|
-
- spec/fixtures/sample_public_sheet.html
|
74
|
+
- spec/fixtures/sample_public_enums.csv
|
75
|
+
- spec/fixtures/sample_public_events.csv
|
76
|
+
- spec/fixtures/sample_public_people_properties.csv
|
103
77
|
- spec/fixtures/test.yml
|
104
78
|
- spec/lib/evva/android_generator_spec.rb
|
105
79
|
- spec/lib/evva/config_spec.rb
|
@@ -127,8 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
101
|
- !ruby/object:Gem::Version
|
128
102
|
version: '0'
|
129
103
|
requirements: []
|
130
|
-
|
131
|
-
rubygems_version: 2.5.2
|
104
|
+
rubygems_version: 3.1.6
|
132
105
|
signing_key:
|
133
106
|
specification_version: 4
|
134
107
|
summary: An event generating service
|
@@ -1 +0,0 @@
|
|
1
|
-
<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gsx='http://schemas.google.com/spreadsheets/2006/extended'><id>https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/osju1vh/public/full</id><updated>2017-08-22T10:31:52.161Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#list'/><title type='text'>Enums</title><link rel='alternate' type='application/atom+xml' href='https://docs.google.com/a/hole19golf.com/spreadsheets/d/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/pubhtml'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/osju1vh/public/full'/><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/osju1vh/public/full'/><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/osju1vh/public/full'/><author><name>ricardo.trindade</name><email>ricardo.trindade@hole19golf.com</email></author><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><entry><id>https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/osju1vh/public/full/cokwr</id><updated>2017-08-22T10:31:52.161Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#list'/><title type='text'>PageViewSourceScreen</title><content type='text'>possiblevalues: course_discovery,synced_courses,nearby,deal</content><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/osju1vh/public/full/cokwr'/><gsx:enumname>PageViewSourceScreen</gsx:enumname><gsx:possiblevalues>course_discovery,synced_courses,nearby,deal</gsx:possiblevalues></entry><entry><id>https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/osju1vh/public/full/cpzh4</id><updated>2017-08-22T10:31:52.161Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#list'/><title type='text'>PremiumClickBuy</title><content type='text'>possiblevalues: notes,hi_res_maps,whatever</content><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/osju1vh/public/full/cpzh4'/><gsx:enumname>PremiumClickBuy</gsx:enumname><gsx:possiblevalues>notes,hi_res_maps,whatever</gsx:possiblevalues></entry></feed>
|
@@ -1 +0,0 @@
|
|
1
|
-
<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gs='http://schemas.google.com/spreadsheets/2006'><id>https://spreadsheets.google.com/feeds/worksheets/abcdefgh/public/full</id><updated>2017-08-22T10:31:52.161Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#worksheet'/><title type='text'>TestingEvva</title><link rel='alternate' type='application/atom+xml' href='https://docs.google.com/a/hole19golf.com/spreadsheets/d/abc1234567890/pubhtml'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/worksheets/abc1234567890/public/full'/><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/worksheets/abc1234567890/public/full'/><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/worksheets/abc1234567890/public/full'/><author><name>ricardo.trindade</name><email>ricardo.trindade@hole19golf.com</email></author><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><entry><id>https://spreadsheets.google.com/feeds/worksheets/abc1234567890/public/full/od6</id><updated>2017-08-22T10:31:52.161Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#worksheet'/><title type='text'>Events</title><content type='text'>Events</content><link rel='http://schemas.google.com/spreadsheets/2006#listfeed' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/abc1234567890/od6/public/full'/><link rel='http://schemas.google.com/spreadsheets/2006#cellsfeed' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/cells/abc1234567890/od6/public/full'/><link rel='http://schemas.google.com/visualization/2008#visualizationApi' type='application/atom+xml' href='https://docs.google.com/a/hole19golf.com/spreadsheets/d/abc1234567890/gviz/tq?gid=0&pub=1'/><link rel='http://schemas.google.com/spreadsheets/2006#exportcsv' type='text/csv' href='https://docs.google.com/a/hole19golf.com/spreadsheets/d/abc1234567890/export?gid=0&format=csv'/><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/worksheets/abc1234567890/public/full/od6'/><gs:colCount>26</gs:colCount><gs:rowCount>1000</gs:rowCount></entry><entry><id>https://spreadsheets.google.com/feeds/worksheets/abc1234567890/public/full/ojyi830</id><updated>2017-08-22T10:31:52.161Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#worksheet'/><title type='text'>PeopleProperties</title><content type='text'>PeopleProperties</content><link rel='http://schemas.google.com/spreadsheets/2006#listfeed' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/abc1234567890/ojyi830/public/full'/><link rel='http://schemas.google.com/spreadsheets/2006#cellsfeed' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/cells/abc1234567890/ojyi830/public/full'/><link rel='http://schemas.google.com/visualization/2008#visualizationApi' type='application/atom+xml' href='https://docs.google.com/a/hole19golf.com/spreadsheets/d/abc1234567890/gviz/tq?gid=1206814390&pub=1'/><link rel='http://schemas.google.com/spreadsheets/2006#exportcsv' type='text/csv' href='https://docs.google.com/a/hole19golf.com/spreadsheets/d/abc1234567890/export?gid=1206814390&format=csv'/><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/worksheets/abc1234567890/public/full/ojyi830'/><gs:colCount>26</gs:colCount><gs:rowCount>1000</gs:rowCount></entry><entry><id>https://spreadsheets.google.com/feeds/worksheets/abc1234567890/public/full/osju1vh</id><updated>2017-08-22T10:31:52.161Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#worksheet'/><title type='text'>Enums</title><content type='text'>Enums</content><link rel='http://schemas.google.com/spreadsheets/2006#listfeed' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/abc1234567890/osju1vh/public/full'/><link rel='http://schemas.google.com/spreadsheets/2006#cellsfeed' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/cells/abc1234567890/osju1vh/public/full'/><link rel='http://schemas.google.com/visualization/2008#visualizationApi' type='application/atom+xml' href='https://docs.google.com/a/hole19golf.com/spreadsheets/d/abc1234567890/gviz/tq?gid=1726367271&pub=1'/><link rel='http://schemas.google.com/spreadsheets/2006#exportcsv' type='text/csv' href='https://docs.google.com/a/hole19golf.com/spreadsheets/d/abc1234567890/export?gid=1726367271&format=csv'/><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/worksheets/abc1234567890/public/full/osju1vh'/><gs:colCount>26</gs:colCount><gs:rowCount>1000</gs:rowCount></entry></feed>
|
@@ -1 +0,0 @@
|
|
1
|
-
<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gsx='http://schemas.google.com/spreadsheets/2006/extended'><id>https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/ojyi830/public/full</id><updated>2017-09-06T13:27:41.023Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#list'/><title type='text'>PeopleProperties</title><link rel='alternate' type='application/atom+xml' href='https://docs.google.com/a/hole19golf.com/spreadsheets/d/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/pubhtml'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/ojyi830/public/full'/><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/ojyi830/public/full'/><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/ojyi830/public/full'/><author><name>ricardo.trindade</name><email>ricardo.trindade@hole19golf.com</email></author><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><entry><id>https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/ojyi830/public/full/cokwr</id><updated>2017-09-06T13:27:41.023Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#list'/><title type='text'>roundsWithWear</title><content type='text'>propertyname: rounds_with_wear</content><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/ojyi830/public/full/cokwr'/><gsx:properties>roundsWithWear</gsx:properties><gsx:propertyname>rounds_with_wear</gsx:propertyname></entry><entry><id>https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/ojyi830/public/full/cpzh4</id><updated>2017-09-06T13:27:41.023Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#list'/><title type='text'>totalFriends</title><content type='text'>propertyname: total_friends</content><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/1LaJd68os3g_GFlerogC64grNIlXb2iukMznOvdml7A4/ojyi830/public/full/cpzh4'/><gsx:properties>totalFriends</gsx:properties><gsx:propertyname>total_friends</gsx:propertyname></entry></feed>
|
@@ -1 +0,0 @@
|
|
1
|
-
<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gsx='http://schemas.google.com/spreadsheets/2006/extended'><id>https://spreadsheets.google.com/feeds/list/abc1234567890/od6/public/full</id><updated>2017-08-22T10:31:52.161Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#list'/><title type='text'>Events</title><link rel='alternate' type='application/atom+xml' href='https://docs.google.com/a/hole19golf.com/spreadsheets/d/abc1234567890/pubhtml'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/abc1234567890/od6/public/full'/><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/abc1234567890/od6/public/full'/><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/abc1234567890/od6/public/full'/><author><name>ricardo.trindade</name><email>ricardo.trindade@hole19golf.com</email></author><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><entry><id>https://spreadsheets.google.com/feeds/list/abc1234567890/od6/public/full/cokwr</id><updated>2017-08-22T10:31:52.161Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#list'/><title type='text'>trackCpPageView</title><content type='text'>eventname: cp_page_view, eventproperties: course_id:Long,course_name:String</content><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/abc1234567890/od6/public/full/cokwr'/><gsx:functionname>trackCpPageView</gsx:functionname><gsx:eventname>cp_page_view</gsx:eventname><gsx:eventproperties>course_id:Long,course_name:String</gsx:eventproperties></entry><entry><id>https://spreadsheets.google.com/feeds/list/abc1234567890/od6/public/full/cpzh4</id><updated>2017-08-22T10:31:52.161Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#list'/><title type='text'>trackNavFeedTap</title><content type='text'>eventname: nav_feed_tap</content><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/abc1234567890/od6/public/full/cpzh4'/><gsx:functionname>trackNavFeedTap</gsx:functionname><gsx:eventname>nav_feed_tap</gsx:eventname><gsx:eventproperties></gsx:eventproperties></entry><entry><id>https://spreadsheets.google.com/feeds/list/abc1234567890/od6/public/full/cre1l</id><updated>2017-08-22T10:31:52.161Z</updated><category scheme='http://schemas.google.com/spreadsheets/2006' term='http://schemas.google.com/spreadsheets/2006#list'/><title type='text'>trackCpViewScorecard</title><content type='text'>eventname: cp_view_scorecard, eventproperties: course_id:Long,course_name:String</content><link rel='self' type='application/atom+xml' href='https://spreadsheets.google.com/feeds/list/abc1234567890/od6/public/full/cre1l'/><gsx:functionname>trackCpViewScorecard</gsx:functionname><gsx:eventname>cp_view_scorecard</gsx:eventname><gsx:eventproperties>course_id:Long,course_name:String</gsx:eventproperties></entry></feed>
|