google_analytics_feeds 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/google_analytics_feeds.gemspec +1 -1
- data/lib/google_analytics_feeds.rb +68 -0
- data/spec/request_spec.rb +13 -0
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
@@ -133,6 +133,67 @@ module GoogleAnalyticsFeeds
|
|
133
133
|
end
|
134
134
|
end
|
135
135
|
|
136
|
+
class FilterBuilder
|
137
|
+
include Naming
|
138
|
+
|
139
|
+
def initialize
|
140
|
+
@filters = []
|
141
|
+
end
|
142
|
+
|
143
|
+
def build(&block)
|
144
|
+
instance_eval(&block)
|
145
|
+
@filters.join(';')
|
146
|
+
end
|
147
|
+
|
148
|
+
# TODO: remove duplication
|
149
|
+
|
150
|
+
def eql(name, value)
|
151
|
+
filter(name, value, '==')
|
152
|
+
end
|
153
|
+
|
154
|
+
def not_eql(name, value)
|
155
|
+
filter(name, value, '!=')
|
156
|
+
end
|
157
|
+
|
158
|
+
def contains(n, v)
|
159
|
+
filter(n, v, '=@')
|
160
|
+
end
|
161
|
+
|
162
|
+
def not_contains(n, v)
|
163
|
+
filter(n, v, '!@')
|
164
|
+
end
|
165
|
+
|
166
|
+
def gt(n, v)
|
167
|
+
filter(n, v, '>')
|
168
|
+
end
|
169
|
+
|
170
|
+
def gte(n, v)
|
171
|
+
filter(n, v, '>=')
|
172
|
+
end
|
173
|
+
|
174
|
+
def lt(n, v)
|
175
|
+
filter(n, v, '<')
|
176
|
+
end
|
177
|
+
|
178
|
+
def lte(n, v)
|
179
|
+
filter(n, v, '<=')
|
180
|
+
end
|
181
|
+
|
182
|
+
def match(n, v)
|
183
|
+
filter(n, v, '=~')
|
184
|
+
end
|
185
|
+
|
186
|
+
def not_match(n, v)
|
187
|
+
filter(n, v, '!~')
|
188
|
+
end
|
189
|
+
|
190
|
+
private
|
191
|
+
|
192
|
+
def filter(name, value, operation)
|
193
|
+
@filters << [symbol_to_name(name), operation, value.to_s].join('')
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
136
197
|
class DataFeed
|
137
198
|
include Naming
|
138
199
|
|
@@ -179,6 +240,13 @@ module GoogleAnalyticsFeeds
|
|
179
240
|
}
|
180
241
|
end
|
181
242
|
|
243
|
+
def filters(&block)
|
244
|
+
builder =
|
245
|
+
clone_and_set {|params|
|
246
|
+
params['filters'] = FilterBuilder.new.build(&block)
|
247
|
+
}
|
248
|
+
end
|
249
|
+
|
182
250
|
# Sorts the result set by a column.
|
183
251
|
#
|
184
252
|
# Direction can be :asc or :desc.
|
data/spec/request_spec.rb
CHANGED
@@ -44,4 +44,17 @@ describe GoogleAnalyticsFeeds::DataFeed do
|
|
44
44
|
|
45
45
|
headers["Authorization"].should == "GoogleLogin auth=123"
|
46
46
|
end
|
47
|
+
|
48
|
+
it "can add filters" do
|
49
|
+
feed = described_class.new.
|
50
|
+
filters {
|
51
|
+
eql :baz, 4
|
52
|
+
contains :foo, "123"
|
53
|
+
}
|
54
|
+
|
55
|
+
uri = Addressable::URI.parse(feed.uri)
|
56
|
+
uri.query_values.should == {
|
57
|
+
"filters" => "ga:baz==4;ga:foo=@123"
|
58
|
+
}
|
59
|
+
end
|
47
60
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google_analytics_feeds
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
- 0
|
9
8
|
- 1
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Roland Swingler
|