remind101 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -18,30 +18,30 @@ gem 'remind101'
18
18
  remind101 = Remind101::Client.new(auth_token: 'token')
19
19
  ```
20
20
 
21
- ### classes
21
+ ### groups
22
22
 
23
- Returns an `Array` of `Hashie::Mash`'s for all the classes for the currently
23
+ Returns an `Array` of `Hashie::Mash`'s for all the groups for the currently
24
24
  logged in user.
25
25
 
26
26
  ```ruby
27
- remind101.classes
27
+ remind101.groups
28
28
  # => [{ ... }]
29
29
  ```
30
30
 
31
- ### create\_class
31
+ ### create\_group
32
32
 
33
- Creates the class and returns a `Hashie::Mash`.
33
+ Creates the group and returns a `Hashie::Mash`.
34
34
 
35
35
  ```ruby
36
- remind101.create_class name: 'Math 101'
36
+ remind101.create_group class_name: 'Math 101'
37
37
  ```
38
38
 
39
- ### destroy\_class
39
+ ### destroy\_group
40
40
 
41
- Destroys the class with the given `id`.
41
+ Destroys the group with the given `id`.
42
42
 
43
43
  ```ruby
44
- remind101.destroy_class 1234
44
+ remind101.destroy_group 1234
45
45
  ```
46
46
 
47
47
  ### messages
@@ -56,7 +56,7 @@ remind101.messages
56
56
 
57
57
  ### send\_message
58
58
 
59
- Send a new message to all subscribers of the given class. Returns a
59
+ Send a new message to all subscribers of the given group. Returns a
60
60
  `Hashie::Mash` for the created message.
61
61
 
62
62
  ```ruby
@@ -76,13 +76,29 @@ remind101.cancel_message 4321
76
76
  ### subscribers
77
77
 
78
78
  Returns an `Array` of `Hashie::Mash`'s for all the subscribers of the given
79
- class.
79
+ group.
80
80
 
81
81
  ```ruby
82
82
  remind101.subscribers 1234
83
83
  # => [{ ... }]
84
84
  ```
85
85
 
86
+ ### Validation Errors
87
+
88
+ When a validation error is returned (HTTP 422), a
89
+ `Remind101::Error::ValidationError` with be raised. The `#error` method on this
90
+ object will be a key/val hash of the errors.
91
+
92
+ ```ruby
93
+ begin
94
+ remind101.create_group! class_name: '1'
95
+ rescue Remind101::Error::ValidationError => e
96
+ e.error.each do |attribute, errors|
97
+ p "#{attribute}: #{errors}"
98
+ end
99
+ end
100
+ ```
101
+
86
102
  ## Contributing
87
103
 
88
104
  1. Fork it
@@ -0,0 +1,41 @@
1
+ module Remind101::Client::Groups
2
+ extend Remind101::Client::Rescuable
3
+
4
+ # Public: Returns all groups for the current user.
5
+ #
6
+ # Examples
7
+ #
8
+ # remind101.groups
9
+ # # => [{ ... }]
10
+ #
11
+ # Returns an Array of all groups.
12
+ def groups
13
+ api_get('/groups').body
14
+ end
15
+
16
+ # Public: Creates a new group.
17
+ #
18
+ # Examples
19
+ #
20
+ # remind101.create_group! name: 'Math 101'
21
+ # # => { :id => 4321, :name => "Math 101", ... }
22
+ #
23
+ # Returns the created group.
24
+ def create_group!(hash)
25
+ api_post('/groups', group: hash).body
26
+ end
27
+ def_rescued :create_group, :create_group!
28
+
29
+ # Public: Destroys an existing group.
30
+ #
31
+ # Examples
32
+ #
33
+ # remind101.destroy_group! 4321
34
+ # # => { :id => 4321, :name => "Math 101", ... }
35
+ #
36
+ # Returns the destroyed group.
37
+ def destroy_group!(group_id)
38
+ api_delete("/groups/#{group_id}").body
39
+ end
40
+ def_rescued :destroy_group, :destroy_group!
41
+ end
@@ -1,10 +1,28 @@
1
1
  module Remind101::Client::Messages
2
2
  extend Remind101::Client::Rescuable
3
3
 
4
+ # Public: Returns all messages for the current user.
5
+ #
6
+ # Examples
7
+ #
8
+ # remind101.messages
9
+ # # => [{ ... }]
10
+ #
11
+ # Returns an Array of all messages.
4
12
  def messages
5
13
  api_get('/messages').body
6
14
  end
7
15
 
16
+ # Public: Creates a new message.
17
+ #
18
+ # Also aliased as `#send_message!`.
19
+ #
20
+ # Examples
21
+ #
22
+ # remind101.create_message! body: 'Hello World!', group_ids: [1234]
23
+ # # => { :id => 4321, :body => "Hello World!", :group_ids => [1234], ... }
24
+ #
25
+ # Returns the created message.
8
26
  def create_message!(hash)
9
27
  api_post('/messages', message: hash).body
10
28
  end
@@ -12,6 +30,16 @@ module Remind101::Client::Messages
12
30
  alias_method :send_message!, :create_message!
13
31
  alias_method :send_message, :create_message
14
32
 
33
+ # Public: Destroy an existing message.
34
+ #
35
+ # Also aliased as `cancel_message!`.
36
+ #
37
+ # Examples
38
+ #
39
+ # remind101.destroy_message! 4321
40
+ # # => { :id => 4321, :body => "Hello World!", :group_ids => [1234], ... }
41
+ #
42
+ # Returns the destroyed message.
15
43
  def destroy_message!(message_id)
16
44
  api_delete("/messages/#{message_id}").body
17
45
  end
@@ -1,5 +1,39 @@
1
1
  module Remind101::Client::Subscribers
2
- def subscribers(class_id)
3
- api_get("/classes/#{class_id}/subscribers").body
2
+ extend Remind101::Client::Rescuable
3
+
4
+ # Public: Returns all subscribers for the given group.
5
+ #
6
+ # Examples
7
+ #
8
+ # remind101.subscribers 1234
9
+ # #=> [{ ... }]
10
+ #
11
+ # Returns an Array of all subscribers.
12
+ def subscribers(group_id)
13
+ api_get("/groups/#{group_id}/subscribers").body
4
14
  end
15
+
16
+ # Public: Removes a subscriber from the group.
17
+ #
18
+ # Examples
19
+ #
20
+ # remind101.remove_subscriber! 1234, 4321
21
+ #
22
+ # Returns the removed subscriber.
23
+ def remove_subscriber!(group_id, subscriber_id)
24
+ api_delete("/groups/#{group_id}/subscribers/#{subscriber_id}").body
25
+ end
26
+ def_rescued :remove_subscriber, :remove_subscriber!
27
+
28
+ # Public: Removes all subscribers from the group.
29
+ #
30
+ # Examples
31
+ #
32
+ # remind101.remove_subscribers!
33
+ #
34
+ # Returns true if all subscribers were removed.
35
+ def remove_subscribers!(group_id)
36
+ api_delete("/groups/#{group_id}/subscribers").body
37
+ end
38
+ def_rescued :remove_subscribers, :remove_subscribers!
5
39
  end
@@ -2,12 +2,12 @@ module Remind101
2
2
  class Client
3
3
  require 'remind101/client/rescuable'
4
4
  require 'remind101/client/connection'
5
- require 'remind101/client/classes'
5
+ require 'remind101/client/groups'
6
6
  require 'remind101/client/messages'
7
7
  require 'remind101/client/subscribers'
8
8
 
9
9
  include Connection
10
- include Classes
10
+ include Groups
11
11
  include Messages
12
12
  include Subscribers
13
13
 
@@ -5,7 +5,18 @@ module Remind101
5
5
  const_set(const, Faraday::Error.const_get(const))
6
6
  end
7
7
 
8
- BadInput = Class.new(ClientError)
9
- ValidationError = Class.new(ClientError)
8
+ module ErrorsBody
9
+ def error
10
+ response.body.error
11
+ end
12
+ end
13
+
14
+ class BadInput < ClientError
15
+ include ErrorsBody
16
+ end
17
+
18
+ class ValidationError < ClientError
19
+ include ErrorsBody
20
+ end
10
21
  end
11
22
  end
@@ -1,3 +1,3 @@
1
1
  module Remind101
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -1,31 +1,32 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Remind101::Client do
4
- let(:class_id ) { 1234 }
5
- let(:message_id) { 4321 }
6
- let(:client ) { described_class.new }
4
+ let(:group_id ) { 1234 }
5
+ let(:message_id ) { 4321 }
6
+ let(:subscriber_id) { 789 }
7
+ let(:client ) { described_class.new }
7
8
 
8
- describe '#classes' do
9
- before { stub_request(:get, 'https://api.remind101.com/v2/classes') }
9
+ describe '#groups' do
10
+ before { stub_request(:get, 'https://api.remind101.com/v2/groups') }
10
11
 
11
- it 'gets the classes' do
12
- client.classes
12
+ it 'gets the groups' do
13
+ client.groups
13
14
  end
14
15
  end
15
16
 
16
- describe '#create_class' do
17
- before { stub_request(:post, 'https://api.remind101.com/v2/classes') }
17
+ describe '#create_group!' do
18
+ before { stub_request(:post, 'https://api.remind101.com/v2/groups') }
18
19
 
19
- it 'creates the class' do
20
- client.create_class name: 'Math 101'
20
+ it 'creates the group' do
21
+ client.create_group! name: 'Math 101'
21
22
  end
22
23
  end
23
24
 
24
- describe '#destroy_class' do
25
- before { stub_request(:delete, "https://api.remind101.com/v2/classes/#{class_id}") }
25
+ describe '#destroy_group!' do
26
+ before { stub_request(:delete, "https://api.remind101.com/v2/groups/#{group_id}") }
26
27
 
27
- it 'destroys the class' do
28
- client.destroy_class class_id
28
+ it 'destroys the group' do
29
+ client.destroy_group! group_id
29
30
  end
30
31
  end
31
32
 
@@ -37,27 +38,43 @@ describe Remind101::Client do
37
38
  end
38
39
  end
39
40
 
40
- describe '#create_message' do
41
+ describe '#create_message!' do
41
42
  before { stub_request(:post, 'https://api.remind101.com/v2/messages') }
42
43
 
43
44
  it 'creates the message' do
44
- client.create_message body: "There's a test tomorrow!", group_ids: [class_id]
45
+ client.create_message! body: "There's a test tomorrow!", group_ids: [group_id]
45
46
  end
46
47
  end
47
48
 
48
- describe '#destroy_message' do
49
+ describe '#destroy_message!' do
49
50
  before { stub_request(:delete, "https://api.remind101.com/v2/messages/#{message_id}") }
50
51
 
51
52
  it 'destroys the message' do
52
- client.destroy_message message_id
53
+ client.destroy_message! message_id
53
54
  end
54
55
  end
55
56
 
56
57
  describe '#subscribers' do
57
- before { stub_request(:get, "https://api.remind101.com/v2/classes/#{class_id}/subscribers") }
58
+ before { stub_request(:get, "https://api.remind101.com/v2/groups/#{group_id}/subscribers") }
58
59
 
59
60
  it 'gets the subscribers' do
60
- client.subscribers(class_id)
61
+ client.subscribers(group_id)
62
+ end
63
+ end
64
+
65
+ describe '#remove_subscriber!' do
66
+ before { stub_request(:delete, "https://api.remind101.com/v2/groups/#{group_id}/subscribers/#{subscriber_id}") }
67
+
68
+ it 'removes the subscriber' do
69
+ client.remove_subscriber!(group_id, subscriber_id)
70
+ end
71
+ end
72
+
73
+ describe '#remove_subscribers!' do
74
+ before { stub_request(:delete, "https://api.remind101.com/v2/groups/#{group_id}/subscribers") }
75
+
76
+ it 'removes the subscriber' do
77
+ client.remove_subscribers!(group_id)
61
78
  end
62
79
  end
63
80
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remind101
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-16 00:00:00.000000000 Z
12
+ date: 2013-08-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -162,8 +162,8 @@ files:
162
162
  - Rakefile
163
163
  - lib/remind101.rb
164
164
  - lib/remind101/client.rb
165
- - lib/remind101/client/classes.rb
166
165
  - lib/remind101/client/connection.rb
166
+ - lib/remind101/client/groups.rb
167
167
  - lib/remind101/client/messages.rb
168
168
  - lib/remind101/client/rescuable.rb
169
169
  - lib/remind101/client/subscribers.rb
@@ -190,7 +190,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
190
190
  version: '0'
191
191
  segments:
192
192
  - 0
193
- hash: -779571737398577944
193
+ hash: -1908290670246690912
194
194
  required_rubygems_version: !ruby/object:Gem::Requirement
195
195
  none: false
196
196
  requirements:
@@ -199,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
199
  version: '0'
200
200
  segments:
201
201
  - 0
202
- hash: -779571737398577944
202
+ hash: -1908290670246690912
203
203
  requirements: []
204
204
  rubyforge_project:
205
205
  rubygems_version: 1.8.23
@@ -1,17 +0,0 @@
1
- module Remind101::Client::Classes
2
- extend Remind101::Client::Rescuable
3
-
4
- def classes
5
- api_get('/classes').body
6
- end
7
-
8
- def create_class!(hash)
9
- api_post('/classes', group: hash).body
10
- end
11
- def_rescued :create_class, :create_class!
12
-
13
- def destroy_class!(class_id)
14
- api_delete("/classes/#{class_id}").body
15
- end
16
- def_rescued :destroy_class, :destroy_class!
17
- end