checkdin 0.2.8 → 0.2.9

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- checkdin (0.2.7)
4
+ checkdin (0.2.8)
5
5
  activesupport (>= 2.0.3)
6
6
  faraday (~> 0.8)
7
7
  faraday_middleware
@@ -13,6 +13,7 @@ module Checkdin
13
13
  include Leaderboard
14
14
  include Votes
15
15
  include Clients
16
+ include PushApiSubscriptions
16
17
 
17
18
  attr_reader :client_id, :client_secret
18
19
  attr_reader :ssl
@@ -0,0 +1,39 @@
1
+ module Checkdin
2
+ module PushApiSubscriptions
3
+
4
+ # Retrieve information about a push API subscription
5
+ #
6
+ # param [Integer] id The ID of the subscription
7
+
8
+ def push_api_subscription(id)
9
+ response = connection.get("push_api_subscriptions/#{id}")
10
+ return_error_or_body(response)
11
+ end
12
+
13
+ # Get a list of all push api subscriptions for the authenticating client.
14
+
15
+ def push_api_subscriptions
16
+ response = connection.get("push_api_subscriptions")
17
+ return_error_or_body(response)
18
+ end
19
+
20
+ # Enable a push API subscription
21
+ #
22
+ # param [Integer] id The ID of the subscription to enable
23
+
24
+ def enable_push_api_subscription(id)
25
+ response = connection.put("push_api_subscriptions/#{id}/enable")
26
+ return_error_or_body(response)
27
+ end
28
+
29
+ # Disable a push API subscription
30
+ #
31
+ # param [Integer] id The ID of the subscription to disable
32
+
33
+ def disable_push_api_subscription(id)
34
+ response = connection.put("push_api_subscriptions/#{id}/disable")
35
+ return_error_or_body(response)
36
+ end
37
+
38
+ end
39
+ end
@@ -5,7 +5,7 @@ module Checkdin
5
5
  attr :client_identifier, :bridge_secret
6
6
  attr :checkdin_landing_url
7
7
 
8
- # Used to build the authenticated parameters for logging in an end-user on
8
+ # Used to build the authenticated parameters for logging in an end-user on
9
9
  # checkd.in via a redirect.
10
10
  #
11
11
  # options - a hash with a the following values defined:
@@ -52,6 +52,7 @@ module Checkdin
52
52
  # classification - OPTIONAL, the internal group or classification a user belongs to
53
53
  # delivery_email - OPTIONAL, whether a user should receive email notifications
54
54
  # delivery_sms - OPTIONAL, whether a user should receive sms notifications
55
+ # campaign_id - OPTIONAL, automatically join a user to this campaign, rewarding existing known actions
55
56
  #
56
57
  # Returns a URL you can use for redirecting a user. Notice this will expire, so it should
57
58
  # be generated and used only when a user actually wants to log into checkd.in.
@@ -45,8 +45,9 @@ module Checkdin
45
45
  # @option options String :mobile_number - OPTIONAL, XXXYYYZZZZ format
46
46
  # @option options String :postal_code_text - OPTIONAL, XXXXX format
47
47
  # @option options String :classification - OPTIONAL, the internal group or classification a user belongs to
48
- # @option options String :delivery_email - OPTIONAL, whether a user should receive email notifications
49
- # @option options String :delivery_sms - OPTIONAL, whether a user should receive sms notifications
48
+ # @option options Boolean :delivery_email - OPTIONAL, whether a user should receive email notifications
49
+ # @option options Boolean :delivery_sms - OPTIONAL, whether a user should receive sms notifications
50
+ # @option options Integer :campaign_id - OPTIONAL, automatically join a user to this campaign, rewarding existing known actions
50
51
 
51
52
  def create_user(options={})
52
53
  response = connection.post do |req|
@@ -1,3 +1,3 @@
1
1
  module Checkdin
2
- VERSION = '0.2.8'
2
+ VERSION = '0.2.9'
3
3
  end
data/lib/checkdin.rb CHANGED
@@ -16,6 +16,7 @@ require 'checkdin/promotions'
16
16
  require 'checkdin/campaigns'
17
17
  require 'checkdin/votes'
18
18
  require 'checkdin/clients'
19
+ require 'checkdin/push_api_subscriptions'
19
20
  require 'checkdin/client'
20
21
  require 'checkdin/api_error'
21
22
 
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe Checkdin::PushApiSubscriptions do
4
+
5
+ before do
6
+ @client = Checkdin::Client.new(TestCredentials.client_args)
7
+ end
8
+
9
+ context "viewing a single push api subscription" do
10
+ use_vcr_cassette
11
+ let(:result) { @client.push_api_subscription(1) }
12
+
13
+ it "should make the push API subscription's url available" do
14
+ result.push_api_subscription.push_url.should == "http://test.com"
15
+ end
16
+
17
+ it "should make the push API subscription's push secret available" do
18
+ result.push_api_subscription.secret.should == "6dec79a3034468c530fc"
19
+ end
20
+ end
21
+
22
+ context "viewing a list of push api subscriptions" do
23
+ use_vcr_cassette
24
+ let(:result) { @client.push_api_subscriptions }
25
+
26
+ it "should make a list of push API subscriptions available" do
27
+ result.count.should == 2
28
+ end
29
+ end
30
+
31
+ context "enabling a push api subscription" do
32
+ use_vcr_cassette
33
+ let(:result) { @client.enable_push_api_subscription(2) }
34
+
35
+ it "should enable the subscription and return it" do
36
+ result.push_api_subscription.state.should == "enabled"
37
+ end
38
+ end
39
+
40
+ context "disabling a push api subscription" do
41
+ use_vcr_cassette
42
+ let(:result) { @client.disable_push_api_subscription(1) }
43
+
44
+ it "should disable the subscription and return it" do
45
+ result.push_api_subscription.state.should == "disabled"
46
+ end
47
+ end
48
+
49
+
50
+ end
@@ -0,0 +1,32 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :put
5
+ uri: http://checkd-in-core.dev:80/api/v1/push_api_subscriptions/1/disable?client_id={client_id}&client_secret={client_secret}
6
+ body:
7
+ headers:
8
+ accept:
9
+ - application/json
10
+ user-agent:
11
+ - checkdin ruby gem 0.2.8
12
+ content-length:
13
+ - "0"
14
+ response: !ruby/struct:VCR::Response
15
+ status: !ruby/struct:VCR::ResponseStatus
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ content-type:
20
+ - application/json; charset=utf-8
21
+ x-ua-compatible:
22
+ - IE=Edge
23
+ etag:
24
+ - "\"5dc194884d762f9b11af7d509861636d\""
25
+ cache-control:
26
+ - max-age=0, private, must-revalidate
27
+ x-request-id:
28
+ - 65ef6ad8a9be72f97cbb4f1480e3f575
29
+ x-runtime:
30
+ - "0.114155"
31
+ body: "{\"push_api_subscription\":{\"push_url\":\"http://test.com\",\"state\":\"disabled\",\"reward_won_monitored\":false,\"activity_created_monitored\":true,\"user_created_monitored\":false,\"secret\":\"6dec79a3034468c530fc\",\"campaign\":null}}"
32
+ http_version: "1.1"
@@ -0,0 +1,32 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :put
5
+ uri: http://checkd-in-core.dev:80/api/v1/push_api_subscriptions/2/enable?client_id={client_id}&client_secret={client_secret}
6
+ body:
7
+ headers:
8
+ accept:
9
+ - application/json
10
+ user-agent:
11
+ - checkdin ruby gem 0.2.8
12
+ content-length:
13
+ - "0"
14
+ response: !ruby/struct:VCR::Response
15
+ status: !ruby/struct:VCR::ResponseStatus
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ content-type:
20
+ - application/json; charset=utf-8
21
+ x-ua-compatible:
22
+ - IE=Edge
23
+ etag:
24
+ - "\"9f2a4641681422d0e3958302e9dc7f15\""
25
+ cache-control:
26
+ - max-age=0, private, must-revalidate
27
+ x-request-id:
28
+ - 05ba934d598cec7b44ef90346ea4f515
29
+ x-runtime:
30
+ - "0.061926"
31
+ body: "{\"push_api_subscription\":{\"push_url\":\"http://campaign-specific.com\",\"state\":\"enabled\",\"reward_won_monitored\":false,\"activity_created_monitored\":false,\"user_created_monitored\":true,\"secret\":\"06c5b4a97848faec4a94\",\"campaign\":{\"href\":\"{api_url}/campaigns/7.json\",\"id\":7}}}"
32
+ http_version: "1.1"
@@ -0,0 +1,32 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: http://checkd-in-core.dev:80/api/v1/push_api_subscriptions?client_id={client_id}&client_secret={client_secret}
6
+ body:
7
+ headers:
8
+ accept:
9
+ - application/json
10
+ user-agent:
11
+ - checkdin ruby gem 0.2.8
12
+ accept-encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ response: !ruby/struct:VCR::Response
15
+ status: !ruby/struct:VCR::ResponseStatus
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ content-type:
20
+ - application/json; charset=utf-8
21
+ x-ua-compatible:
22
+ - IE=Edge
23
+ etag:
24
+ - "\"e05a34bf305d4016a48df13b2b82f668\""
25
+ cache-control:
26
+ - max-age=0, private, must-revalidate
27
+ x-request-id:
28
+ - 81063280e22214167c45926165975d79
29
+ x-runtime:
30
+ - "0.161668"
31
+ body: "[{\"push_api_subscription\":{\"push_url\":\"http://test.com\",\"state\":\"enabled\",\"reward_won_monitored\":false,\"activity_created_monitored\":true,\"user_created_monitored\":false,\"secret\":\"6dec79a3034468c530fc\",\"campaign\":null}},{\"push_api_subscription\":{\"push_url\":\"http://campaign-specific.com\",\"state\":\"disabled\",\"reward_won_monitored\":false,\"activity_created_monitored\":false,\"user_created_monitored\":true,\"secret\":\"06c5b4a97848faec4a94\",\"campaign\":{\"href\":\"{api_url}/campaigns/7.json\",\"id\":7}}}]"
32
+ http_version: "1.1"
@@ -0,0 +1,32 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: http://checkd-in-core.dev:80/api/v1/push_api_subscriptions/1?client_id={client_id}&client_secret={client_secret}
6
+ body:
7
+ headers:
8
+ accept:
9
+ - application/json
10
+ user-agent:
11
+ - checkdin ruby gem 0.2.8
12
+ accept-encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ response: !ruby/struct:VCR::Response
15
+ status: !ruby/struct:VCR::ResponseStatus
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ content-type:
20
+ - application/json; charset=utf-8
21
+ x-ua-compatible:
22
+ - IE=Edge
23
+ etag:
24
+ - "\"9d54b3e26adb43319412054e434f95b4\""
25
+ cache-control:
26
+ - max-age=0, private, must-revalidate
27
+ x-request-id:
28
+ - 229fde8356e2089293d1970696570ade
29
+ x-runtime:
30
+ - "0.135453"
31
+ body: "{\"push_api_subscription\":{\"push_url\":\"http://test.com\",\"state\":\"enabled\",\"reward_won_monitored\":false,\"activity_created_monitored\":true,\"user_created_monitored\":false,\"secret\":\"6dec79a3034468c530fc\",\"campaign\":null}}"
32
+ http_version: "1.1"
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: checkdin
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.8
5
+ version: 0.2.9
6
6
  platform: ruby
7
7
  authors:
8
8
  - Matt Mueller
@@ -159,6 +159,7 @@ files:
159
159
  - lib/checkdin/custom_activities.rb
160
160
  - lib/checkdin/leaderboard.rb
161
161
  - lib/checkdin/promotions.rb
162
+ - lib/checkdin/push_api_subscriptions.rb
162
163
  - lib/checkdin/users.rb
163
164
  - lib/checkdin/user_bridge.rb
164
165
  - lib/checkdin/version.rb
@@ -171,6 +172,7 @@ files:
171
172
  - spec/checkdin/custom_activities_spec.rb
172
173
  - spec/checkdin/leaderboard_spec.rb
173
174
  - spec/checkdin/promotions_spec.rb
175
+ - spec/checkdin/push_api_subscriptions_spec.rb
174
176
  - spec/checkdin/users_spec.rb
175
177
  - spec/checkdin/user_bridge_spec.rb
176
178
  - spec/checkdin/won_rewards_spec.rb
@@ -188,6 +190,10 @@ files:
188
190
  - spec/fixtures/vcr_cassettes/Checkdin_Promotions/viewing_a_single_promotion.yml
189
191
  - spec/fixtures/vcr_cassettes/Checkdin_Promotions/viewing_the_votes_leaderboard_for_a_promotion.yml
190
192
  - spec/fixtures/vcr_cassettes/Checkdin_Promotions/viewing_the_votes_leaderboard_for_a_promotion/limiting_the_number_of_records_returned.yml
193
+ - spec/fixtures/vcr_cassettes/Checkdin_PushApiSubscriptions/disabling_a_push_api_subscription.yml
194
+ - spec/fixtures/vcr_cassettes/Checkdin_PushApiSubscriptions/enabling_a_push_api_subscription.yml
195
+ - spec/fixtures/vcr_cassettes/Checkdin_PushApiSubscriptions/viewing_a_list_of_push_api_subscriptions.yml
196
+ - spec/fixtures/vcr_cassettes/Checkdin_PushApiSubscriptions/viewing_a_single_push_api_subscription.yml
191
197
  - spec/fixtures/vcr_cassettes/Checkdin_Users/viewing_a_list_of_users.yml
192
198
  - spec/fixtures/vcr_cassettes/Checkdin_Users/viewing_a_single_user.yml
193
199
  - spec/fixtures/vcr_cassettes/Checkdin_Votes/filtering_by_a_single_user.yml