checkdin 0.2.8 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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