keen 0.7.7 → 0.7.8

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Keen IO Official Ruby Client Library
2
2
 
3
- [![Build Status](https://secure.travis-ci.org/keenlabs/keen-gem.png?branch=master)](http://travis-ci.org/keenlabs/keen-gem)
3
+ [![Build Status](https://secure.travis-ci.org/keenlabs/keen-gem.png?branch=master)](http://travis-ci.org/keenlabs/keen-gem) [![Code Climate](https://codeclimate.com/github/keenlabs/keen-gem.png)](https://codeclimate.com/github/keenlabs/keen-gem)
4
4
 
5
5
  keen-gem is the official Ruby Client for the [Keen IO](https://keen.io/) API. The
6
6
  Keen IO API lets developers build analytics features directly into their apps.
@@ -224,6 +224,17 @@ Keen.beacon_url("sign_ups", :recipient => "foo@foo.com")
224
224
 
225
225
  To track email opens, simply add an image to your email template that points to this URL.
226
226
 
227
+ #### Redirect URL's
228
+ Redirect URL's are just like image beacon URL's with the addition of a `redirect` query parameter. This parameter is used
229
+ to issue a redirect to a certain URL after an event is recorded.
230
+
231
+ ```
232
+ Keen.redirect_url("sign_ups", { :recipient => "foo@foo.com" }, "http://foo.com")
233
+ # => "https://api.keen.io/3.0/projects/xxxxxx/events/email_opens?api_key=yyyyyy&data=eyJyZWNpcGllbnQiOiJmb29AZm9vLmNvbSJ9&redirect=http://foo.com"
234
+ ```
235
+
236
+ This is helpful for tracking email clickthroughs.
237
+
227
238
  ### Changelog
228
239
 
229
240
  ##### 0.7.7
data/lib/keen.rb CHANGED
@@ -38,7 +38,7 @@ module Keen
38
38
 
39
39
  def_delegators :default_client,
40
40
  :publish, :publish_async, :publish_batch,
41
- :beacon_url
41
+ :beacon_url, :redirect_url
42
42
 
43
43
  def_delegators :default_client,
44
44
  :count, :count_unique, :minimum, :maximum,
@@ -113,6 +113,22 @@ module Keen
113
113
  "#{self.api_url}#{api_event_collection_resource_path(event_collection)}?api_key=#{self.write_key}&data=#{data}"
114
114
  end
115
115
 
116
+ # Returns an encoded URL that will record an event and then redirect. Useful in email situations.
117
+ # See detailed documentation here
118
+ # https://keen.io/docs/api/reference/#event-collection-resource
119
+ #
120
+ # @param event_collection
121
+ # @param [Hash] event properties
122
+ #
123
+ # @return a URL that will track an event when hit
124
+ def redirect_url(event_collection, properties, redirect_url)
125
+ require 'open-uri'
126
+ encoded_url = URI::encode(redirect_url)
127
+ json = MultiJson.encode(properties)
128
+ data = [json].pack("m0").tr("+/", "-_").gsub("\n", "")
129
+ "#{self.api_url}#{api_event_collection_resource_path(event_collection)}?api_key=#{self.write_key}&data=#{data}&redirect=#{encoded_url}"
130
+ end
131
+
116
132
  private
117
133
 
118
134
  def publish_body(path, body, error_method)
data/lib/keen/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Keen
2
- VERSION = "0.7.7"
2
+ VERSION = "0.7.8"
3
3
  end
@@ -230,4 +230,11 @@ describe Keen::Client::PublishingMethods do
230
230
  "#{api_url}/3.0/projects/12345/events/sign_ups?api_key=#{write_key}&data=eyJuYW1lIjoiQm9iIn0="
231
231
  end
232
232
  end
233
+
234
+ describe "redirect_url" do
235
+ it "should return a url with a base-64 encoded json param and an encoded redirect url" do
236
+ client.redirect_url("sign_ups", { :name => "Bob" }, "http://keen.io/?foo=bar&bar=baz").should ==
237
+ "#{api_url}/3.0/projects/12345/events/sign_ups?api_key=#{write_key}&data=eyJuYW1lIjoiQm9iIn0=&redirect=http://keen.io/?foo=bar&bar=baz"
238
+ end
239
+ end
233
240
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.7
4
+ version: 0.7.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-08-06 00:00:00.000000000 Z
14
+ date: 2013-11-14 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: multi_json