croudia 1.0.11 → 1.0.12
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.
- checksums.yaml +4 -4
- data/lib/croudia/api/account.rb +9 -0
- data/lib/croudia/default.rb +70 -70
- data/lib/croudia/error.rb +49 -48
- data/lib/croudia/request/raise_error.rb +19 -19
- data/lib/croudia/response/raise_error.rb +38 -36
- data/lib/croudia/version.rb +1 -1
- data/spec/croudia/api/account_spec.rb +24 -0
- data/spec/croudia/error_spec.rb +46 -46
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d4a58cfd9120736f45872cdf84debae55fb32c6
|
4
|
+
data.tar.gz: d9f42d52f34058b0f2b4c20074a339149777e3e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51cacb282bfb8f3cd36ffc8d505b61f9aad40d3d0b7a621eac97c39c1eba6641d3229128e0e06158d55d8ae81a42b5751b12b3ddb4ec7b14b189c47637cb8f01
|
7
|
+
data.tar.gz: 1d1ca52175317b7c7e5a5500ee78bd1636d91bc56e4789fc9565d3ed446b67a2b011918d5e9e41776e2dde7a1fa0c2799c3fbd156715a95b899f5c4e5031db05
|
data/lib/croudia/api/account.rb
CHANGED
@@ -23,6 +23,15 @@ module Croudia
|
|
23
23
|
resp = post('/account/update_profile_image.json', params)
|
24
24
|
Croudia::User.new(resp)
|
25
25
|
end
|
26
|
+
|
27
|
+
# Update profile
|
28
|
+
#
|
29
|
+
# @param params [Hash]
|
30
|
+
# @return [Croudia::User] Updated profile
|
31
|
+
def update_profile(params)
|
32
|
+
resp = post('/account/update_profile.json', params)
|
33
|
+
Croudia::User.new(resp)
|
34
|
+
end
|
26
35
|
end
|
27
36
|
end
|
28
37
|
end
|
data/lib/croudia/default.rb
CHANGED
@@ -1,70 +1,70 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'faraday_middleware'
|
3
|
-
require 'croudia/configurable'
|
4
|
-
require 'croudia/request/multipart_with_file'
|
5
|
-
require 'croudia/request/raise_error'
|
6
|
-
require 'croudia/response/parse_json'
|
7
|
-
require 'croudia/response/raise_error'
|
8
|
-
require 'croudia/version'
|
9
|
-
|
10
|
-
module Croudia
|
11
|
-
module Default
|
12
|
-
ENDPOINT = 'https://api.croudia.com' unless defined? Croudia::Default::ENDPOINT
|
13
|
-
CONNECTION_OPTIONS = {
|
14
|
-
headers: {
|
15
|
-
accept: 'application/json',
|
16
|
-
user_agent: "Croudia Ruby Gem/#{Croudia::VERSION}",
|
17
|
-
},
|
18
|
-
request: {
|
19
|
-
open_timeout:
|
20
|
-
timeout:
|
21
|
-
},
|
22
|
-
ssl: {
|
23
|
-
verify: true,
|
24
|
-
},
|
25
|
-
} unless defined? Croudia::Default::CONNECTION_OPTIONS
|
26
|
-
MIDDLEWARE = Faraday::Builder.new do |builder|
|
27
|
-
builder.request :multipart_with_file
|
28
|
-
builder.request :multipart
|
29
|
-
builder.request :url_encoded
|
30
|
-
builder.request :raise_error
|
31
|
-
|
32
|
-
builder.response :raise_error
|
33
|
-
builder.response :parse_json
|
34
|
-
|
35
|
-
builder.adapter Faraday.default_adapter
|
36
|
-
end unless defined? Croudia::Default::MIDDLEWARE
|
37
|
-
|
38
|
-
class << self
|
39
|
-
def options
|
40
|
-
Hash[Croudia::Configurable.keys.map do |key|
|
41
|
-
[key, __send__(key)]
|
42
|
-
end]
|
43
|
-
end
|
44
|
-
|
45
|
-
def client_id
|
46
|
-
ENV['CROUDIA_CLIENT_ID']
|
47
|
-
end
|
48
|
-
|
49
|
-
def client_secret
|
50
|
-
ENV['CROUDIA_CLIENT_SECRET']
|
51
|
-
end
|
52
|
-
|
53
|
-
def access_token
|
54
|
-
ENV['CROUDIA_ACCESS_TOKEN']
|
55
|
-
end
|
56
|
-
|
57
|
-
def endpoint
|
58
|
-
ENDPOINT
|
59
|
-
end
|
60
|
-
|
61
|
-
def connection_options
|
62
|
-
CONNECTION_OPTIONS
|
63
|
-
end
|
64
|
-
|
65
|
-
def middleware
|
66
|
-
MIDDLEWARE
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
1
|
+
require 'faraday'
|
2
|
+
require 'faraday_middleware'
|
3
|
+
require 'croudia/configurable'
|
4
|
+
require 'croudia/request/multipart_with_file'
|
5
|
+
require 'croudia/request/raise_error'
|
6
|
+
require 'croudia/response/parse_json'
|
7
|
+
require 'croudia/response/raise_error'
|
8
|
+
require 'croudia/version'
|
9
|
+
|
10
|
+
module Croudia
|
11
|
+
module Default
|
12
|
+
ENDPOINT = 'https://api.croudia.com' unless defined? Croudia::Default::ENDPOINT
|
13
|
+
CONNECTION_OPTIONS = {
|
14
|
+
headers: {
|
15
|
+
accept: 'application/json',
|
16
|
+
user_agent: "Croudia Ruby Gem/#{Croudia::VERSION}",
|
17
|
+
},
|
18
|
+
request: {
|
19
|
+
open_timeout: 10,
|
20
|
+
timeout: 30,
|
21
|
+
},
|
22
|
+
ssl: {
|
23
|
+
verify: true,
|
24
|
+
},
|
25
|
+
} unless defined? Croudia::Default::CONNECTION_OPTIONS
|
26
|
+
MIDDLEWARE = Faraday::Builder.new do |builder|
|
27
|
+
builder.request :multipart_with_file
|
28
|
+
builder.request :multipart
|
29
|
+
builder.request :url_encoded
|
30
|
+
builder.request :raise_error
|
31
|
+
|
32
|
+
builder.response :raise_error
|
33
|
+
builder.response :parse_json
|
34
|
+
|
35
|
+
builder.adapter Faraday.default_adapter
|
36
|
+
end unless defined? Croudia::Default::MIDDLEWARE
|
37
|
+
|
38
|
+
class << self
|
39
|
+
def options
|
40
|
+
Hash[Croudia::Configurable.keys.map do |key|
|
41
|
+
[key, __send__(key)]
|
42
|
+
end]
|
43
|
+
end
|
44
|
+
|
45
|
+
def client_id
|
46
|
+
ENV['CROUDIA_CLIENT_ID']
|
47
|
+
end
|
48
|
+
|
49
|
+
def client_secret
|
50
|
+
ENV['CROUDIA_CLIENT_SECRET']
|
51
|
+
end
|
52
|
+
|
53
|
+
def access_token
|
54
|
+
ENV['CROUDIA_ACCESS_TOKEN']
|
55
|
+
end
|
56
|
+
|
57
|
+
def endpoint
|
58
|
+
ENDPOINT
|
59
|
+
end
|
60
|
+
|
61
|
+
def connection_options
|
62
|
+
CONNECTION_OPTIONS
|
63
|
+
end
|
64
|
+
|
65
|
+
def middleware
|
66
|
+
MIDDLEWARE
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/croudia/error.rb
CHANGED
@@ -1,48 +1,49 @@
|
|
1
|
-
module Croudia
|
2
|
-
class Error < StandardError
|
3
|
-
|
4
|
-
# Error connecting to server
|
5
|
-
class
|
6
|
-
attr_reader :wrapped_exception
|
7
|
-
|
8
|
-
def initialize(e)
|
9
|
-
@wrapped_exception = e
|
10
|
-
super(e.respond_to?(:message) ? e.message : e.to_s)
|
11
|
-
end
|
12
|
-
|
13
|
-
def backtrace
|
14
|
-
if @wrapped_exception.respond_to?(:backtrace)
|
15
|
-
@wrapped_exception.backtrace
|
16
|
-
else
|
17
|
-
super
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
class Timeout <
|
23
|
-
|
24
|
-
# Error connected to server
|
25
|
-
class ConnectionError < Error
|
26
|
-
attr_reader :code, :env, :error
|
27
|
-
|
28
|
-
def initialize(env)
|
29
|
-
@code = env[:status]
|
30
|
-
@error = env[:body]['error'] rescue nil
|
31
|
-
@env = env
|
32
|
-
super(@error)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
# 4xx: Client Errors
|
37
|
-
class ClientError < ConnectionError; end
|
38
|
-
class BadRequest < ClientError; end
|
39
|
-
class Unauthorized < ClientError; end
|
40
|
-
class Forbidden < ClientError; end
|
41
|
-
class NotFound < ClientError; end
|
42
|
-
|
43
|
-
# 5xx: Server Errors
|
44
|
-
class ServerError < ConnectionError; end
|
45
|
-
class
|
46
|
-
class
|
47
|
-
|
48
|
-
end
|
1
|
+
module Croudia
|
2
|
+
class Error < StandardError
|
3
|
+
|
4
|
+
# Error connecting to server
|
5
|
+
class NetworkError < Error
|
6
|
+
attr_reader :wrapped_exception
|
7
|
+
|
8
|
+
def initialize(e)
|
9
|
+
@wrapped_exception = e
|
10
|
+
super(e.respond_to?(:message) ? e.message : e.to_s)
|
11
|
+
end
|
12
|
+
|
13
|
+
def backtrace
|
14
|
+
if @wrapped_exception.respond_to?(:backtrace)
|
15
|
+
@wrapped_exception.backtrace
|
16
|
+
else
|
17
|
+
super
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class Timeout < NetworkError; end
|
23
|
+
|
24
|
+
# Error connected to server
|
25
|
+
class ConnectionError < Error
|
26
|
+
attr_reader :code, :env, :error
|
27
|
+
|
28
|
+
def initialize(env)
|
29
|
+
@code = env[:status]
|
30
|
+
@error = env[:body]['error'] rescue nil
|
31
|
+
@env = env
|
32
|
+
super(@error)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# 4xx: Client Errors
|
37
|
+
class ClientError < ConnectionError; end
|
38
|
+
class BadRequest < ClientError; end
|
39
|
+
class Unauthorized < ClientError; end
|
40
|
+
class Forbidden < ClientError; end
|
41
|
+
class NotFound < ClientError; end
|
42
|
+
|
43
|
+
# 5xx: Server Errors
|
44
|
+
class ServerError < ConnectionError; end
|
45
|
+
class InternalServerError < ServerError; end
|
46
|
+
class BadGateway < ServerError; end
|
47
|
+
class Unavailable < ServerError; end
|
48
|
+
end
|
49
|
+
end
|
@@ -1,19 +1,19 @@
|
|
1
|
-
require 'croudia/error'
|
2
|
-
require 'faraday'
|
3
|
-
|
4
|
-
module Croudia
|
5
|
-
module Request
|
6
|
-
class RaiseError < Faraday::Middleware
|
7
|
-
def call(env)
|
8
|
-
@app.call(env)
|
9
|
-
rescue Faraday::Error::TimeoutError => e
|
10
|
-
raise Croudia::Error::Timeout.new(e)
|
11
|
-
rescue Faraday::Error::ConnectionFailed => e
|
12
|
-
raise Croudia::Error::
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
Faraday.register_middleware :request,
|
19
|
-
raise_error: lambda { Croudia::Request::RaiseError }
|
1
|
+
require 'croudia/error'
|
2
|
+
require 'faraday'
|
3
|
+
|
4
|
+
module Croudia
|
5
|
+
module Request
|
6
|
+
class RaiseError < Faraday::Middleware
|
7
|
+
def call(env)
|
8
|
+
@app.call(env)
|
9
|
+
rescue Faraday::Error::TimeoutError => e
|
10
|
+
raise Croudia::Error::Timeout.new(e)
|
11
|
+
rescue Faraday::Error::ConnectionFailed => e
|
12
|
+
raise Croudia::Error::NetworkError.new(e)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
Faraday.register_middleware :request,
|
19
|
+
raise_error: lambda { Croudia::Request::RaiseError }
|
@@ -1,36 +1,38 @@
|
|
1
|
-
require 'croudia/error'
|
2
|
-
require 'faraday'
|
3
|
-
|
4
|
-
module Croudia
|
5
|
-
module Response
|
6
|
-
class RaiseError < Faraday::Response::Middleware
|
7
|
-
def on_complete(env)
|
8
|
-
error_class = case env[:status]
|
9
|
-
when 400
|
10
|
-
Croudia::Error::BadRequest
|
11
|
-
when 401
|
12
|
-
Croudia::Error::Unauthorized
|
13
|
-
when 403
|
14
|
-
Croudia::Error::Forbidden
|
15
|
-
when 404
|
16
|
-
Croudia::Error::NotFound
|
17
|
-
when 400 .. 499
|
18
|
-
Croudia::Error::ClientError
|
19
|
-
when
|
20
|
-
Croudia::Error::
|
21
|
-
when
|
22
|
-
Croudia::Error::
|
23
|
-
when
|
24
|
-
Croudia::Error::
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
|
36
|
-
|
1
|
+
require 'croudia/error'
|
2
|
+
require 'faraday'
|
3
|
+
|
4
|
+
module Croudia
|
5
|
+
module Response
|
6
|
+
class RaiseError < Faraday::Response::Middleware
|
7
|
+
def on_complete(env)
|
8
|
+
error_class = case env[:status]
|
9
|
+
when 400
|
10
|
+
Croudia::Error::BadRequest
|
11
|
+
when 401
|
12
|
+
Croudia::Error::Unauthorized
|
13
|
+
when 403
|
14
|
+
Croudia::Error::Forbidden
|
15
|
+
when 404
|
16
|
+
Croudia::Error::NotFound
|
17
|
+
when 400 .. 499
|
18
|
+
Croudia::Error::ClientError
|
19
|
+
when 500
|
20
|
+
Croudia::Error::InternalServerError
|
21
|
+
when 502
|
22
|
+
Croudia::Error::BadGateway
|
23
|
+
when 503
|
24
|
+
Croudia::Error::Unavailable
|
25
|
+
when 500 .. 599
|
26
|
+
Croudia::Error::ServerError
|
27
|
+
else
|
28
|
+
return
|
29
|
+
end
|
30
|
+
|
31
|
+
raise error_class.new(env)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
Faraday.register_middleware :response,
|
38
|
+
raise_error: lambda { Croudia::Response::RaiseError }
|
data/lib/croudia/version.rb
CHANGED
@@ -41,4 +41,28 @@ describe Croudia::API::Account do
|
|
41
41
|
expect(subject).to be_a Croudia::User
|
42
42
|
end
|
43
43
|
end
|
44
|
+
|
45
|
+
describe '#update_profile' do
|
46
|
+
before do
|
47
|
+
stub_post('/account/update_profile.json').to_return(
|
48
|
+
body: fixture(:user),
|
49
|
+
headers: { content_type: 'application/json; charset=utf-8' }
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'requests the correct resource' do
|
54
|
+
@client.update_profile(name: 'name', url: 'http://example.com')
|
55
|
+
expect(a_post('/account/update_profile.json').with(
|
56
|
+
body: {
|
57
|
+
name: 'name',
|
58
|
+
url: 'http://example.com',
|
59
|
+
}
|
60
|
+
)).to have_been_made
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'returns a Croudia::User' do
|
64
|
+
subject = @client.update_profile(name: 'name', location: 'Japan')
|
65
|
+
expect(subject).to be_a Croudia::User
|
66
|
+
end
|
67
|
+
end
|
44
68
|
end
|
data/spec/croudia/error_spec.rb
CHANGED
@@ -1,46 +1,46 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'helper'
|
3
|
-
|
4
|
-
describe Croudia::Error do
|
5
|
-
before do
|
6
|
-
@client = Croudia::Client.new
|
7
|
-
end
|
8
|
-
|
9
|
-
context 'connection error' do
|
10
|
-
before do
|
11
|
-
stub_get('/account/verify_credentials.json').to_raise Faraday::Error::ConnectionFailed
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'raises Croudia::Error::
|
15
|
-
expect { @client.verify_credentials }.to raise_error Croudia::Error::
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
context 'client error' do
|
20
|
-
before do
|
21
|
-
stub_get('/account/verify_credentials.json').to_return(
|
22
|
-
status: 401,
|
23
|
-
body: fixture(:error),
|
24
|
-
headers: { content_type: 'application/json; charset=utf-8' }
|
25
|
-
)
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'raises Croudia::Error::ClientError' do
|
29
|
-
expect { @client.verify_credentials }.to raise_error Croudia::Error::ClientError
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context 'server error' do
|
34
|
-
before do
|
35
|
-
stub_get('/account/verify_credentials.json').to_return(
|
36
|
-
status: 502,
|
37
|
-
body: fixture(:error),
|
38
|
-
headers: { content_type: 'application/json; charset=utf-8' }
|
39
|
-
)
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'raises Croudia::Error::ServerError' do
|
43
|
-
expect { @client.verify_credentials }.to raise_error Croudia::Error::ServerError
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
1
|
+
require 'faraday'
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
describe Croudia::Error do
|
5
|
+
before do
|
6
|
+
@client = Croudia::Client.new
|
7
|
+
end
|
8
|
+
|
9
|
+
context 'connection error' do
|
10
|
+
before do
|
11
|
+
stub_get('/account/verify_credentials.json').to_raise Faraday::Error::ConnectionFailed
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'raises Croudia::Error::NetworkError' do
|
15
|
+
expect { @client.verify_credentials }.to raise_error Croudia::Error::NetworkError
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'client error' do
|
20
|
+
before do
|
21
|
+
stub_get('/account/verify_credentials.json').to_return(
|
22
|
+
status: 401,
|
23
|
+
body: fixture(:error),
|
24
|
+
headers: { content_type: 'application/json; charset=utf-8' }
|
25
|
+
)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'raises Croudia::Error::ClientError' do
|
29
|
+
expect { @client.verify_credentials }.to raise_error Croudia::Error::ClientError
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'server error' do
|
34
|
+
before do
|
35
|
+
stub_get('/account/verify_credentials.json').to_return(
|
36
|
+
status: 502,
|
37
|
+
body: fixture(:error),
|
38
|
+
headers: { content_type: 'application/json; charset=utf-8' }
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'raises Croudia::Error::ServerError' do
|
43
|
+
expect { @client.verify_credentials }.to raise_error Croudia::Error::ServerError
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: croudia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- wktk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|