trell 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trell/configurable.rb +19 -0
- data/lib/trell/error.rb +104 -0
- data/lib/trell/response/raise_error.rb +16 -0
- data/lib/trell/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0a60800fdb2d7d54d3e6044702b51a5a158b186
|
4
|
+
data.tar.gz: 02c3b27a40d390cf65b37a6ec0e9d96f4f830cdd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfcd51f254621b00bb9fb3edb4ec9e86bd039f44304e3c7a35f6f2b567016bcbbd319abb9eddae15e00f1b61ce4d9e304348e97c9e2ade940e1a831701db2c05
|
7
|
+
data.tar.gz: eb75d86f51f456bad96a0e37feb82108f10c931d091ec6c2cd1209daad5dc7383c63536446737cdec75d20a8b74ac8e6fdae41a1e2e8dbe87f4c2e31355bb84c
|
data/lib/trell/configurable.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'trell/response/raise_error'
|
2
|
+
|
1
3
|
module Trell
|
2
4
|
module Configurable
|
3
5
|
OPTIONS_KEYS = %i(
|
@@ -9,6 +11,9 @@ module Trell
|
|
9
11
|
web_endpoint
|
10
12
|
user_agent
|
11
13
|
media_type
|
14
|
+
connection_options
|
15
|
+
proxy
|
16
|
+
middleware
|
12
17
|
)
|
13
18
|
|
14
19
|
attr_accessor(*OPTIONS_KEYS)
|
@@ -23,6 +28,14 @@ module Trell
|
|
23
28
|
yield self
|
24
29
|
end
|
25
30
|
|
31
|
+
def api_endpoint
|
32
|
+
File.join(@api_endpoint, '')
|
33
|
+
end
|
34
|
+
|
35
|
+
def web_endpoint
|
36
|
+
File.join(@web_endpoint, '')
|
37
|
+
end
|
38
|
+
|
26
39
|
def reset!
|
27
40
|
@login = ENV['TRELL_LOGIN']
|
28
41
|
@password = ENV['TRELL_PASSWORD']
|
@@ -32,6 +45,12 @@ module Trell
|
|
32
45
|
@web_endpoint = ENV['TRELL_WEB_ENDPOINT'] || 'https://trello.com/'
|
33
46
|
@user_agent = "Trell Ruby Gem #{Trell::VERSION}"
|
34
47
|
@media_type = 'application/json'
|
48
|
+
@connection_options = { headers: { accept: media_type, user_agent: user_agent } }
|
49
|
+
@proxy = ENV['TRELL_PROXY']
|
50
|
+
@middleware = Faraday::RackBuilder.new { |builder|
|
51
|
+
builder.use Trell::Response::RaiseError
|
52
|
+
builder.adapter Faraday.default_adapter
|
53
|
+
}
|
35
54
|
self
|
36
55
|
end
|
37
56
|
alias setup reset!
|
data/lib/trell/error.rb
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
module Trell
|
2
|
+
class Error < StandardError
|
3
|
+
def self.from_response(response)
|
4
|
+
if klass = case response[:status].to_i
|
5
|
+
when 400 then Trell::BadRequest
|
6
|
+
when 401 then Trell::Unauthorized
|
7
|
+
when 403 then Trell::Forbidden
|
8
|
+
when 404 then Trell::NotFound
|
9
|
+
when 406 then Trell::NotAcceptable
|
10
|
+
when 409 then Trell::Conflict
|
11
|
+
when 415 then Trell::UnsupportedMediaType
|
12
|
+
when 422 then Trell::UnprocessableEntity
|
13
|
+
when 400..499 then Trell::ClientError
|
14
|
+
when 500 then Trell::InternalServerError
|
15
|
+
when 501 then Trell::NotImplemented
|
16
|
+
when 502 then Trell::BadGateway
|
17
|
+
when 503 then Trell::ServiceUnavailable
|
18
|
+
when 500..599 then Trell::ServerError
|
19
|
+
end
|
20
|
+
klass.new(response)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def initialize(response = nil)
|
25
|
+
@response = response
|
26
|
+
super(build_error_message)
|
27
|
+
end
|
28
|
+
|
29
|
+
def errors
|
30
|
+
if data && data.is_a?(Hash)
|
31
|
+
data[:errors] || []
|
32
|
+
else
|
33
|
+
[]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def data
|
40
|
+
@data ||=
|
41
|
+
if (body = @response[:body]) && !body.empty?
|
42
|
+
if body.is_a?(String) &&
|
43
|
+
@response[:response_headers] &&
|
44
|
+
@response[:response_headers][:content_type] =~ /json/
|
45
|
+
|
46
|
+
Sawyer::Agent.serializer.decode(body)
|
47
|
+
else
|
48
|
+
body
|
49
|
+
end
|
50
|
+
else
|
51
|
+
nil
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def response_message
|
56
|
+
case data
|
57
|
+
when Hash
|
58
|
+
data[:message]
|
59
|
+
when String
|
60
|
+
data
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def response_error
|
65
|
+
"Error: #{data[:error]}" if data.is_a?(Hash) && data[:error]
|
66
|
+
end
|
67
|
+
|
68
|
+
def build_error_message
|
69
|
+
return nil if @response.nil?
|
70
|
+
|
71
|
+
message = "#{@response[:method].to_s.upcase} "
|
72
|
+
message << redact_url(@response[:url].to_s) + ": "
|
73
|
+
message << "#{@response[:status]} - "
|
74
|
+
message << "#{response_message}" unless response_message.nil?
|
75
|
+
message << "#{response_error}" unless response_error.nil?
|
76
|
+
message
|
77
|
+
end
|
78
|
+
|
79
|
+
def redact_url(url_string)
|
80
|
+
%w[client_secret access_token].each do |token|
|
81
|
+
url_string.gsub!(/#{token}=\S+/, "#{token}=(redacted)") if url_string.include? token
|
82
|
+
end
|
83
|
+
url_string
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
class ClientError < Error; end
|
88
|
+
class BadRequest < ClientError; end
|
89
|
+
class Unauthorized < ClientError; end
|
90
|
+
class Forbidden < ClientError; end
|
91
|
+
class TooManyRequests < Forbidden; end
|
92
|
+
class TooManyLoginAttempts < Forbidden; end
|
93
|
+
class NotFound < ClientError; end
|
94
|
+
class NotAcceptable < ClientError; end
|
95
|
+
class Conflict < ClientError; end
|
96
|
+
class UnsupportedMediaType < ClientError; end
|
97
|
+
class UnprocessableEntity < ClientError; end
|
98
|
+
class ServerError < Error; end
|
99
|
+
class InternalServerError < ServerError; end
|
100
|
+
class NotImplemented < ServerError; end
|
101
|
+
class BadGateway < ServerError; end
|
102
|
+
class ServiceUnavailable < ServerError; end
|
103
|
+
class MissingContentType < ArgumentError; end
|
104
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'trell/error'
|
3
|
+
|
4
|
+
module Trell
|
5
|
+
module Response
|
6
|
+
class RaiseError < Faraday::Response::Middleware
|
7
|
+
private
|
8
|
+
|
9
|
+
def on_complete(response)
|
10
|
+
if error = Trell::Error.from_response(response)
|
11
|
+
raise error
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/trell/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- linyows
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sawyer
|
@@ -77,6 +77,8 @@ files:
|
|
77
77
|
- lib/trell/client/organizations.rb
|
78
78
|
- lib/trell/client/tokens.rb
|
79
79
|
- lib/trell/configurable.rb
|
80
|
+
- lib/trell/error.rb
|
81
|
+
- lib/trell/response/raise_error.rb
|
80
82
|
- lib/trell/version.rb
|
81
83
|
- spec/helper.rb
|
82
84
|
- trell.gemspec
|
@@ -100,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
102
|
version: '0'
|
101
103
|
requirements: []
|
102
104
|
rubyforge_project:
|
103
|
-
rubygems_version: 2.2.
|
105
|
+
rubygems_version: 2.2.0
|
104
106
|
signing_key:
|
105
107
|
specification_version: 4
|
106
108
|
summary: Simple Ruby wrapper for the Trello API.
|