croudia 1.0.15 → 1.1.0
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 +13 -5
- data/.gitignore +1 -0
- data/README.md +4 -1
- data/lib/croudia/api/account.rb +16 -5
- data/lib/croudia/api/favorites.rb +16 -15
- data/lib/croudia/api/friendships.rb +84 -22
- data/lib/croudia/api/oauth.rb +20 -4
- data/lib/croudia/api/search.rb +34 -5
- data/lib/croudia/api/secret_mails.rb +29 -11
- data/lib/croudia/api/statuses.rb +56 -19
- data/lib/croudia/api/timelines.rb +43 -5
- data/lib/croudia/api/trends.rb +20 -0
- data/lib/croudia/api/users.rb +16 -4
- data/lib/croudia/base.rb +71 -71
- data/lib/croudia/client.rb +4 -3
- data/lib/croudia/creatable.rb +1 -0
- data/lib/croudia/default.rb +70 -70
- data/lib/croudia/error.rb +49 -49
- data/lib/croudia/identity.rb +1 -1
- data/lib/croudia/place.rb +10 -0
- data/lib/croudia/request/raise_error.rb +19 -19
- data/lib/croudia/response/raise_error.rb +38 -38
- data/lib/croudia/trend.rb +13 -0
- data/lib/croudia/trend_results.rb +24 -0
- data/lib/croudia/version.rb +1 -1
- data/spec/croudia/api/favorites_spec.rb +13 -29
- data/spec/croudia/api/trends_spec.rb +29 -0
- data/spec/croudia/error_spec.rb +46 -46
- data/spec/fixtures/trends.json +20 -0
- metadata +13 -6
- data/lib/croudia/ext/openssl.rb +0 -19
data/lib/croudia/api/statuses.rb
CHANGED
@@ -5,11 +5,24 @@ module Croudia
|
|
5
5
|
module Statuses
|
6
6
|
# Update status
|
7
7
|
#
|
8
|
-
# @
|
9
|
-
# @
|
10
|
-
#
|
11
|
-
|
12
|
-
|
8
|
+
# @see https://developer.croudia.com/docs/11_statuses_update
|
9
|
+
# @overload update(status, params={})
|
10
|
+
# @param [String] status Status text
|
11
|
+
# @param [Hash] params Additional query parameters
|
12
|
+
# @option params [String, Integer] :in_reply_to_status_id
|
13
|
+
# @option params [String] :in_reply_with_quote Set true if quote
|
14
|
+
# @option params [String] :include_entities Set false to exclude entities
|
15
|
+
# @option params [String] :trim_user Set true to return compact user objects
|
16
|
+
# @overload update(params={})
|
17
|
+
# @param [Hash] params Query parameters
|
18
|
+
# @option params [String, Integer] :in_reply_to_status_id
|
19
|
+
# @option params [String] :in_reply_with_quote Set true if quote
|
20
|
+
# @option params [String] :include_entities Set false to exclude entities
|
21
|
+
# @option params [String] :status Status text
|
22
|
+
# @option params [String] :trim_user Set true to return compact user objects
|
23
|
+
# @return [Croudia::Status] Posted status
|
24
|
+
def update(status, params={})
|
25
|
+
merge_text!(params, status)
|
13
26
|
|
14
27
|
resp = post('/statuses/update.json', params)
|
15
28
|
Croudia::Status.new(resp)
|
@@ -17,8 +30,23 @@ module Croudia
|
|
17
30
|
|
18
31
|
# Update status with media
|
19
32
|
#
|
20
|
-
# @
|
21
|
-
# @
|
33
|
+
# @see https://developer.croudia.com/docs/14_statuses_update_with_media
|
34
|
+
# @note Currently only PNG, JPG, and GIF are supported
|
35
|
+
# @overload update_with_media(status, media, params={})
|
36
|
+
# @param [String] status Status text
|
37
|
+
# @param [File, #to_io] media Image to upload with
|
38
|
+
# @option params [String, Integer] :in_reply_to_status_id
|
39
|
+
# @option params [String] :in_reply_with_quote Set true if quote
|
40
|
+
# @option params [String] :include_entities Set false to exclude entities
|
41
|
+
# @option params [String] :trim_user Set true to return compact user objects
|
42
|
+
# @overload update_with_media(params={})
|
43
|
+
# @param [Hash] params Query parameters
|
44
|
+
# @option params [String, Integer] :in_reply_to_status_id
|
45
|
+
# @option params [String] :in_reply_with_quote Set true if quote
|
46
|
+
# @option params [String] :include_entities Set false to exclude entities
|
47
|
+
# @option params [File, #to_io] media Image to upload with
|
48
|
+
# @option params [String] :status Status text
|
49
|
+
# @option params [String] :trim_user Set true to return compact user objects
|
22
50
|
# @return [Croudia::Status]
|
23
51
|
def update_with_media(status, media={}, params={})
|
24
52
|
merge_text!(params, status)
|
@@ -29,33 +57,42 @@ module Croudia
|
|
29
57
|
|
30
58
|
# Destroy a status
|
31
59
|
#
|
32
|
-
# @
|
33
|
-
# @param
|
60
|
+
# @see https://developer.croudia.com/docs/12_statuses_destroy
|
61
|
+
# @param [String, Integer, Croudia::Status] status Status to delete
|
62
|
+
# @param [Hash] params Additional query parameters
|
63
|
+
# @option params [String] :include_entities Set false to exclude entities
|
64
|
+
# @option params [String] :trim_user Set true to return compact user objects
|
34
65
|
# @return [Croudia::Status] Deleted status
|
35
|
-
def destroy_status(
|
36
|
-
status_id = get_id(
|
66
|
+
def destroy_status(status, params={})
|
67
|
+
status_id = get_id(status)
|
37
68
|
resp = post("/statuses/destroy/#{status_id}.json", params)
|
38
69
|
Croudia::Status.new(resp)
|
39
70
|
end
|
40
71
|
|
41
72
|
# Retrieve a status
|
42
73
|
#
|
43
|
-
# @
|
44
|
-
# @param
|
74
|
+
# @see https://developer.croudia.com/docs/13_statuses_show
|
75
|
+
# @param [String, Integer, Croudia::Status] status Status to get
|
76
|
+
# @param [Hash] params Additional query parameters
|
77
|
+
# @option params [String] :include_entities Set false to exclude entities
|
78
|
+
# @option params [String] :trim_user Set true to return compact user objects
|
45
79
|
# @return [Croudia::Status]
|
46
|
-
def status(
|
47
|
-
status_id = get_id(
|
80
|
+
def status(status, params={})
|
81
|
+
status_id = get_id(status)
|
48
82
|
resp = get("/statuses/show/#{status_id}.json", params)
|
49
83
|
Croudia::Status.new(resp)
|
50
84
|
end
|
51
85
|
|
52
86
|
# Spread a status
|
53
87
|
#
|
54
|
-
# @
|
55
|
-
# @param
|
88
|
+
# @see https://developer.croudia.com/docs/61_statuses_spread
|
89
|
+
# @param [String, Integer, Croudia::Status] status Status to spread
|
90
|
+
# @param [Hash] params Additional query parameters
|
91
|
+
# @option params [String] :include_entities Set false to exclude entities
|
92
|
+
# @option params [String] :trim_user Set true to return compact user objects
|
56
93
|
# @return [Croudia::Status] My status including spreaded status
|
57
|
-
def spread(
|
58
|
-
status_id = get_id(
|
94
|
+
def spread(status, params={})
|
95
|
+
status_id = get_id(status)
|
59
96
|
resp = post("/statuses/spread/#{status_id}.json", params)
|
60
97
|
Croudia::Status.new(resp)
|
61
98
|
end
|
@@ -5,7 +5,13 @@ module Croudia
|
|
5
5
|
module Timelines
|
6
6
|
# Public Timeline
|
7
7
|
#
|
8
|
-
# @
|
8
|
+
# @see https://developer.croudia.com/docs/01_statuses_public_timeline
|
9
|
+
# @param [Hash] params Additional query parameters
|
10
|
+
# @option params [String, Integer] :count Number of statuses in the response
|
11
|
+
# @option params [String] :include_entities Set false to exclude entities
|
12
|
+
# @option params [String, Integer] :max_id Paging parameter
|
13
|
+
# @option params [String, Integer] :since_id Paging parameter
|
14
|
+
# @option params [String] :trim_user Set true to return compact user objects
|
9
15
|
# @return [Array<Croudia::Status>]
|
10
16
|
def public_timeline(params={})
|
11
17
|
resp = get('/statuses/public_timeline.json', params)
|
@@ -14,7 +20,13 @@ module Croudia
|
|
14
20
|
|
15
21
|
# Home Timeline
|
16
22
|
#
|
17
|
-
# @
|
23
|
+
# @see https://developer.croudia.com/docs/02_statuses_home_timeline
|
24
|
+
# @param [Hash] params Additional query parameters
|
25
|
+
# @option params [String, Integer] :count Number of statuses in the response
|
26
|
+
# @option params [String] :include_entities Set false to exclude entities
|
27
|
+
# @option params [String, Integer] :max_id Paging parameter
|
28
|
+
# @option params [String, Integer] :since_id Paging parameter
|
29
|
+
# @option params [String] :trim_user Set true to return compact user objects
|
18
30
|
# @return [Array<Croudia::Status>]
|
19
31
|
def home_timeline(params={})
|
20
32
|
resp = get('/statuses/home_timeline.json', params)
|
@@ -23,15 +35,41 @@ module Croudia
|
|
23
35
|
|
24
36
|
# User Timeline
|
25
37
|
#
|
26
|
-
# @
|
27
|
-
# @
|
28
|
-
#
|
38
|
+
# @see https://developer.croudia.com/docs/03_statuses_user_timeline
|
39
|
+
# @overload user_timeline(user, params={})
|
40
|
+
# @param [String, Integer, Croudia::User] user
|
41
|
+
# @param [Hash] params Additional query parameters
|
42
|
+
# @option params [String, Integer] :count Number of statuses in the response
|
43
|
+
# @option params [String] :include_entities Set false to exclude entities
|
44
|
+
# @option params [String, Integer] :max_id Paging parameter
|
45
|
+
# @option params [String, Integer] :since_id Paging parameter
|
46
|
+
# @option params [String] :trim_user Set true to return compact user objects
|
47
|
+
# @overload user_timeline(params={})
|
48
|
+
# @param [Hash] params Query parameters
|
49
|
+
# @option params [String, Integer] :count Number of statuses in the response
|
50
|
+
# @option params [String] :include_entities Set false to exclude entities
|
51
|
+
# @option params [String, Integer] :max_id Paging parameter
|
52
|
+
# @option params [String] :screen_name Screen name of the user
|
53
|
+
# @option params [String, Integer] :since_id Paging parameter
|
54
|
+
# @option params [String] :trim_user Set true to return compact user objects
|
55
|
+
# @option params [String, Integer] :user_id ID of the user
|
56
|
+
# @return [Array<Croudia::Status>]
|
29
57
|
def user_timeline(user, params={})
|
30
58
|
merge_user!(params, user)
|
31
59
|
resp = get('/statuses/user_timeline.json', params)
|
32
60
|
objects(Croudia::Status, resp)
|
33
61
|
end
|
34
62
|
|
63
|
+
# Mentions
|
64
|
+
#
|
65
|
+
# @see https://developer.croudia.com/docs/04_statuses_mentions
|
66
|
+
# @param [Hash] params Additional query parameters
|
67
|
+
# @option params [String, Integer] :count Number of statuses in the response
|
68
|
+
# @option params [String] :include_entities Set false to exclude entities
|
69
|
+
# @option params [String, Integer] :max_id Paging parameter
|
70
|
+
# @option params [String, Integer] :since_id Paging parameter
|
71
|
+
# @option params [String] :trim_user Set true to return compact user objects
|
72
|
+
# @return [Array<Croudia::Status>]
|
35
73
|
def mentions(params={})
|
36
74
|
resp = get('/statuses/mentions.json', params)
|
37
75
|
objects(Croudia::Status, resp)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'croudia/trend'
|
2
|
+
require 'croudia/trend_results'
|
3
|
+
|
4
|
+
module Croudia
|
5
|
+
module API
|
6
|
+
module Trends
|
7
|
+
# Retrieve the current trends
|
8
|
+
#
|
9
|
+
# @see https://developer.croudia.com/docs/100_trends_place
|
10
|
+
# @param [Hash] params Query parameters
|
11
|
+
# @option params [String, Integer] :id ("1") Location ID
|
12
|
+
# @return [Croudia::TrendResults<Croudia::Trend>]
|
13
|
+
def trends(params={})
|
14
|
+
params[:id] ||= '1'
|
15
|
+
resp = get('/trends/place.json', params)
|
16
|
+
Croudia::TrendResults.new(resp)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/croudia/api/users.rb
CHANGED
@@ -5,8 +5,14 @@ module Croudia
|
|
5
5
|
module Users
|
6
6
|
# Retrieve a user
|
7
7
|
#
|
8
|
-
# @
|
9
|
-
# @
|
8
|
+
# @see https://developer.croudia.com/docs/31_users_show
|
9
|
+
# @overload user(user, params={})
|
10
|
+
# @param [String, Integer, Croudia::User] user
|
11
|
+
# @param [Hash] params Additional query parameters
|
12
|
+
# @overload user(params={})
|
13
|
+
# @param [Hash] params Query parameters
|
14
|
+
# @option params [String] :screen_name Screen name of the user
|
15
|
+
# @option params [String, Integer] :user_id ID of the user
|
10
16
|
# @return [Croudia::User]
|
11
17
|
def user(user, params={})
|
12
18
|
merge_user!(params, user)
|
@@ -16,8 +22,14 @@ module Croudia
|
|
16
22
|
|
17
23
|
# Lookup Users
|
18
24
|
#
|
19
|
-
# @
|
20
|
-
# @
|
25
|
+
# @see https://developer.croudia.com/docs/32_users_lookup
|
26
|
+
# @overload users(*users, params={})
|
27
|
+
# @param [String, Integer, Croudia::User] users
|
28
|
+
# @param [Hash] params Additional query parameters
|
29
|
+
# @overload users(params={})
|
30
|
+
# @param [Hash] params Query parameters
|
31
|
+
# @option params [String] :screen_name Comma-separated screen names
|
32
|
+
# @option params [String] :user_id Comma-separated user IDs
|
21
33
|
# @return [Array<Croudia::User>]
|
22
34
|
def users(*args)
|
23
35
|
merge_users!(params = {}, args)
|
data/lib/croudia/base.rb
CHANGED
@@ -1,71 +1,71 @@
|
|
1
|
-
module Croudia
|
2
|
-
class Base
|
3
|
-
class << self
|
4
|
-
def attr_reader(*attrs)
|
5
|
-
attrs.each do |attr|
|
6
|
-
define_method(attr) do
|
7
|
-
@attrs[attr.to_s] || @attrs[attr.to_sym]
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
# @param
|
13
|
-
def attr_object_reader(attrs)
|
14
|
-
attrs.each_pair do |path, klass|
|
15
|
-
path = [path] unless path.is_a?(Array)
|
16
|
-
attr = path.join('_').to_sym
|
17
|
-
|
18
|
-
define_method(path.last) do
|
19
|
-
object = instance_variable_get("@#{attr}")
|
20
|
-
|
21
|
-
unless object
|
22
|
-
object_attrs = @attrs
|
23
|
-
path.each { |p| object_attrs = object_attrs[p.to_s] }
|
24
|
-
|
25
|
-
object = if object_attrs.nil?
|
26
|
-
nil
|
27
|
-
elsif klass.is_a?(Array)
|
28
|
-
klass = klass.shift
|
29
|
-
object_attrs.map { |o| klass.new(o) }
|
30
|
-
else
|
31
|
-
klass.new(object_attrs)
|
32
|
-
end
|
33
|
-
|
34
|
-
instance_variable_set("@#{attr}", object)
|
35
|
-
end
|
36
|
-
|
37
|
-
object
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
# Initialize a new object
|
44
|
-
#
|
45
|
-
# @param
|
46
|
-
# @return [Croudia::Base]
|
47
|
-
def initialize(attrs = {})
|
48
|
-
@attrs = attrs
|
49
|
-
end
|
50
|
-
|
51
|
-
# Fetch an attribute
|
52
|
-
#
|
53
|
-
# @param
|
54
|
-
def [](name)
|
55
|
-
__send__(name.to_sym)
|
56
|
-
rescue NoMethodError
|
57
|
-
nil
|
58
|
-
end
|
59
|
-
|
60
|
-
# @return [Hash]
|
61
|
-
def attrs
|
62
|
-
@attrs
|
63
|
-
end
|
64
|
-
alias to_h attrs
|
65
|
-
alias to_hash attrs
|
66
|
-
|
67
|
-
def inspect
|
68
|
-
"#<#{self.class}:0x#{__id__.abs.to_s(16)} #{@attrs.inspect}>"
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
1
|
+
module Croudia
|
2
|
+
class Base
|
3
|
+
class << self
|
4
|
+
def attr_reader(*attrs)
|
5
|
+
attrs.each do |attr|
|
6
|
+
define_method(attr) do
|
7
|
+
@attrs[attr.to_s] || @attrs[attr.to_sym]
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
# @param [Hash] attrs { name: Class, name: Class, ... }
|
13
|
+
def attr_object_reader(attrs)
|
14
|
+
attrs.each_pair do |path, klass|
|
15
|
+
path = [path] unless path.is_a?(Array)
|
16
|
+
attr = path.join('_').to_sym
|
17
|
+
|
18
|
+
define_method(path.last) do
|
19
|
+
object = instance_variable_get("@#{attr}")
|
20
|
+
|
21
|
+
unless object
|
22
|
+
object_attrs = @attrs
|
23
|
+
path.each { |p| object_attrs = object_attrs[p.to_s] }
|
24
|
+
|
25
|
+
object = if object_attrs.nil?
|
26
|
+
nil
|
27
|
+
elsif klass.is_a?(Array)
|
28
|
+
klass = klass.shift
|
29
|
+
object_attrs.map { |o| klass.new(o) }
|
30
|
+
else
|
31
|
+
klass.new(object_attrs)
|
32
|
+
end
|
33
|
+
|
34
|
+
instance_variable_set("@#{attr}", object)
|
35
|
+
end
|
36
|
+
|
37
|
+
object
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# Initialize a new object
|
44
|
+
#
|
45
|
+
# @param [Hash] attrs
|
46
|
+
# @return [Croudia::Base]
|
47
|
+
def initialize(attrs = {})
|
48
|
+
@attrs = attrs
|
49
|
+
end
|
50
|
+
|
51
|
+
# Fetch an attribute
|
52
|
+
#
|
53
|
+
# @param [String, Symobol] name
|
54
|
+
def [](name)
|
55
|
+
__send__(name.to_sym)
|
56
|
+
rescue NoMethodError
|
57
|
+
nil
|
58
|
+
end
|
59
|
+
|
60
|
+
# @return [Hash]
|
61
|
+
def attrs
|
62
|
+
@attrs
|
63
|
+
end
|
64
|
+
alias to_h attrs
|
65
|
+
alias to_hash attrs
|
66
|
+
|
67
|
+
def inspect
|
68
|
+
"#<#{self.class}:0x#{__id__.abs.to_s(16)} #{@attrs.inspect}>"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/lib/croudia/client.rb
CHANGED
@@ -6,10 +6,10 @@ require 'croudia/api/search'
|
|
6
6
|
require 'croudia/api/secret_mails'
|
7
7
|
require 'croudia/api/statuses'
|
8
8
|
require 'croudia/api/timelines'
|
9
|
+
require 'croudia/api/trends'
|
9
10
|
require 'croudia/api/users'
|
10
11
|
require 'croudia/api/utils'
|
11
12
|
require 'croudia/configurable'
|
12
|
-
require 'croudia/ext/openssl'
|
13
13
|
require 'croudia/version'
|
14
14
|
require 'faraday'
|
15
15
|
|
@@ -23,14 +23,14 @@ module Croudia
|
|
23
23
|
include Croudia::API::SecretMails
|
24
24
|
include Croudia::API::Statuses
|
25
25
|
include Croudia::API::Timelines
|
26
|
+
include Croudia::API::Trends
|
26
27
|
include Croudia::API::Users
|
27
28
|
include Croudia::API::Utils
|
28
29
|
include Croudia::Configurable
|
29
30
|
|
30
31
|
# Initialize a new Client object
|
31
32
|
#
|
32
|
-
# @param
|
33
|
-
# @return [Croudia::Client]
|
33
|
+
# @param [Hash] options
|
34
34
|
def initialize(options={})
|
35
35
|
Croudia::Configurable.keys.each do |key|
|
36
36
|
instance_variable_set(:"@#{key}", options[key] || Croudia.instance_variable_get(:"@#{key}"))
|
@@ -59,6 +59,7 @@ module Croudia
|
|
59
59
|
|
60
60
|
private
|
61
61
|
|
62
|
+
# @return [String] Response body
|
62
63
|
def request(method, path, params={})
|
63
64
|
connection.send(method.to_sym, path, params) do |request|
|
64
65
|
request.headers[:authorization] = "Bearer #{@access_token}" if @access_token
|
data/lib/croudia/creatable.rb
CHANGED
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: 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
|
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
|