evva 0.1.4.3 → 0.4.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 +5 -5
- data/.gitignore +1 -2
- data/.rspec +0 -1
- data/.rubocop_todo.yml +10 -10
- data/.travis.yml +1 -0
- data/Gemfile +9 -8
- data/Gemfile.lock +7 -11
- data/README.md +12 -2
- data/Rakefile +9 -0
- data/changelog.md +18 -1
- data/evva.gemspec +0 -3
- data/lib/evva/{mixpanel_enum.rb → analytics_enum.rb} +2 -1
- data/lib/evva/analytics_event.rb +17 -0
- data/lib/evva/analytics_property.rb +17 -0
- data/lib/evva/android_generator.rb +141 -84
- data/lib/evva/config.rb +21 -4
- data/lib/evva/google_sheet.rb +69 -44
- data/lib/evva/swift_generator.rb +91 -81
- data/lib/evva/templates/kotlin/base.kt +7 -0
- data/lib/evva/templates/kotlin/destinations.kt +5 -0
- data/lib/evva/templates/kotlin/event_enum.kt +5 -0
- data/lib/evva/templates/kotlin/events.kt +34 -0
- data/lib/evva/templates/kotlin/people_properties.kt +24 -0
- data/lib/evva/templates/kotlin/people_properties_enum.kt +5 -0
- data/lib/evva/templates/kotlin/special_property_enums.kt +10 -0
- data/lib/evva/templates/swift/base.swift +7 -0
- data/lib/evva/templates/swift/destinations.swift +5 -0
- data/lib/evva/templates/swift/events.swift +65 -0
- data/lib/evva/templates/swift/people_properties.swift +49 -0
- data/lib/evva/templates/swift/special_property_enums.swift +10 -0
- data/lib/evva/version.rb +2 -2
- data/lib/evva.rb +16 -6
- data/spec/evva_spec.rb +3 -5
- 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 +4 -0
- data/spec/fixtures/test.yml +9 -4
- data/spec/lib/evva/android_generator_spec.rb +132 -58
- data/spec/lib/evva/config_spec.rb +13 -5
- data/spec/lib/evva/google_sheet_spec.rb +60 -72
- data/spec/lib/evva/swift_generator_spec.rb +153 -40
- metadata +23 -39
- data/evva_config.yml +0 -10
- data/lib/evva/mixpanel_event.rb +0 -13
- 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
@@ -2,14 +2,14 @@ describe Evva::SwiftGenerator do
|
|
2
2
|
let(:generator) { described_class.new }
|
3
3
|
|
4
4
|
describe '#events' do
|
5
|
-
subject { generator.events(event_bundle,
|
5
|
+
subject { generator.events(event_bundle, nil, nil, nil) }
|
6
6
|
|
7
7
|
let(:event_bundle) { [
|
8
|
-
Evva::
|
9
|
-
Evva::
|
10
|
-
Evva::
|
11
|
-
Evva::
|
12
|
-
Evva::
|
8
|
+
Evva::AnalyticsEvent.new('cp_page_view', {}, ['firebase']),
|
9
|
+
Evva::AnalyticsEvent.new('cp_page_view_a', { course_id: 'Long', course_name: 'String' }, ['firebase', 'Custom Destination']),
|
10
|
+
Evva::AnalyticsEvent.new('cp_page_view_b', { course_id: 'Long', course_name: 'String', from_screen: 'CourseProfileSource' }, []),
|
11
|
+
Evva::AnalyticsEvent.new('cp_page_view_c', { course_id: 'Long', course_name: 'String', from_screen: 'CourseProfileSource?' }, []),
|
12
|
+
Evva::AnalyticsEvent.new('cp_page_view_d', { course_id: 'Long?', course_name: 'String' }, []),
|
13
13
|
] }
|
14
14
|
|
15
15
|
let(:expected) {
|
@@ -19,6 +19,29 @@ describe Evva::SwiftGenerator do
|
|
19
19
|
import Foundation
|
20
20
|
|
21
21
|
extension Analytics {
|
22
|
+
struct EventData {
|
23
|
+
let name: String
|
24
|
+
var properties: [String: Any]?
|
25
|
+
let destinations: [Destination]
|
26
|
+
|
27
|
+
init(name: String, properties: [String: Any]?, destinations: [Destination]) {
|
28
|
+
self.name = name
|
29
|
+
self.properties = properties
|
30
|
+
self.destinations = destinations
|
31
|
+
}
|
32
|
+
|
33
|
+
init(name: EventName, properties: [String: Any]?, destinations: [Destination]) {
|
34
|
+
self.init(name: name.rawValue, properties: properties, destinations: destinations)
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
enum EventName: String {
|
39
|
+
case cpPageView = "cp_page_view"
|
40
|
+
case cpPageViewA = "cp_page_view_a"
|
41
|
+
case cpPageViewB = "cp_page_view_b"
|
42
|
+
case cpPageViewC = "cp_page_view_c"
|
43
|
+
case cpPageViewD = "cp_page_view_d"
|
44
|
+
}
|
22
45
|
|
23
46
|
enum Event {
|
24
47
|
case cpPageView
|
@@ -30,33 +53,48 @@ extension Analytics {
|
|
30
53
|
var data: EventData {
|
31
54
|
switch self {
|
32
55
|
case .cpPageView:
|
33
|
-
return EventData(name:
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
56
|
+
return EventData(name: .cpPageView,
|
57
|
+
properties: nil,
|
58
|
+
destinations: [
|
59
|
+
.firebase,
|
60
|
+
])
|
61
|
+
|
62
|
+
case let .cpPageViewA(course_id, course_name):
|
63
|
+
return EventData(name: .cpPageViewA,
|
64
|
+
properties: [
|
65
|
+
"course_id": course_id as Any,
|
66
|
+
"course_name": course_name as Any,
|
67
|
+
],
|
68
|
+
destinations: [
|
69
|
+
.firebase,
|
70
|
+
.customDestination,
|
71
|
+
])
|
72
|
+
|
73
|
+
case let .cpPageViewB(course_id, course_name, from_screen):
|
74
|
+
return EventData(name: .cpPageViewB,
|
75
|
+
properties: [
|
76
|
+
"course_id": course_id as Any,
|
77
|
+
"course_name": course_name as Any,
|
78
|
+
"from_screen": from_screen.rawValue as Any,
|
79
|
+
],
|
80
|
+
destinations: [])
|
81
|
+
|
82
|
+
case let .cpPageViewC(course_id, course_name, from_screen):
|
83
|
+
return EventData(name: .cpPageViewC,
|
84
|
+
properties: [
|
85
|
+
"course_id": course_id as Any,
|
86
|
+
"course_name": course_name as Any,
|
87
|
+
"from_screen": from_screen?.rawValue as Any,
|
88
|
+
],
|
89
|
+
destinations: [])
|
90
|
+
|
91
|
+
case let .cpPageViewD(course_id, course_name):
|
92
|
+
return EventData(name: .cpPageViewD,
|
93
|
+
properties: [
|
94
|
+
"course_id": course_id as Any,
|
95
|
+
"course_name": course_name as Any,
|
96
|
+
],
|
97
|
+
destinations: [])
|
60
98
|
}
|
61
99
|
}
|
62
100
|
}
|
@@ -71,8 +109,8 @@ Swift
|
|
71
109
|
subject { generator.special_property_enums(enums) }
|
72
110
|
|
73
111
|
let(:enums) { [
|
74
|
-
Evva::
|
75
|
-
Evva::
|
112
|
+
Evva::AnalyticsEnum.new('CourseProfileSource', ['course_discovery', 'synced_courses']),
|
113
|
+
Evva::AnalyticsEnum.new('PremiumFrom', ['Course Profile', 'Round Setup']),
|
76
114
|
] }
|
77
115
|
|
78
116
|
let(:expected) {
|
@@ -82,7 +120,6 @@ Swift
|
|
82
120
|
import Foundation
|
83
121
|
|
84
122
|
extension Analytics {
|
85
|
-
|
86
123
|
enum CourseProfileSource: String {
|
87
124
|
case courseDiscovery = "course_discovery"
|
88
125
|
case syncedCourses = "synced_courses"
|
@@ -100,9 +137,13 @@ Swift
|
|
100
137
|
end
|
101
138
|
|
102
139
|
describe "#people_properties" do
|
103
|
-
subject { generator.people_properties(people_bundle, "") }
|
140
|
+
subject { generator.people_properties(people_bundle, "", "", "") }
|
104
141
|
|
105
|
-
let(:people_bundle) { [
|
142
|
+
let(:people_bundle) { [
|
143
|
+
Evva::AnalyticsProperty.new('rounds_with_wear', 'String', ["firebase"]),
|
144
|
+
Evva::AnalyticsProperty.new('wear_platform', 'WearableAppPlatform', ["firebase", "custom destination"]),
|
145
|
+
Evva::AnalyticsProperty.new('number_of_times_it_happened', 'Long', []),
|
146
|
+
] }
|
106
147
|
|
107
148
|
let(:expected) {
|
108
149
|
<<-Swift
|
@@ -111,10 +152,82 @@ Swift
|
|
111
152
|
import Foundation
|
112
153
|
|
113
154
|
extension Analytics {
|
155
|
+
struct PropertyData {
|
156
|
+
let name: String
|
157
|
+
let value: Any
|
158
|
+
let destinations: [Destination]
|
159
|
+
|
160
|
+
init(name: String, value: Any, destinations: [Destination]) {
|
161
|
+
self.name = name
|
162
|
+
self.value = value
|
163
|
+
self.destinations = destinations
|
164
|
+
}
|
114
165
|
|
115
|
-
|
166
|
+
init(name: PropertyName, value: Any, destinations: [Destination]) {
|
167
|
+
self.init(name: name.rawValue, value: value, destinations: destinations)
|
168
|
+
}
|
169
|
+
}
|
170
|
+
|
171
|
+
enum PropertyName: String {
|
116
172
|
case roundsWithWear = "rounds_with_wear"
|
117
|
-
case
|
173
|
+
case wearPlatform = "wear_platform"
|
174
|
+
case numberOfTimesItHappened = "number_of_times_it_happened"
|
175
|
+
}
|
176
|
+
|
177
|
+
enum Property {
|
178
|
+
case roundsWithWear(String)
|
179
|
+
case wearPlatform(WearableAppPlatform)
|
180
|
+
case numberOfTimesItHappened(Int)
|
181
|
+
|
182
|
+
var data: PropertyData {
|
183
|
+
switch self {
|
184
|
+
case let .roundsWithWear(value):
|
185
|
+
return PropertyData(name: .roundsWithWear,
|
186
|
+
value: value,
|
187
|
+
destinations: [
|
188
|
+
.firebase,
|
189
|
+
])
|
190
|
+
|
191
|
+
case let .wearPlatform(value):
|
192
|
+
return PropertyData(name: .wearPlatform,
|
193
|
+
value: value.rawValue,
|
194
|
+
destinations: [
|
195
|
+
.firebase,
|
196
|
+
.customDestination,
|
197
|
+
])
|
198
|
+
|
199
|
+
case let .numberOfTimesItHappened(value):
|
200
|
+
return PropertyData(name: .numberOfTimesItHappened,
|
201
|
+
value: value,
|
202
|
+
destinations: [])
|
203
|
+
}
|
204
|
+
}
|
205
|
+
}
|
206
|
+
}
|
207
|
+
Swift
|
208
|
+
}
|
209
|
+
|
210
|
+
it { should eq expected }
|
211
|
+
end
|
212
|
+
|
213
|
+
describe "#destinations" do
|
214
|
+
subject { generator.destinations(destinations, "") }
|
215
|
+
|
216
|
+
let(:destinations) { [
|
217
|
+
'firebase',
|
218
|
+
'whatever you want really'
|
219
|
+
] }
|
220
|
+
|
221
|
+
let(:expected) {
|
222
|
+
<<-Swift
|
223
|
+
// This file was automatically generated by evva: https://github.com/hole19/evva
|
224
|
+
|
225
|
+
import Foundation
|
226
|
+
|
227
|
+
extension Analytics {
|
228
|
+
enum Destination {
|
229
|
+
case firebase
|
230
|
+
case whateverYouWantReally
|
118
231
|
}
|
119
232
|
}
|
120
233
|
Swift
|
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.4.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-12-21 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,30 +48,43 @@ files:
|
|
76
48
|
- ".gitignore"
|
77
49
|
- ".rspec"
|
78
50
|
- ".rubocop_todo.yml"
|
51
|
+
- ".travis.yml"
|
79
52
|
- Gemfile
|
80
53
|
- Gemfile.lock
|
81
54
|
- README.md
|
55
|
+
- Rakefile
|
82
56
|
- bin/evva
|
83
57
|
- changelog.md
|
84
58
|
- evva.gemspec
|
85
|
-
- evva_config.yml
|
86
59
|
- lib/evva.rb
|
60
|
+
- lib/evva/analytics_enum.rb
|
61
|
+
- lib/evva/analytics_event.rb
|
62
|
+
- lib/evva/analytics_property.rb
|
87
63
|
- lib/evva/android_generator.rb
|
88
64
|
- lib/evva/config.rb
|
89
65
|
- lib/evva/file_reader.rb
|
90
66
|
- lib/evva/google_sheet.rb
|
91
67
|
- lib/evva/logger.rb
|
92
|
-
- lib/evva/mixpanel_enum.rb
|
93
|
-
- lib/evva/mixpanel_event.rb
|
94
68
|
- lib/evva/object_extension.rb
|
95
69
|
- lib/evva/swift_generator.rb
|
70
|
+
- lib/evva/templates/kotlin/base.kt
|
71
|
+
- lib/evva/templates/kotlin/destinations.kt
|
72
|
+
- lib/evva/templates/kotlin/event_enum.kt
|
73
|
+
- lib/evva/templates/kotlin/events.kt
|
74
|
+
- lib/evva/templates/kotlin/people_properties.kt
|
75
|
+
- lib/evva/templates/kotlin/people_properties_enum.kt
|
76
|
+
- lib/evva/templates/kotlin/special_property_enums.kt
|
77
|
+
- lib/evva/templates/swift/base.swift
|
78
|
+
- lib/evva/templates/swift/destinations.swift
|
79
|
+
- lib/evva/templates/swift/events.swift
|
80
|
+
- lib/evva/templates/swift/people_properties.swift
|
81
|
+
- lib/evva/templates/swift/special_property_enums.swift
|
96
82
|
- lib/evva/version.rb
|
97
83
|
- rubocop.yml
|
98
84
|
- 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
|
85
|
+
- spec/fixtures/sample_public_enums.csv
|
86
|
+
- spec/fixtures/sample_public_events.csv
|
87
|
+
- spec/fixtures/sample_public_people_properties.csv
|
103
88
|
- spec/fixtures/test.yml
|
104
89
|
- spec/lib/evva/android_generator_spec.rb
|
105
90
|
- spec/lib/evva/config_spec.rb
|
@@ -127,8 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
112
|
- !ruby/object:Gem::Version
|
128
113
|
version: '0'
|
129
114
|
requirements: []
|
130
|
-
|
131
|
-
rubygems_version: 2.5.2
|
115
|
+
rubygems_version: 3.1.6
|
132
116
|
signing_key:
|
133
117
|
specification_version: 4
|
134
118
|
summary: An event generating service
|
data/evva_config.yml
DELETED
data/lib/evva/mixpanel_event.rb
DELETED
@@ -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>
|