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 CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.1.0
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{google_analytics_feeds}
8
- s.version = "0.0.1"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [%q{Roland Swingler}]
@@ -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: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 0
9
8
  - 1
10
- version: 0.0.1
9
+ - 0
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Roland Swingler