trello-client 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 +20 -0
- data/Gemfile +4 -0
- data/History.rdoc +7 -0
- data/LICENSE +22 -0
- data/README.rdoc +53 -0
- data/Rakefile +49 -0
- data/lib/trello-client.rb +134 -0
- data/lib/trello-client/member.rb +38 -0
- data/lib/trello-client/version.rb +10 -0
- data/test/data/member.json +1 -0
- data/test/data/member_with_boards.json +1 -0
- data/test/test_client.rb +147 -0
- data/test/test_member.rb +19 -0
- data/trello-client.gemspec +27 -0
- metadata +146 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/History.rdoc
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 blair christensen
|
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.rdoc
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
= Trello::Client - Trello API client
|
2
|
+
|
3
|
+
== Configuration
|
4
|
+
|
5
|
+
Get developer API key:
|
6
|
+
https://trello.com/1/appKey/generate
|
7
|
+
|
8
|
+
Get user token:
|
9
|
+
https://trello.com/1/connect?key=$YOUR_API_KEY&name=trello-client.rb&response_type=token
|
10
|
+
|
11
|
+
== Usage
|
12
|
+
|
13
|
+
require 'trello-client'
|
14
|
+
|
15
|
+
Trello::Client.new do |client|
|
16
|
+
# Set API key
|
17
|
+
client.api_key = ...
|
18
|
+
|
19
|
+
# Set token
|
20
|
+
client.token = ...
|
21
|
+
|
22
|
+
# Get member
|
23
|
+
client.member('me') do |m|
|
24
|
+
# Returns Trello::Client::Member object
|
25
|
+
m['id'] # => member identity
|
26
|
+
m['fullName'] # => member name
|
27
|
+
m['userName'] # => member user
|
28
|
+
|
29
|
+
m.boards.each do |board|
|
30
|
+
# TODO Returns Board JSON
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
== Author
|
35
|
+
|
36
|
+
blair christensen. <mailto:blair.christensen@gmail.com>
|
37
|
+
|
38
|
+
== Homepage
|
39
|
+
|
40
|
+
https://github.com/blairc/trello-client/
|
41
|
+
|
42
|
+
== See Also
|
43
|
+
|
44
|
+
* https://trello.com/docs/api/
|
45
|
+
|
46
|
+
== To Do
|
47
|
+
|
48
|
+
* Get boards
|
49
|
+
* Get lists
|
50
|
+
* Get cards
|
51
|
+
* Memoize API calls
|
52
|
+
* Add script
|
53
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require 'bundler/gem_tasks'
|
3
|
+
|
4
|
+
require 'rake/clean'
|
5
|
+
require 'rake/testtask'
|
6
|
+
require 'rdoc-readme/rake_task'
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
%w{ coverage html out.txt pkg }.each { |p| CLEAN.include(p) }
|
10
|
+
%w{ build install rdoc test }.each { |t| task t.to_sym => [ 'rdoc:readme' ] }
|
11
|
+
|
12
|
+
task :default => :test
|
13
|
+
|
14
|
+
Rake::TestTask.new do |t|
|
15
|
+
t.libs << 'test'
|
16
|
+
t.test_files = FileList['test/test*.rb']
|
17
|
+
t.verbose = true
|
18
|
+
end
|
19
|
+
|
20
|
+
RDoc::Readme::RakeTask.new 'lib/trello-client.rb', 'README.rdoc'
|
21
|
+
|
22
|
+
RDoc::Task.new do |rdoc|
|
23
|
+
rdoc.main = 'README.rdoc'
|
24
|
+
rdoc.rdoc_files.include('README.rdoc', 'lib/**/*.rb', 'doc/*.txt')
|
25
|
+
end
|
26
|
+
|
27
|
+
desc 'Update test data files'
|
28
|
+
task :update_test_data do
|
29
|
+
$LOAD_PATH << 'lib'
|
30
|
+
require 'open-uri'
|
31
|
+
require 'trello-client'
|
32
|
+
|
33
|
+
Trello::Client.new do |client|
|
34
|
+
client.api_key = ENV['TRELLO_API_KEY']
|
35
|
+
client.api_token = ENV['TRELLO_API_TOKEN']
|
36
|
+
|
37
|
+
{
|
38
|
+
'member' => [ :member, 'me' ],
|
39
|
+
'member_with_boards' => [ :member, 'me', :boards => 'all' ]
|
40
|
+
}.each_pair do |file, request|
|
41
|
+
fn = File.join( File.dirname(__FILE__), 'test', 'data', "#{file}.json" )
|
42
|
+
meth = request.shift
|
43
|
+
args = request
|
44
|
+
File.open(fn, 'w') { |fh| fh.puts( client.send meth, *args ) }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
@@ -0,0 +1,134 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'multi_json'
|
4
|
+
require 'open-uri'
|
5
|
+
require 'uri'
|
6
|
+
|
7
|
+
require 'trello-client/member'
|
8
|
+
require 'trello-client/version'
|
9
|
+
|
10
|
+
#
|
11
|
+
# = Trello::Client - Trello API client
|
12
|
+
#
|
13
|
+
# == Configuration
|
14
|
+
#
|
15
|
+
# Get developer API key:
|
16
|
+
# https://trello.com/1/appKey/generate
|
17
|
+
#
|
18
|
+
# Get user token:
|
19
|
+
# https://trello.com/1/connect?key=$YOUR_API_KEY&name=trello-client.rb&response_type=token
|
20
|
+
#
|
21
|
+
# == Usage
|
22
|
+
#
|
23
|
+
# require 'trello-client'
|
24
|
+
#
|
25
|
+
# Trello::Client.new do |client|
|
26
|
+
# # Set API key
|
27
|
+
# client.api_key = ...
|
28
|
+
#
|
29
|
+
# # Set token
|
30
|
+
# client.token = ...
|
31
|
+
#
|
32
|
+
# # Get member
|
33
|
+
# client.member('me') do |m|
|
34
|
+
# # Returns Trello::Client::Member object
|
35
|
+
# m['id'] # => member identity
|
36
|
+
# m['fullName'] # => member name
|
37
|
+
# m['userName'] # => member user
|
38
|
+
#
|
39
|
+
# m.boards.each do |board|
|
40
|
+
# # TODO Returns Board JSON
|
41
|
+
# end
|
42
|
+
# end
|
43
|
+
#
|
44
|
+
# == Author
|
45
|
+
#
|
46
|
+
# blair christensen. <mailto:blair.christensen@gmail.com>
|
47
|
+
#
|
48
|
+
# == Homepage
|
49
|
+
#
|
50
|
+
# https://github.com/blairc/trello-client/
|
51
|
+
#
|
52
|
+
# == See Also
|
53
|
+
#
|
54
|
+
# * https://trello.com/docs/api/
|
55
|
+
#
|
56
|
+
# == To Do
|
57
|
+
#
|
58
|
+
# * Get boards
|
59
|
+
# * Get lists
|
60
|
+
# * Get cards
|
61
|
+
# * Memoize API calls
|
62
|
+
# * Add script
|
63
|
+
#
|
64
|
+
module Trello # :nodoc:
|
65
|
+
|
66
|
+
#
|
67
|
+
# Trello API client.
|
68
|
+
#
|
69
|
+
class Client
|
70
|
+
|
71
|
+
#
|
72
|
+
# Get/Set Trello API URL
|
73
|
+
#
|
74
|
+
attr_accessor :api
|
75
|
+
|
76
|
+
#
|
77
|
+
# Get/Set Trello API key
|
78
|
+
#
|
79
|
+
attr_accessor :api_key
|
80
|
+
|
81
|
+
#
|
82
|
+
# Get/Set Trello API application token
|
83
|
+
#
|
84
|
+
attr_accessor :api_token
|
85
|
+
|
86
|
+
#
|
87
|
+
# Initialize Trello::Client object
|
88
|
+
#
|
89
|
+
def initialize
|
90
|
+
@api = 'https://api.trello.com/1'
|
91
|
+
@api_key = nil
|
92
|
+
@api_token = nil
|
93
|
+
yield self if block_given?
|
94
|
+
self
|
95
|
+
end
|
96
|
+
|
97
|
+
#
|
98
|
+
# Get Trello::Client::Member object
|
99
|
+
#
|
100
|
+
# See https://trello.com/docs/api/member/index.html
|
101
|
+
#
|
102
|
+
# Params:
|
103
|
+
# +id+:: Member identifier
|
104
|
+
# +options+:: (optional) Additional API parameters
|
105
|
+
#
|
106
|
+
def member(id, options = {} )
|
107
|
+
raise('invalid id') if id.nil? || id.empty?
|
108
|
+
_get "#{api}/members/#{id}", options
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
private
|
113
|
+
|
114
|
+
def _get( uri, options = {} )
|
115
|
+
raise('invalid URI') if uri.nil? || uri.empty?
|
116
|
+
raise('invalid API key') if @api_key.nil? || @api_key.empty?
|
117
|
+
raise('invalid API token') if @api_token.nil? || @api_token.empty?
|
118
|
+
|
119
|
+
defaults = { :key => @api_key, :token => @api_token }
|
120
|
+
options.merge!(defaults)
|
121
|
+
if options
|
122
|
+
uri << '?'
|
123
|
+
options.keys.sort.each do |k|
|
124
|
+
uri << "#{k}=#{ options[k] }&"
|
125
|
+
end
|
126
|
+
end
|
127
|
+
uri.gsub! /&$/, ''
|
128
|
+
open(uri).read
|
129
|
+
end
|
130
|
+
|
131
|
+
end # class Client
|
132
|
+
|
133
|
+
end # module Trello
|
134
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Trello # :nodoc:
|
4
|
+
class Client # :nodoc
|
5
|
+
|
6
|
+
#
|
7
|
+
# Trello::Client::Member object
|
8
|
+
#
|
9
|
+
class Member
|
10
|
+
|
11
|
+
#
|
12
|
+
# Initialize Trello::Member
|
13
|
+
#
|
14
|
+
def initialize(json)
|
15
|
+
@json = MultiJson.decode(json)
|
16
|
+
yield self if block_given?
|
17
|
+
self
|
18
|
+
end
|
19
|
+
|
20
|
+
#
|
21
|
+
# Get Trello::Member property
|
22
|
+
#
|
23
|
+
def[](key)
|
24
|
+
@json[key]
|
25
|
+
end
|
26
|
+
|
27
|
+
#
|
28
|
+
# Get +Array+ of boards
|
29
|
+
#
|
30
|
+
def boards
|
31
|
+
@json['boards'] || []
|
32
|
+
end
|
33
|
+
|
34
|
+
end # class Member
|
35
|
+
|
36
|
+
end # class Client
|
37
|
+
end # module Trello
|
38
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
{"id":"4f4f9d55cf2e679318098c45","fullName":"blair christensen","initials":"BC","username":"blairchristensen","avatarHash":"65fcb89a59ff96b68b11332686c8f4f9","bio":"","url":"https://trello.com/blairchristensen"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"id":"4f4f9d55cf2e679318098c45","fullName":"blair christensen","initials":"BC","username":"blairchristensen","avatarHash":"65fcb89a59ff96b68b11332686c8f4f9","bio":"","url":"https://trello.com/blairchristensen","boards":[{"id":"4f4d0477e4ba0e4f09af1c6c","name":"5E - Survey Database Site Features","desc":"","closed":false,"idOrganization":"","pinned":true,"url":"https://trello.com/board/5e-survey-database-site-features/4f4d0477e4ba0e4f09af1c6c","prefs":{"selfJoin":false,"invitations":"members","comments":"members","voting":"members","permissionLevel":"private"}},{"id":"4f4f9d55cf2e679318098c5b","name":"Welcome Board","desc":"","closed":false,"pinned":true,"url":"https://trello.com/board/welcome-board/4f4f9d55cf2e679318098c5b","prefs":{"selfJoin":false,"invitations":"members","comments":"members","voting":"members","permissionLevel":"private"}},{"id":"4f6c9a79c3974b4d730a5533","name":"uchicago","desc":"","closed":false,"idOrganization":"","pinned":true,"url":"https://trello.com/board/uchicago/4f6c9a79c3974b4d730a5533","prefs":{"selfJoin":false,"invitations":"members","comments":"members","voting":"members","permissionLevel":"private"}}]}
|
data/test/test_client.rb
ADDED
@@ -0,0 +1,147 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'simplecov'
|
4
|
+
SimpleCov.start
|
5
|
+
|
6
|
+
require 'fakeweb'
|
7
|
+
require 'mocha'
|
8
|
+
require 'trello-client'
|
9
|
+
require 'test/unit'
|
10
|
+
|
11
|
+
|
12
|
+
class TestClient < Test::Unit::TestCase
|
13
|
+
|
14
|
+
def setup
|
15
|
+
@api_key = 'test'
|
16
|
+
@api_token = 'test'
|
17
|
+
|
18
|
+
@test_dir = File.dirname(__FILE__)
|
19
|
+
@test_data = File.join( @test_dir, 'data' )
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
def test_initialization
|
24
|
+
blockable = false
|
25
|
+
client = Trello::Client.new do |client|
|
26
|
+
assert_kind_of Trello::Client, client
|
27
|
+
blockable = true
|
28
|
+
end
|
29
|
+
assert blockable, 'works as block'
|
30
|
+
assert_kind_of Trello::Client, client
|
31
|
+
assert_kind_of Trello::Client, Trello::Client.new
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_accessors
|
35
|
+
Trello::Client.new do |client|
|
36
|
+
assert_equal 'https://api.trello.com/1', client.api
|
37
|
+
assert_nil client.api_key
|
38
|
+
assert_nil client.api_token
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_member_parameter_validation
|
43
|
+
Trello::Client.new do |client|
|
44
|
+
assert_raise(RuntimeError, 'invalid id') { client.member(nil) }
|
45
|
+
assert_raise(RuntimeError, 'invalid id') { client.member('') }
|
46
|
+
|
47
|
+
assert_nil client.api_key
|
48
|
+
assert_raise(RuntimeError, 'invalid API key') { client.member('me') }
|
49
|
+
client.api_key = ''
|
50
|
+
assert_equal '', client.api_key
|
51
|
+
assert_raise(RuntimeError, 'invalid API key') { client.member('me') }
|
52
|
+
client.api_key = @api_key
|
53
|
+
assert_equal @api_key, client.api_key
|
54
|
+
|
55
|
+
assert_nil client.api_token
|
56
|
+
assert_raise(RuntimeError, 'invalid API token') { client.member('me') }
|
57
|
+
client.api_token = ''
|
58
|
+
assert_equal '', client.api_token
|
59
|
+
assert_raise(RuntimeError, 'invalid API token') { client.member('me') }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_member
|
64
|
+
Trello::Client.new do |client|
|
65
|
+
json = open( File.join( @test_data, 'member.json' ) )
|
66
|
+
m = Trello::Client::Member.new(json)
|
67
|
+
client.stubs(:member).with('me').returns(m)
|
68
|
+
|
69
|
+
assert_not_nil m
|
70
|
+
assert_kind_of Trello::Client::Member, m
|
71
|
+
|
72
|
+
assert_equal '65fcb89a59ff96b68b11332686c8f4f9', m['avatarHash']
|
73
|
+
assert_equal '', m['bio']
|
74
|
+
assert_nil m['boards']
|
75
|
+
assert_equal 'blair christensen', m['fullName']
|
76
|
+
assert_equal '4f4f9d55cf2e679318098c45', m['id']
|
77
|
+
assert_equal 'BC', m['initials']
|
78
|
+
assert_equal 'https://trello.com/blairchristensen', m['url']
|
79
|
+
assert_equal 'blairchristensen', m['username']
|
80
|
+
|
81
|
+
assert_not_nil m.boards
|
82
|
+
assert_kind_of Array, m.boards
|
83
|
+
assert_equal 0, m.boards.size
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_member_with_boards
|
88
|
+
Trello::Client.new do |client|
|
89
|
+
json = open( File.join( @test_data, 'member_with_boards.json' ) )
|
90
|
+
m = Trello::Client::Member.new(json)
|
91
|
+
client.stubs(:member).with('me').returns(m)
|
92
|
+
|
93
|
+
assert_not_nil m
|
94
|
+
assert_kind_of Trello::Client::Member, m
|
95
|
+
|
96
|
+
assert_equal '65fcb89a59ff96b68b11332686c8f4f9', m['avatarHash']
|
97
|
+
assert_equal '', m['bio']
|
98
|
+
assert_not_nil m['boards']
|
99
|
+
assert_equal 'blair christensen', m['fullName']
|
100
|
+
assert_equal '4f4f9d55cf2e679318098c45', m['id']
|
101
|
+
assert_equal 'BC', m['initials']
|
102
|
+
assert_equal 'https://trello.com/blairchristensen', m['url']
|
103
|
+
assert_equal 'blairchristensen', m['username']
|
104
|
+
|
105
|
+
assert_not_nil m.boards
|
106
|
+
assert_kind_of Array, m.boards
|
107
|
+
assert_equal 3, m.boards.size
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_underscore_get_parameter_validation
|
112
|
+
Trello::Client.new do |client|
|
113
|
+
uri = "#{ client.api }/member/me"
|
114
|
+
|
115
|
+
assert_raise(RuntimeError, 'invalid URI') { client.send( :_get, nil ) }
|
116
|
+
assert_raise(RuntimeError, 'invalid URI') { client.send( :_get, '' ) }
|
117
|
+
|
118
|
+
assert_raise(RuntimeError, 'invalid API key') { client.send( :_get, uri ) }
|
119
|
+
assert_raise(RuntimeError, 'invalid API key') { client.send( :_get, uri ) }
|
120
|
+
client.api_key = @api_key
|
121
|
+
|
122
|
+
assert_raise(RuntimeError, 'invalid API token') { client.send( :_get, uri ) }
|
123
|
+
assert_raise(RuntimeError, 'invalid API token') { client.send( :_get, uri ) }
|
124
|
+
client.api_token = @api_token
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_underscore_get
|
129
|
+
Trello::Client.new do |client|
|
130
|
+
json = open( File.join( @test_data, 'member.json' ) ).read
|
131
|
+
uri = "#{ client.api }/member/me"
|
132
|
+
fake_uri = "#{uri}?key=test&token=test"
|
133
|
+
FakeWeb.register_uri( :get, fake_uri, :body => json )
|
134
|
+
|
135
|
+
client.api_key = @api_key
|
136
|
+
client.api_token = @api_token
|
137
|
+
|
138
|
+
r = client.send( :_get, uri )
|
139
|
+
|
140
|
+
assert_not_nil r
|
141
|
+
assert_equal json, r
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
147
|
+
|
data/test/test_member.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'simplecov'
|
4
|
+
SimpleCov.start
|
5
|
+
|
6
|
+
require 'fakeweb'
|
7
|
+
require 'mocha'
|
8
|
+
require 'trello-client'
|
9
|
+
require 'test/unit'
|
10
|
+
|
11
|
+
|
12
|
+
class TestMember < Test::Unit::TestCase
|
13
|
+
|
14
|
+
def test
|
15
|
+
skip 'TODO - Add explicit Test::Client::Member tests'
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/trello-client/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ['blair christensen']
|
6
|
+
gem.email = ['blair.christensen@gmail.com']
|
7
|
+
gem.description = %q{Trello API client}
|
8
|
+
gem.summary = %q{Trello API client}
|
9
|
+
gem.homepage = 'https://github.com/blairc/trello-client/'
|
10
|
+
|
11
|
+
gem.files = `git ls-files`.split($\)
|
12
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
+
gem.name = 'trello-client'
|
15
|
+
gem.require_paths = ['lib']
|
16
|
+
gem.version = Trello::Client::VERSION
|
17
|
+
|
18
|
+
gem.add_runtime_dependency 'multi_json'
|
19
|
+
|
20
|
+
gem.add_development_dependency 'fakeweb'
|
21
|
+
gem.add_development_dependency 'mocha'
|
22
|
+
gem.add_development_dependency 'rake'
|
23
|
+
gem.add_development_dependency 'rdoc'
|
24
|
+
gem.add_development_dependency 'rdoc-readme', '~> 0.1.2'
|
25
|
+
gem.add_development_dependency 'simplecov'
|
26
|
+
end
|
27
|
+
|
metadata
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: trello-client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- blair christensen
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-28 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: multi_json
|
16
|
+
requirement: &70273668948620 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70273668948620
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: fakeweb
|
27
|
+
requirement: &70273668947980 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70273668947980
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: mocha
|
38
|
+
requirement: &70273668947200 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70273668947200
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rake
|
49
|
+
requirement: &70273668946460 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70273668946460
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rdoc
|
60
|
+
requirement: &70273668945700 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70273668945700
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rdoc-readme
|
71
|
+
requirement: &70273668944700 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.1.2
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70273668944700
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: simplecov
|
82
|
+
requirement: &70273668965120 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70273668965120
|
91
|
+
description: Trello API client
|
92
|
+
email:
|
93
|
+
- blair.christensen@gmail.com
|
94
|
+
executables: []
|
95
|
+
extensions: []
|
96
|
+
extra_rdoc_files: []
|
97
|
+
files:
|
98
|
+
- .gitignore
|
99
|
+
- Gemfile
|
100
|
+
- History.rdoc
|
101
|
+
- LICENSE
|
102
|
+
- README.rdoc
|
103
|
+
- Rakefile
|
104
|
+
- lib/trello-client.rb
|
105
|
+
- lib/trello-client/member.rb
|
106
|
+
- lib/trello-client/version.rb
|
107
|
+
- test/data/member.json
|
108
|
+
- test/data/member_with_boards.json
|
109
|
+
- test/test_client.rb
|
110
|
+
- test/test_member.rb
|
111
|
+
- trello-client.gemspec
|
112
|
+
homepage: https://github.com/blairc/trello-client/
|
113
|
+
licenses: []
|
114
|
+
post_install_message:
|
115
|
+
rdoc_options: []
|
116
|
+
require_paths:
|
117
|
+
- lib
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
segments:
|
125
|
+
- 0
|
126
|
+
hash: -3090611917339135223
|
127
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
segments:
|
134
|
+
- 0
|
135
|
+
hash: -3090611917339135223
|
136
|
+
requirements: []
|
137
|
+
rubyforge_project:
|
138
|
+
rubygems_version: 1.8.11
|
139
|
+
signing_key:
|
140
|
+
specification_version: 3
|
141
|
+
summary: Trello API client
|
142
|
+
test_files:
|
143
|
+
- test/data/member.json
|
144
|
+
- test/data/member_with_boards.json
|
145
|
+
- test/test_client.rb
|
146
|
+
- test/test_member.rb
|