remind101 0.0.1
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/.gitignore +17 -0
- data/.rspec +1 -0
- data/.travis.yml +6 -0
- data/Gemfile +8 -0
- data/Guardfile +11 -0
- data/LICENSE.txt +22 -0
- data/README.md +92 -0
- data/Rakefile +10 -0
- data/lib/remind101/client/classes.rb +17 -0
- data/lib/remind101/client/connection.rb +59 -0
- data/lib/remind101/client/messages.rb +21 -0
- data/lib/remind101/client/rescuable.rb +27 -0
- data/lib/remind101/client/subscribers.rb +5 -0
- data/lib/remind101/client.rb +27 -0
- data/lib/remind101/configuration.rb +19 -0
- data/lib/remind101/error.rb +11 -0
- data/lib/remind101/middleware/raise_error.rb +27 -0
- data/lib/remind101/version.rb +3 -0
- data/lib/remind101.rb +40 -0
- data/remind101.gemspec +30 -0
- data/spec/remind101/client_spec.rb +63 -0
- data/spec/remind101_spec.rb +5 -0
- data/spec/spec_helper.rb +13 -0
- metadata +212 -0
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard 'rspec', all_on_start: false, all_after_pass: false do
|
5
|
+
watch(%r{^spec/.+_spec\.rb$})
|
6
|
+
watch('spec/spec_helper.rb') { "spec" }
|
7
|
+
|
8
|
+
watch(%r{^lib/remind101/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
9
|
+
watch(%r{^lib/remind101/(.+)\.rb$}) { |m| "spec/remind101/client_spec.rb" }
|
10
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
11
|
+
end
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Eric J. Holmes
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
# Remind101
|
2
|
+
|
3
|
+
[](https://magnum.travis-ci.com/remind101/remind101.rb)
|
4
|
+
|
5
|
+
A thin Ruby client for the Remind101 API.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'remind101'
|
13
|
+
```
|
14
|
+
|
15
|
+
## Usage
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
remind101 = Remind101::Client.new(auth_token: 'token')
|
19
|
+
```
|
20
|
+
|
21
|
+
### classes
|
22
|
+
|
23
|
+
Returns an `Array` of `Hashie::Mash`'s for all the classes for the currently
|
24
|
+
logged in user.
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
remind101.classes
|
28
|
+
# => [{ ... }]
|
29
|
+
```
|
30
|
+
|
31
|
+
### create\_class
|
32
|
+
|
33
|
+
Creates the class and returns a `Hashie::Mash`.
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
remind101.create_class name: 'Math 101'
|
37
|
+
```
|
38
|
+
|
39
|
+
### destroy\_class
|
40
|
+
|
41
|
+
Destroys the class with the given `id`.
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
remind101.destroy_class 1234
|
45
|
+
```
|
46
|
+
|
47
|
+
### messages
|
48
|
+
|
49
|
+
Returns an `Array` of `Hashie::Mash`'s for all the messages for the currently
|
50
|
+
logged in user.
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
remind101.messages
|
54
|
+
# => [{ ... }]
|
55
|
+
```
|
56
|
+
|
57
|
+
### send\_message
|
58
|
+
|
59
|
+
Send a new message to all subscribers of the given class. Returns a
|
60
|
+
`Hashie::Mash` for the created message.
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
remind101.send_message body: 'Be ready for the test tomorrow!', group_ids: [1234]
|
64
|
+
# => { id: 4321, body: 'Be ready for the test tomorrow!' }
|
65
|
+
```
|
66
|
+
|
67
|
+
### cancel\_message
|
68
|
+
|
69
|
+
Attempts to destroy (cancel) a message.
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
remind101.cancel_message 4321
|
73
|
+
# => true
|
74
|
+
```
|
75
|
+
|
76
|
+
### subscribers
|
77
|
+
|
78
|
+
Returns an `Array` of `Hashie::Mash`'s for all the subscribers of the given
|
79
|
+
class.
|
80
|
+
|
81
|
+
```ruby
|
82
|
+
remind101.subscribers 1234
|
83
|
+
# => [{ ... }]
|
84
|
+
```
|
85
|
+
|
86
|
+
## Contributing
|
87
|
+
|
88
|
+
1. Fork it
|
89
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
90
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
91
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
92
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
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
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Remind101::Client::Connection
|
2
|
+
|
3
|
+
%w[get post put patch delete options head].each do |method|
|
4
|
+
define_method method do |*args, &block|
|
5
|
+
connection.__send__ method, *args, &block
|
6
|
+
end
|
7
|
+
|
8
|
+
define_method :"api_#{method}" do |path, *args, &block|
|
9
|
+
__send__ method, api_path(path), *args, &block
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# Public: The Faraday::Builder instance used for the middleware stack. This
|
14
|
+
# can be used to insert a custom middleware.
|
15
|
+
#
|
16
|
+
# Examples
|
17
|
+
#
|
18
|
+
# # Add the instrumentation middleware for Rails.
|
19
|
+
# client.middleware.use FaradayMiddleware::Instrumentation
|
20
|
+
#
|
21
|
+
# Returns the Faraday::Builder for the Faraday connection.
|
22
|
+
def middleware
|
23
|
+
connection.builder
|
24
|
+
end
|
25
|
+
alias_method :builder, :middleware
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def api_path(path)
|
30
|
+
"/#{configuration.version}#{path}"
|
31
|
+
end
|
32
|
+
|
33
|
+
# Internal: Internal faraday connection where all requests go through
|
34
|
+
def connection
|
35
|
+
@connection ||= Faraday.new(configuration.endpoint) do |builder|
|
36
|
+
# Raise exceptions for HTTP error status's
|
37
|
+
builder.use Remind101::Middleware::RaiseError
|
38
|
+
# Add auth_token to query string.
|
39
|
+
builder.request :oauth2, auth_token, param_name: 'auth_token'
|
40
|
+
# Turn the response into a Hashie::Mash.
|
41
|
+
builder.response :mashify
|
42
|
+
# Parse ISO 8601 dates.
|
43
|
+
builder.use FaradayMiddleware::ParseDates
|
44
|
+
# Converts the request into JSON.
|
45
|
+
builder.request :json
|
46
|
+
# Parses returned JSON response into a hash.
|
47
|
+
builder.response :json, content_type: /\bjson$/
|
48
|
+
# Follows 30x redirects.
|
49
|
+
builder.response :follow_redirects
|
50
|
+
|
51
|
+
builder.adapter configuration.adapter
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def configuration
|
56
|
+
Remind101.configuration
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Remind101::Client::Messages
|
2
|
+
extend Remind101::Client::Rescuable
|
3
|
+
|
4
|
+
def messages
|
5
|
+
api_get('/messages').body
|
6
|
+
end
|
7
|
+
|
8
|
+
def create_message!(hash)
|
9
|
+
api_post('/messages', message: hash).body
|
10
|
+
end
|
11
|
+
def_rescued :create_message, :create_message!
|
12
|
+
alias_method :send_message!, :create_message!
|
13
|
+
alias_method :send_message, :create_message
|
14
|
+
|
15
|
+
def destroy_message!(message_id)
|
16
|
+
api_delete("/messages/#{message_id}").body
|
17
|
+
end
|
18
|
+
def_rescued :destroy_message, :destroy_message!
|
19
|
+
alias_method :cancel_message!, :destroy_message!
|
20
|
+
alias_method :cancel_message, :destroy_message
|
21
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Remind101::Client::Rescuable
|
2
|
+
|
3
|
+
# Internal: Defines a version of the method that will be rescued from
|
4
|
+
# ClientError's
|
5
|
+
#
|
6
|
+
# Example
|
7
|
+
#
|
8
|
+
# def my_method!
|
9
|
+
# raise Remind101::Error::ClientError
|
10
|
+
# end
|
11
|
+
# def_rescued :my_method, :my_method!
|
12
|
+
#
|
13
|
+
# my_method
|
14
|
+
# # => false
|
15
|
+
#
|
16
|
+
# Returns nothing.
|
17
|
+
def def_rescued(new, original)
|
18
|
+
define_method new do |*args, &block|
|
19
|
+
begin
|
20
|
+
__send__ original, *args, &block
|
21
|
+
rescue Remind101::Error::ClientError
|
22
|
+
false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Remind101
|
2
|
+
class Client
|
3
|
+
require 'remind101/client/rescuable'
|
4
|
+
require 'remind101/client/connection'
|
5
|
+
require 'remind101/client/classes'
|
6
|
+
require 'remind101/client/messages'
|
7
|
+
require 'remind101/client/subscribers'
|
8
|
+
|
9
|
+
include Connection
|
10
|
+
include Classes
|
11
|
+
include Messages
|
12
|
+
include Subscribers
|
13
|
+
|
14
|
+
attr_reader :options
|
15
|
+
|
16
|
+
def initialize(options = {})
|
17
|
+
@options = options
|
18
|
+
yield middleware if block_given?
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def auth_token
|
24
|
+
options[:auth_token]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Remind101
|
2
|
+
class Configuration
|
3
|
+
attr_accessor :endpoint
|
4
|
+
attr_accessor :adapter
|
5
|
+
attr_accessor :version
|
6
|
+
|
7
|
+
def endpoint
|
8
|
+
@endpoint ||= 'https://api.remind101.com'
|
9
|
+
end
|
10
|
+
|
11
|
+
def adapter
|
12
|
+
@adapter ||= Faraday.default_adapter
|
13
|
+
end
|
14
|
+
|
15
|
+
def version
|
16
|
+
@version ||= 'v2'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Remind101
|
2
|
+
module Error
|
3
|
+
# White label faraday's errors.
|
4
|
+
Faraday::Error.constants.each do |const|
|
5
|
+
const_set(const, Faraday::Error.const_get(const))
|
6
|
+
end
|
7
|
+
|
8
|
+
BadInput = Class.new(ClientError)
|
9
|
+
ValidationError = Class.new(ClientError)
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Remind101
|
2
|
+
module Middleware
|
3
|
+
class RaiseError < Faraday::Response::Middleware
|
4
|
+
ClientErrorStatuses = 401...600
|
5
|
+
|
6
|
+
def on_complete(env)
|
7
|
+
case env[:status]
|
8
|
+
when 400
|
9
|
+
raise Remind101::Error::BadInput, response_values(env)
|
10
|
+
when 404
|
11
|
+
raise Remind101::Error::ResourceNotFound, response_values(env)
|
12
|
+
when 422
|
13
|
+
raise Remind101::Error::ValidationError, response_values(env)
|
14
|
+
when 407
|
15
|
+
# mimic the behavior that we get with proxy requests with HTTPS
|
16
|
+
raise Remind101::Error::ConnectionFailed, %{407 "Proxy Authentication Required "}
|
17
|
+
when ClientErrorStatuses
|
18
|
+
raise Remind101::Error::ClientError, response_values(env)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def response_values(env)
|
23
|
+
Hashie::Mash.new status: env[:status], headers: env[:response_headers], body: env[:body]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/remind101.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'remind101/version'
|
2
|
+
|
3
|
+
require 'faraday'
|
4
|
+
require 'faraday_middleware'
|
5
|
+
require 'hashie'
|
6
|
+
|
7
|
+
require 'remind101/error'
|
8
|
+
|
9
|
+
module Remind101
|
10
|
+
autoload :Configuration, 'remind101/configuration'
|
11
|
+
autoload :Client, 'remind101/client'
|
12
|
+
|
13
|
+
module Middleware
|
14
|
+
autoload :RaiseError, 'remind101/middleware/raise_error'
|
15
|
+
end
|
16
|
+
|
17
|
+
class << self
|
18
|
+
|
19
|
+
# Public: The configuration object.
|
20
|
+
#
|
21
|
+
# Returns a memoized Remind101::Configuration instance.
|
22
|
+
def configuration
|
23
|
+
@configuration ||= Configuration.new
|
24
|
+
end
|
25
|
+
|
26
|
+
# Public: Used to set global configuration.
|
27
|
+
#
|
28
|
+
# Example
|
29
|
+
#
|
30
|
+
# Remind101.configure do |config|
|
31
|
+
# config.endpoint = 'http://localhost:5000'
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# Yields Remind101.configuration.
|
35
|
+
def configure
|
36
|
+
yield configuration
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
data/remind101.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'remind101/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'remind101'
|
8
|
+
spec.version = Remind101::VERSION
|
9
|
+
spec.authors = ['Eric J. Holmes']
|
10
|
+
spec.email = ['eric@ejholmes.net']
|
11
|
+
spec.description = %q{Ruby client for the Remind101 API.}
|
12
|
+
spec.summary = %q{Ruby client for the Remind101 API.}
|
13
|
+
spec.homepage = 'https://github.com/remind101/remind101.rb'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_dependency 'faraday', '~> 0.8'
|
22
|
+
spec.add_dependency 'faraday_middleware', '~> 0.9'
|
23
|
+
spec.add_dependency 'hashie', ['>= 1.2', '< 2.1']
|
24
|
+
|
25
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
26
|
+
spec.add_development_dependency 'rspec', '~> 2.14'
|
27
|
+
spec.add_development_dependency 'simplecov', '~> 0.7'
|
28
|
+
spec.add_development_dependency 'webmock', '~> 1.13'
|
29
|
+
spec.add_development_dependency 'rake'
|
30
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Remind101::Client do
|
4
|
+
let(:class_id ) { 1234 }
|
5
|
+
let(:message_id) { 4321 }
|
6
|
+
let(:client ) { described_class.new }
|
7
|
+
|
8
|
+
describe '#classes' do
|
9
|
+
before { stub_request(:get, 'https://api.remind101.com/v2/classes') }
|
10
|
+
|
11
|
+
it 'gets the classes' do
|
12
|
+
client.classes
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#create_class' do
|
17
|
+
before { stub_request(:post, 'https://api.remind101.com/v2/classes') }
|
18
|
+
|
19
|
+
it 'creates the class' do
|
20
|
+
client.create_class name: 'Math 101'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#destroy_class' do
|
25
|
+
before { stub_request(:delete, "https://api.remind101.com/v2/classes/#{class_id}") }
|
26
|
+
|
27
|
+
it 'destroys the class' do
|
28
|
+
client.destroy_class class_id
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#messages' do
|
33
|
+
before { stub_request(:get, 'https://api.remind101.com/v2/messages') }
|
34
|
+
|
35
|
+
it 'gets the messages' do
|
36
|
+
client.messages
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#create_message' do
|
41
|
+
before { stub_request(:post, 'https://api.remind101.com/v2/messages') }
|
42
|
+
|
43
|
+
it 'creates the message' do
|
44
|
+
client.create_message body: "There's a test tomorrow!", group_ids: [class_id]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#destroy_message' do
|
49
|
+
before { stub_request(:delete, "https://api.remind101.com/v2/messages/#{message_id}") }
|
50
|
+
|
51
|
+
it 'destroys the message' do
|
52
|
+
client.destroy_message message_id
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe '#subscribers' do
|
57
|
+
before { stub_request(:get, "https://api.remind101.com/v2/classes/#{class_id}/subscribers") }
|
58
|
+
|
59
|
+
it 'gets the subscribers' do
|
60
|
+
client.subscribers(class_id)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start
|
3
|
+
|
4
|
+
require 'bundler/setup'
|
5
|
+
Bundler.require :default, :test
|
6
|
+
|
7
|
+
require 'webmock/rspec'
|
8
|
+
|
9
|
+
WebMock.disable_net_connect!
|
10
|
+
|
11
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
12
|
+
# in spec/support/ and its subdirectories.
|
13
|
+
Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")].each {|f| require f}
|
metadata
ADDED
@@ -0,0 +1,212 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: remind101
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Eric J. Holmes
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-08-16 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: faraday
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0.8'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.8'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: faraday_middleware
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0.9'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0.9'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: hashie
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.2'
|
54
|
+
- - <
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '2.1'
|
57
|
+
type: :runtime
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ! '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '1.2'
|
65
|
+
- - <
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '2.1'
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: bundler
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.3'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
80
|
+
requirements:
|
81
|
+
- - ~>
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '1.3'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: rspec
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ~>
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '2.14'
|
92
|
+
type: :development
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ~>
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '2.14'
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
name: simplecov
|
102
|
+
requirement: !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
104
|
+
requirements:
|
105
|
+
- - ~>
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0.7'
|
108
|
+
type: :development
|
109
|
+
prerelease: false
|
110
|
+
version_requirements: !ruby/object:Gem::Requirement
|
111
|
+
none: false
|
112
|
+
requirements:
|
113
|
+
- - ~>
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0.7'
|
116
|
+
- !ruby/object:Gem::Dependency
|
117
|
+
name: webmock
|
118
|
+
requirement: !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ~>
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '1.13'
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ~>
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.13'
|
132
|
+
- !ruby/object:Gem::Dependency
|
133
|
+
name: rake
|
134
|
+
requirement: !ruby/object:Gem::Requirement
|
135
|
+
none: false
|
136
|
+
requirements:
|
137
|
+
- - ! '>='
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
type: :development
|
141
|
+
prerelease: false
|
142
|
+
version_requirements: !ruby/object:Gem::Requirement
|
143
|
+
none: false
|
144
|
+
requirements:
|
145
|
+
- - ! '>='
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '0'
|
148
|
+
description: Ruby client for the Remind101 API.
|
149
|
+
email:
|
150
|
+
- eric@ejholmes.net
|
151
|
+
executables: []
|
152
|
+
extensions: []
|
153
|
+
extra_rdoc_files: []
|
154
|
+
files:
|
155
|
+
- .gitignore
|
156
|
+
- .rspec
|
157
|
+
- .travis.yml
|
158
|
+
- Gemfile
|
159
|
+
- Guardfile
|
160
|
+
- LICENSE.txt
|
161
|
+
- README.md
|
162
|
+
- Rakefile
|
163
|
+
- lib/remind101.rb
|
164
|
+
- lib/remind101/client.rb
|
165
|
+
- lib/remind101/client/classes.rb
|
166
|
+
- lib/remind101/client/connection.rb
|
167
|
+
- lib/remind101/client/messages.rb
|
168
|
+
- lib/remind101/client/rescuable.rb
|
169
|
+
- lib/remind101/client/subscribers.rb
|
170
|
+
- lib/remind101/configuration.rb
|
171
|
+
- lib/remind101/error.rb
|
172
|
+
- lib/remind101/middleware/raise_error.rb
|
173
|
+
- lib/remind101/version.rb
|
174
|
+
- remind101.gemspec
|
175
|
+
- spec/remind101/client_spec.rb
|
176
|
+
- spec/remind101_spec.rb
|
177
|
+
- spec/spec_helper.rb
|
178
|
+
homepage: https://github.com/remind101/remind101.rb
|
179
|
+
licenses:
|
180
|
+
- MIT
|
181
|
+
post_install_message:
|
182
|
+
rdoc_options: []
|
183
|
+
require_paths:
|
184
|
+
- lib
|
185
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
186
|
+
none: false
|
187
|
+
requirements:
|
188
|
+
- - ! '>='
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
191
|
+
segments:
|
192
|
+
- 0
|
193
|
+
hash: -779571737398577944
|
194
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
|
+
none: false
|
196
|
+
requirements:
|
197
|
+
- - ! '>='
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '0'
|
200
|
+
segments:
|
201
|
+
- 0
|
202
|
+
hash: -779571737398577944
|
203
|
+
requirements: []
|
204
|
+
rubyforge_project:
|
205
|
+
rubygems_version: 1.8.23
|
206
|
+
signing_key:
|
207
|
+
specification_version: 3
|
208
|
+
summary: Ruby client for the Remind101 API.
|
209
|
+
test_files:
|
210
|
+
- spec/remind101/client_spec.rb
|
211
|
+
- spec/remind101_spec.rb
|
212
|
+
- spec/spec_helper.rb
|