keen 0.8.9 → 0.8.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8215941d3fa167bb6a6dee9cca7676cbe7eb1747
4
+ data.tar.gz: 70feb127ffdda8835bab9a88bcb60cc181445d4e
5
+ SHA512:
6
+ metadata.gz: b84e12067e3cd9407ddc50fa7d84c84f957da770ee00986c830a37ef2f2973e7f28c5acc81dff0705bd955545e0ace977a6eeaca7fbe89944823e1b9402832df
7
+ data.tar.gz: dec784de84eb32a24c3386b0af53d606f80b5640153ee86e8b33b5c7be9051668f86ff8846a9b0ae86b232de9ea964a9efa482536c27a4fb5a0c2db429544727
data/README.md CHANGED
@@ -175,6 +175,7 @@ This simplifes querying code where the analysis type is dynamic.
175
175
  Each query method or alias takes an optional hash of options as an additional parameter. Possible keys are:
176
176
 
177
177
  `:response` – Set to `:all_keys` to return the full API response (usually only the value of the `"result"` key is returned).
178
+ `:method` - Set to `:post` to enable post body based query (https://keen.io/docs/data-analysis/post-queries/).
178
179
 
179
180
  ##### Getting Query URLs
180
181
 
@@ -376,8 +377,19 @@ loop has died. This can happen for a variety of reasons, and every app is differ
376
377
  If you write a script that uses `publish_async`, you need to keep the script alive long enough for the call(s) to complete.
377
378
  EventMachine itself won't do this because it runs in a different thread. Here's an [example gist](https://gist.github.com/dzello/7472823) that shows how to exit the process after the event has been recorded.
378
379
 
380
+ ### Additional Considerations
381
+
382
+ ##### Bots
383
+
384
+ It's not just us humans that browse the web. Spiders, crawlers, and bots share the pipes too. When it comes to analytics, this can cause a mild headache. Events generated by bots can inflate your metrics and eat up your event quota.
385
+
386
+ If you want some bot protection, check out the [Voight-Kampff](https://github.com/biola/Voight-Kampff) gem. Use the gem's `request.bot?` method to detect bots and avoid logging events.
387
+
379
388
  ### Changelog
380
389
 
390
+ ##### 0.8.10
391
+ + Added support for posting queries. Thanks [@soloman1124](https://github.com/soloman1124).
392
+
381
393
  ##### 0.8.9
382
394
  + Fix proxy support for sync client. Thanks [@nvieirafelipe](https://github.com/nvieirafelipe)!
383
395
 
data/keen.gemspec CHANGED
@@ -5,8 +5,8 @@ require "keen/version"
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "keen"
7
7
  s.version = Keen::VERSION
8
- s.authors = ["Kyle Wild", "Josh Dzielak", "Daniel Kador"]
9
- s.email = "josh@keen.io"
8
+ s.authors = ["Alex Kleissner", "Josh Dzielak", "Joe Wegner"]
9
+ s.email = "opensource@keen.io"
10
10
  s.homepage = "https://github.com/keenlabs/keen-gem"
11
11
  s.summary = "Keen IO API Client"
12
12
  s.description = "Send events and build analytics features into your Ruby applications."
@@ -220,8 +220,14 @@ module Keen
220
220
  # filters (optional) [Array]
221
221
  # timezone (optional)
222
222
  def query(analysis_type, event_collection, params={}, options={})
223
- url = _query_url(analysis_type, event_collection, params, options)
224
- response = get_response(url)
223
+ response =
224
+ if options[:method] == :post
225
+ post_query(analysis_type, event_collection, params)
226
+ else
227
+ url = _query_url(analysis_type, event_collection, params, options)
228
+ get_response(url)
229
+ end
230
+
225
231
  response_body = response.body.chomp
226
232
  api_result = process_response(response.code, response_body)
227
233
  api_result = api_result["result"] unless options[:response] == :all_keys
@@ -230,6 +236,21 @@ module Keen
230
236
 
231
237
  private
232
238
 
239
+ def post_query(analysis_type, event_collection, params={})
240
+ ensure_project_id!
241
+ ensure_read_key!
242
+
243
+ query_params = params.dup
244
+ query_params[:event_collection] = event_collection.to_s if event_collection
245
+ Keen::HTTP::Sync.new(self.api_url, self.proxy_url, self.read_timeout).post(
246
+ :path => api_query_resource_path(analysis_type),
247
+ :headers => api_headers(self.read_key, "sync"),
248
+ :body => MultiJson.encode(query_params)
249
+ )
250
+ rescue Exception => http_error
251
+ raise HttpError.new("Couldn't perform #{@analysis_type} on Keen IO: #{http_error.message}", http_error)
252
+ end
253
+
233
254
  def _query_url(analysis_type, event_collection, params={}, options={})
234
255
  ensure_project_id!
235
256
  ensure_read_key!
data/lib/keen/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Keen
2
- VERSION = "0.8.9"
2
+ VERSION = "0.8.10"
3
3
  end
@@ -10,7 +10,7 @@ describe Keen::Client do
10
10
  :project_id => project_id, :read_key => read_key,
11
11
  :api_url => api_url ) }
12
12
 
13
- def query_url(query_name, query_params)
13
+ def query_url(query_name, query_params = "")
14
14
  "#{api_url}/#{api_version}/projects/#{project_id}/queries/#{query_name}#{query_params}"
15
15
  end
16
16
 
@@ -147,6 +147,19 @@ describe Keen::Client do
147
147
  api_response = query.call("funnel", nil, { :steps => [] }, { :response => :all_keys })
148
148
  api_response.should == { "result" => [1] }
149
149
  end
150
+
151
+ it "should call API with post body if method opton is set to post " do
152
+ steps = [{
153
+ :event_collection => "sign ups",
154
+ :actor_property => "user.id"
155
+ }]
156
+ expected_url = query_url("funnel")
157
+ stub_keen_post(expected_url, 200, :result => 1)
158
+ response = query.call("funnel", nil, { :steps => steps }, { :method => :post })
159
+
160
+ expect_keen_post(expected_url, { :steps => steps }, "sync", read_key)
161
+ response.should == api_response["result"]
162
+ end
150
163
  end
151
164
  end
152
165
 
metadata CHANGED
@@ -1,187 +1,152 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.9
5
- prerelease:
4
+ version: 0.8.10
6
5
  platform: ruby
7
6
  authors:
8
- - Kyle Wild
7
+ - Alex Kleissner
9
8
  - Josh Dzielak
10
- - Daniel Kador
9
+ - Joe Wegner
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2015-02-27 00:00:00.000000000 Z
13
+ date: 2015-05-04 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: multi_json
18
17
  requirement: !ruby/object:Gem::Requirement
19
- none: false
20
18
  requirements:
21
- - - ~>
19
+ - - "~>"
22
20
  - !ruby/object:Gem::Version
23
21
  version: '1.3'
24
22
  type: :runtime
25
23
  prerelease: false
26
24
  version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
25
  requirements:
29
- - - ~>
26
+ - - "~>"
30
27
  - !ruby/object:Gem::Version
31
28
  version: '1.3'
32
29
  - !ruby/object:Gem::Dependency
33
30
  name: addressable
34
31
  requirement: !ruby/object:Gem::Requirement
35
- none: false
36
32
  requirements:
37
- - - ~>
33
+ - - "~>"
38
34
  - !ruby/object:Gem::Version
39
35
  version: 2.3.5
40
36
  type: :runtime
41
37
  prerelease: false
42
38
  version_requirements: !ruby/object:Gem::Requirement
43
- none: false
44
39
  requirements:
45
- - - ~>
40
+ - - "~>"
46
41
  - !ruby/object:Gem::Version
47
42
  version: 2.3.5
48
43
  - !ruby/object:Gem::Dependency
49
44
  name: guard
50
45
  requirement: !ruby/object:Gem::Requirement
51
- none: false
52
46
  requirements:
53
- - - ! '>='
47
+ - - ">="
54
48
  - !ruby/object:Gem::Version
55
49
  version: '0'
56
50
  type: :development
57
51
  prerelease: false
58
52
  version_requirements: !ruby/object:Gem::Requirement
59
- none: false
60
53
  requirements:
61
- - - ! '>='
54
+ - - ">="
62
55
  - !ruby/object:Gem::Version
63
56
  version: '0'
64
57
  - !ruby/object:Gem::Dependency
65
58
  name: guard-rspec
66
59
  requirement: !ruby/object:Gem::Requirement
67
- none: false
68
60
  requirements:
69
- - - ! '>='
61
+ - - ">="
70
62
  - !ruby/object:Gem::Version
71
63
  version: '0'
72
64
  type: :development
73
65
  prerelease: false
74
66
  version_requirements: !ruby/object:Gem::Requirement
75
- none: false
76
67
  requirements:
77
- - - ! '>='
68
+ - - ">="
78
69
  - !ruby/object:Gem::Version
79
70
  version: '0'
80
71
  - !ruby/object:Gem::Dependency
81
72
  name: rb-inotify
82
73
  requirement: !ruby/object:Gem::Requirement
83
- none: false
84
74
  requirements:
85
- - - ! '>='
75
+ - - ">="
86
76
  - !ruby/object:Gem::Version
87
77
  version: '0'
88
78
  type: :development
89
79
  prerelease: false
90
80
  version_requirements: !ruby/object:Gem::Requirement
91
- none: false
92
81
  requirements:
93
- - - ! '>='
82
+ - - ">="
94
83
  - !ruby/object:Gem::Version
95
84
  version: '0'
96
85
  - !ruby/object:Gem::Dependency
97
86
  name: rb-fsevent
98
87
  requirement: !ruby/object:Gem::Requirement
99
- none: false
100
88
  requirements:
101
- - - ! '>='
89
+ - - ">="
102
90
  - !ruby/object:Gem::Version
103
91
  version: '0'
104
92
  type: :development
105
93
  prerelease: false
106
94
  version_requirements: !ruby/object:Gem::Requirement
107
- none: false
108
95
  requirements:
109
- - - ! '>='
96
+ - - ">="
110
97
  - !ruby/object:Gem::Version
111
98
  version: '0'
112
99
  - !ruby/object:Gem::Dependency
113
100
  name: rb-fchange
114
101
  requirement: !ruby/object:Gem::Requirement
115
- none: false
116
102
  requirements:
117
- - - ! '>='
103
+ - - ">="
118
104
  - !ruby/object:Gem::Version
119
105
  version: '0'
120
106
  type: :development
121
107
  prerelease: false
122
108
  version_requirements: !ruby/object:Gem::Requirement
123
- none: false
124
109
  requirements:
125
- - - ! '>='
110
+ - - ">="
126
111
  - !ruby/object:Gem::Version
127
112
  version: '0'
128
113
  - !ruby/object:Gem::Dependency
129
114
  name: ruby_gntp
130
115
  requirement: !ruby/object:Gem::Requirement
131
- none: false
132
116
  requirements:
133
- - - ! '>='
117
+ - - ">="
134
118
  - !ruby/object:Gem::Version
135
119
  version: '0'
136
120
  type: :development
137
121
  prerelease: false
138
122
  version_requirements: !ruby/object:Gem::Requirement
139
- none: false
140
123
  requirements:
141
- - - ! '>='
124
+ - - ">="
142
125
  - !ruby/object:Gem::Version
143
126
  version: '0'
144
127
  - !ruby/object:Gem::Dependency
145
128
  name: rb-readline
146
129
  requirement: !ruby/object:Gem::Requirement
147
- none: false
148
130
  requirements:
149
- - - ! '>='
131
+ - - ">="
150
132
  - !ruby/object:Gem::Version
151
133
  version: '0'
152
134
  type: :development
153
135
  prerelease: false
154
136
  version_requirements: !ruby/object:Gem::Requirement
155
- none: false
156
137
  requirements:
157
- - - ! '>='
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- - !ruby/object:Gem::Dependency
161
- name: debugger
162
- requirement: !ruby/object:Gem::Requirement
163
- none: false
164
- requirements:
165
- - - ! '>='
166
- - !ruby/object:Gem::Version
167
- version: '0'
168
- type: :development
169
- prerelease: false
170
- version_requirements: !ruby/object:Gem::Requirement
171
- none: false
172
- requirements:
173
- - - ! '>='
138
+ - - ">="
174
139
  - !ruby/object:Gem::Version
175
140
  version: '0'
176
141
  description: Send events and build analytics features into your Ruby applications.
177
- email: josh@keen.io
142
+ email: opensource@keen.io
178
143
  executables: []
179
144
  extensions: []
180
145
  extra_rdoc_files: []
181
146
  files:
182
- - .gitignore
183
- - .rspec
184
- - .travis.yml
147
+ - ".gitignore"
148
+ - ".rspec"
149
+ - ".travis.yml"
185
150
  - Gemfile
186
151
  - Guardfile
187
152
  - LICENSE
@@ -213,27 +178,26 @@ files:
213
178
  homepage: https://github.com/keenlabs/keen-gem
214
179
  licenses:
215
180
  - MIT
181
+ metadata: {}
216
182
  post_install_message:
217
183
  rdoc_options: []
218
184
  require_paths:
219
185
  - lib
220
186
  required_ruby_version: !ruby/object:Gem::Requirement
221
- none: false
222
187
  requirements:
223
- - - ! '>='
188
+ - - ">="
224
189
  - !ruby/object:Gem::Version
225
190
  version: '0'
226
191
  required_rubygems_version: !ruby/object:Gem::Requirement
227
- none: false
228
192
  requirements:
229
- - - ! '>='
193
+ - - ">="
230
194
  - !ruby/object:Gem::Version
231
195
  version: '0'
232
196
  requirements: []
233
197
  rubyforge_project:
234
- rubygems_version: 1.8.23
198
+ rubygems_version: 2.2.2
235
199
  signing_key:
236
- specification_version: 3
200
+ specification_version: 4
237
201
  summary: Keen IO API Client
238
202
  test_files:
239
203
  - spec/integration/api_spec.rb
@@ -248,4 +212,3 @@ test_files:
248
212
  - spec/spec_helper.rb
249
213
  - spec/synchrony/spec_helper.rb
250
214
  - spec/synchrony/synchrony_spec.rb
251
- has_rdoc: