rushover 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -26,6 +26,10 @@ client = Rushover::Client.new(your_app_token)
26
26
  resp = client.notify(user_key, "some message", :priority => 1, :title => "a title!")
27
27
  resp.ok? # => true
28
28
 
29
+ # Validate that a user exists
30
+ client.validate!(existing_user) # => true
31
+ client.validate!(existing_user, existing_device) # => true
32
+
29
33
  # Also provides a User class for convenience. Just keeps the user key
30
34
  # around if you want to deal with a User object
31
35
  user = Rushover::User.new(user_key, rushover_client)
@@ -5,6 +5,7 @@ require "json"
5
5
  module Rushover
6
6
  class Client
7
7
  MESSAGES_ENDPOINT = "https://api.pushover.net/1/messages.json".freeze
8
+ VALIDATE_ENDPOINT = "https://api.pushover.net/1/users/validate.json".freeze
8
9
 
9
10
  attr_accessor :token
10
11
 
@@ -15,14 +16,31 @@ module Rushover
15
16
  def notify(user_key, message, options = {})
16
17
  data = { :token => token, :user => user_key, :message => message }
17
18
  data.merge!(options)
18
- data = begin
19
- resp = RestClient.post MESSAGES_ENDPOINT, data.to_json, :content_type => "application/json"
20
- JSON.parse(resp)
19
+
20
+ raw_response = begin
21
+ RestClient.post MESSAGES_ENDPOINT, data.to_json, :content_type => "application/json"
22
+ rescue RestClient::Exception => e
23
+ e.response
24
+ end
25
+
26
+ Response.new JSON.parse(raw_response)
27
+ end
28
+
29
+ def validate(user_key, device = nil)
30
+ data = { :token => token, :user => user_key }
31
+ data[:device] = device if device
32
+
33
+ raw_response = begin
34
+ RestClient.post VALIDATE_ENDPOINT, data.to_json, :content_type => "application/json"
21
35
  rescue RestClient::Exception => e
22
- JSON.parse(e.response)
36
+ e.response
23
37
  end
24
38
 
25
- Response.new(data)
39
+ Response.new JSON.parse(raw_response)
40
+ end
41
+
42
+ def validate!(user_key, device = nil)
43
+ validate(user_key, device).ok?
26
44
  end
27
45
  end
28
46
 
@@ -37,6 +55,14 @@ module Rushover
37
55
  def notify(message, options = {})
38
56
  client.notify(key, message, options)
39
57
  end
58
+
59
+ def validate(device = nil)
60
+ client.validate(key, device)
61
+ end
62
+
63
+ def validate!(device = nil)
64
+ validate(device).ok?
65
+ end
40
66
  end
41
67
 
42
68
  class Response
@@ -1,3 +1,3 @@
1
1
  module Rushover
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -56,4 +56,36 @@ class RushoverClientTest < RushoverTest
56
56
  assert_equal "123123", last_request_json["timestamp"].to_s
57
57
  end
58
58
  end
59
+
60
+ context "user validation" do
61
+ test "determining a user exists" do
62
+ FakeWeb.register_uri(:post, "https://api.pushover.net/1/users/validate.json",
63
+ :body => { "status" => 1 }.to_json,
64
+ :content_type => "application/json")
65
+ resp = client.validate("user_exists")
66
+ assert_equal "user_exists", last_request_json["user"]
67
+ assert resp.ok?
68
+ end
69
+
70
+ test "determining a user device exists" do
71
+ FakeWeb.register_uri(:post, "https://api.pushover.net/1/users/validate.json",
72
+ :body => { "status" => 1 }.to_json,
73
+ :content_type => "application/json")
74
+ resp = client.validate("user_exists", "htc4g")
75
+ assert_equal "htc4g", last_request_json["device"]
76
+ end
77
+
78
+ test "determining a user does not exist" do
79
+ FakeWeb.register_uri(:post, "https://api.pushover.net/1/users/validate.json",
80
+ :body => { "status" => 0 }.to_json,
81
+ :content_type => "application/json")
82
+ resp = client.validate("user_missing")
83
+ assert_equal "user_missing", last_request_json["user"]
84
+ refute resp.ok?
85
+ end
86
+
87
+ test "validate! calls ok?" do
88
+ assert client.validate!("user_exists")
89
+ end
90
+ end
59
91
  end
@@ -19,4 +19,19 @@ class RushoverUserTest < RushoverTest
19
19
  assert_equal "test user message", last_request_json["message"]
20
20
  assert_equal "1", last_request_json["priority"].to_s
21
21
  end
22
+
23
+ test "validate if user exists" do
24
+ resp = @user.validate
25
+ assert_equal "user_key", last_request_json["user"]
26
+ assert resp.ok?
27
+ end
28
+
29
+ test "validate if user device exists" do
30
+ @user.validate("htc4g")
31
+ assert_equal "htc4g", last_request_json["device"]
32
+ end
33
+
34
+ test "validate! calls ok?" do
35
+ assert @user.validate!
36
+ end
22
37
  end
@@ -7,7 +7,13 @@ FakeWeb.allow_net_connect = false
7
7
 
8
8
  class RushoverTest < Test::Unit::TestCase
9
9
  setup do
10
- FakeWeb.register_uri(:post, "https://api.pushover.net/1/messages.json", :body => { :status => 1 }.to_json, :content_type => "application/json")
10
+ FakeWeb.register_uri(:post, "https://api.pushover.net/1/messages.json",
11
+ :body => { :status => 1 }.to_json,
12
+ :content_type => "application/json")
13
+
14
+ FakeWeb.register_uri(:post, "https://api.pushover.net/1/users/validate.json",
15
+ :body => { "status" => 1 }.to_json,
16
+ :content_type => "application/json")
11
17
  end
12
18
 
13
19
  teardown do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rushover
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-08-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &2160386140 !ruby/object:Gem::Requirement
16
+ requirement: &2160289600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2160386140
24
+ version_requirements: *2160289600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rest-client
27
- requirement: &2160385720 !ruby/object:Gem::Requirement
27
+ requirement: &2160289180 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2160385720
35
+ version_requirements: *2160289180
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &2160385300 !ruby/object:Gem::Requirement
38
+ requirement: &2160288760 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2160385300
46
+ version_requirements: *2160288760
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: contest
49
- requirement: &2160384880 !ruby/object:Gem::Requirement
49
+ requirement: &2160288340 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2160384880
57
+ version_requirements: *2160288340
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: fakeweb
60
- requirement: &2160384460 !ruby/object:Gem::Requirement
60
+ requirement: &2160287920 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2160384460
68
+ version_requirements: *2160287920
69
69
  description: A simple ruby Pushover client
70
70
  email:
71
71
  - xternal1+github@gmail.com
@@ -99,7 +99,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
99
99
  version: '0'
100
100
  segments:
101
101
  - 0
102
- hash: -3386476054685149572
102
+ hash: -2596201424903665728
103
103
  required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  none: false
105
105
  requirements:
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
108
  version: '0'
109
109
  segments:
110
110
  - 0
111
- hash: -3386476054685149572
111
+ hash: -2596201424903665728
112
112
  requirements: []
113
113
  rubyforge_project:
114
114
  rubygems_version: 1.8.15