mercadolibre 0.14.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/lib/mercadolibre.rb +4 -80
  4. data/lib/mercadolibre/api.rb +56 -20
  5. data/lib/mercadolibre/core/auth.rb +8 -12
  6. data/lib/mercadolibre/core/categories_and_listings.rb +8 -24
  7. data/lib/mercadolibre/core/collections.rb +10 -0
  8. data/lib/mercadolibre/core/items_and_searches.rb +25 -60
  9. data/lib/mercadolibre/core/locations_and_currencies.rb +8 -29
  10. data/lib/mercadolibre/core/order_management.rb +77 -47
  11. data/lib/mercadolibre/core/questions.rb +10 -27
  12. data/lib/mercadolibre/core/shippings.rb +2 -4
  13. data/lib/mercadolibre/core/users.rb +5 -13
  14. data/lib/mercadolibre/version.rb +1 -1
  15. data/lib/mercadopago/api.rb +55 -20
  16. data/lib/mercadopago/core/auth.rb +12 -18
  17. data/lib/mercadopago/core/payments.rb +3 -12
  18. metadata +3 -77
  19. data/lib/mercadolibre/entity/address.rb +0 -40
  20. data/lib/mercadolibre/entity/address_agency.rb +0 -21
  21. data/lib/mercadolibre/entity/answer.rb +0 -25
  22. data/lib/mercadolibre/entity/atm_transfer_reference.rb +0 -21
  23. data/lib/mercadolibre/entity/auth.rb +0 -21
  24. data/lib/mercadolibre/entity/billing_info.rb +0 -21
  25. data/lib/mercadolibre/entity/card_configuration.rb +0 -23
  26. data/lib/mercadolibre/entity/card_issuer.rb +0 -21
  27. data/lib/mercadolibre/entity/category.rb +0 -28
  28. data/lib/mercadolibre/entity/category_settings.rb +0 -26
  29. data/lib/mercadolibre/entity/city.rb +0 -27
  30. data/lib/mercadolibre/entity/collector.rb +0 -21
  31. data/lib/mercadolibre/entity/cost_components.rb +0 -21
  32. data/lib/mercadolibre/entity/country.rb +0 -26
  33. data/lib/mercadolibre/entity/currency.rb +0 -21
  34. data/lib/mercadolibre/entity/currency_conversion_ratio.rb +0 -21
  35. data/lib/mercadolibre/entity/featured_item.rb +0 -28
  36. data/lib/mercadolibre/entity/feedback.rb +0 -35
  37. data/lib/mercadolibre/entity/feedback_reply.rb +0 -25
  38. data/lib/mercadolibre/entity/geolocation.rb +0 -21
  39. data/lib/mercadolibre/entity/gtin.rb +0 -21
  40. data/lib/mercadolibre/entity/item.rb +0 -55
  41. data/lib/mercadolibre/entity/item_attribute.rb +0 -21
  42. data/lib/mercadolibre/entity/item_description.rb +0 -27
  43. data/lib/mercadolibre/entity/item_payment_method.rb +0 -21
  44. data/lib/mercadolibre/entity/item_picture.rb +0 -21
  45. data/lib/mercadolibre/entity/item_shipping.rb +0 -22
  46. data/lib/mercadolibre/entity/listing_exposure.rb +0 -21
  47. data/lib/mercadolibre/entity/listing_price.rb +0 -26
  48. data/lib/mercadolibre/entity/listing_type.rb +0 -21
  49. data/lib/mercadolibre/entity/mediation.rb +0 -25
  50. data/lib/mercadolibre/entity/mediation_interaction.rb +0 -21
  51. data/lib/mercadolibre/entity/municipality.rb +0 -21
  52. data/lib/mercadolibre/entity/neighborhood.rb +0 -21
  53. data/lib/mercadolibre/entity/order.rb +0 -44
  54. data/lib/mercadolibre/entity/order_coupon.rb +0 -21
  55. data/lib/mercadolibre/entity/order_feedback.rb +0 -25
  56. data/lib/mercadolibre/entity/order_item.rb +0 -25
  57. data/lib/mercadolibre/entity/order_note.rb +0 -25
  58. data/lib/mercadolibre/entity/order_shipping.rb +0 -33
  59. data/lib/mercadolibre/entity/payment.rb +0 -35
  60. data/lib/mercadolibre/entity/payment_method.rb +0 -33
  61. data/lib/mercadolibre/entity/payment_plan.rb +0 -21
  62. data/lib/mercadolibre/entity/payment_promotion.rb +0 -28
  63. data/lib/mercadolibre/entity/phone.rb +0 -21
  64. data/lib/mercadolibre/entity/product_identifier.rb +0 -25
  65. data/lib/mercadolibre/entity/question.rb +0 -30
  66. data/lib/mercadolibre/entity/search_location.rb +0 -27
  67. data/lib/mercadolibre/entity/shipment.rb +0 -41
  68. data/lib/mercadolibre/entity/shipment_status_history.rb +0 -24
  69. data/lib/mercadolibre/entity/shipping_delivery.rb +0 -25
  70. data/lib/mercadolibre/entity/shipping_item.rb +0 -21
  71. data/lib/mercadolibre/entity/shipping_option.rb +0 -28
  72. data/lib/mercadolibre/entity/shipping_speed.rb +0 -21
  73. data/lib/mercadolibre/entity/site.rb +0 -28
  74. data/lib/mercadolibre/entity/site_domain.rb +0 -21
  75. data/lib/mercadolibre/entity/site_trend.rb +0 -21
  76. data/lib/mercadolibre/entity/state.rb +0 -27
  77. data/lib/mercadolibre/entity/user.rb +0 -34
  78. data/lib/mercadolibre/entity/zip_code.rb +0 -29
  79. data/lib/mercadopago/entity/additional_info.rb +0 -27
  80. data/lib/mercadopago/entity/address.rb +0 -21
  81. data/lib/mercadopago/entity/auth.rb +0 -21
  82. data/lib/mercadopago/entity/collector.rb +0 -29
  83. data/lib/mercadopago/entity/fee_detail.rb +0 -21
  84. data/lib/mercadopago/entity/identification.rb +0 -21
  85. data/lib/mercadopago/entity/money_request.rb +0 -32
  86. data/lib/mercadopago/entity/order.rb +0 -21
  87. data/lib/mercadopago/entity/payer.rb +0 -27
  88. data/lib/mercadopago/entity/payment.rb +0 -83
  89. data/lib/mercadopago/entity/phone.rb +0 -21
  90. data/lib/mercadopago/entity/refund.rb +0 -25
  91. data/lib/mercadopago/entity/shipments.rb +0 -21
  92. data/lib/mercadopago/entity/source.rb +0 -21
  93. data/lib/mercadopago/entity/transaction_details.rb +0 -28
@@ -1,3 +1,3 @@
1
1
  module Mercadolibre
2
- VERSION = "0.14.1"
2
+ VERSION = '1.0.0'
3
3
  end
@@ -9,70 +9,105 @@ module Mercadopago
9
9
  @access_token = args[:access_token]
10
10
  @endpoint_url = 'https://api.mercadopago.com'
11
11
  @auth_url = 'https://auth.mercadopago.com.ar'
12
- @debug = args[:debug]
13
12
  end
14
13
 
15
14
  include Mercadopago::Core::Auth
16
15
  include Mercadopago::Core::Payments
17
16
 
17
+ def get_last_response
18
+ @last_response
19
+ end
20
+
18
21
  private
19
22
 
20
23
  def get_request(action, params={}, headers={})
21
24
  begin
22
- parse_response(RestClient.get("#{@endpoint_url}#{action}", {params: params}.merge(headers)))
25
+ api_response_kind = params.delete('api_response_kind')
26
+ api_response_kind = params.delete(:api_response_kind) if api_response_kind.nil?
27
+ api_response_kind = 'object' if api_response_kind.nil?
28
+
29
+ parse_response(api_response_kind, RestClient.get("#{@endpoint_url}#{action}", {params: params}.merge(headers)))
23
30
  rescue => e
24
- parse_response(e.response)
31
+ parse_response('object', e.response)
25
32
  end
26
33
  end
27
34
 
28
35
  def post_request(action, params={}, headers={})
29
36
  begin
30
- parse_response(RestClient.post("#{@endpoint_url}#{action}", params, headers))
37
+ api_response_kind = params.delete('api_response_kind')
38
+ api_response_kind = params.delete(:api_response_kind) if api_response_kind.nil?
39
+ api_response_kind = 'object' if api_response_kind.nil?
40
+
41
+ parse_response(api_response_kind, RestClient.post("#{@endpoint_url}#{action}", params, headers))
31
42
  rescue => e
32
- parse_response(e.response)
43
+ parse_response('object', e.response)
33
44
  end
34
45
  end
35
46
 
36
47
  def put_request(action, params={}, headers={})
37
48
  begin
38
- parse_response(RestClient.put("#{@endpoint_url}#{action}", params, headers))
49
+ api_response_kind = params.delete('api_response_kind')
50
+ api_response_kind = params.delete(:api_response_kind) if api_response_kind.nil?
51
+ api_response_kind = 'object' if api_response_kind.nil?
52
+
53
+ parse_response(api_response_kind, RestClient.put("#{@endpoint_url}#{action}", params, headers))
39
54
  rescue => e
40
- parse_response(e.response)
55
+ parse_response('object', e.response)
41
56
  end
42
57
  end
43
58
 
44
59
  def patch_request(action, params={}, headers={})
45
60
  begin
46
- parse_response(RestClient.patch("#{@endpoint_url}#{action}", params, headers))
61
+ api_response_kind = params.delete('api_response_kind')
62
+ api_response_kind = params.delete(:api_response_kind) if api_response_kind.nil?
63
+ api_response_kind = 'object' if api_response_kind.nil?
64
+
65
+ parse_response(api_response_kind, RestClient.patch("#{@endpoint_url}#{action}", params, headers))
47
66
  rescue => e
48
- parse_response(e.response)
67
+ parse_response('object', e.response)
49
68
  end
50
69
  end
51
70
 
52
71
  def head_request(action, params={})
53
72
  begin
54
- parse_response(RestClient.head("#{@endpoint_url}#{action}", params))
73
+ api_response_kind = params.delete('api_response_kind')
74
+ api_response_kind = params.delete(:api_response_kind) if api_response_kind.nil?
75
+ api_response_kind = 'object' if api_response_kind.nil?
76
+
77
+ parse_response(api_response_kind, RestClient.head("#{@endpoint_url}#{action}", params))
55
78
  rescue => e
56
- parse_response(e.response)
79
+ parse_response('object', e.response)
57
80
  end
58
81
  end
59
82
 
60
83
  def delete_request(action, params={})
61
84
  begin
62
- parse_response(RestClient.delete("#{@endpoint_url}#{action}", params))
85
+ api_response_kind = params.delete('api_response_kind')
86
+ api_response_kind = params.delete(:api_response_kind) if api_response_kind.nil?
87
+ api_response_kind = 'object' if api_response_kind.nil?
88
+
89
+ parse_response(api_response_kind, RestClient.delete("#{@endpoint_url}#{action}", params))
63
90
  rescue => e
64
- parse_response(e.response)
91
+ parse_response('object', e.response)
65
92
  end
66
93
  end
67
94
 
68
- def parse_response(response)
69
- result = {
70
- headers: response.headers,
71
- body: (JSON.parse(response.body) rescue response.body),
72
- status_code: response.code
73
- }
95
+ def parse_response(api_response_kind, response)
96
+ @last_response = response
74
97
 
75
- p "DEBUG: #{result}" if @debug
98
+ result = OpenStruct.new
99
+ result.status_code = response.code
100
+
101
+ if api_response_kind == 'object'
102
+ result.headers = (JSON.parse(response.headers.to_json, object_class: OpenStruct) rescue response.headers)
103
+ result.body = (JSON.parse(response.body, object_class: OpenStruct) rescue response.body)
104
+ elsif api_response_kind == 'hash'
105
+ result.headers = response.headers
106
+ result.body = (JSON.parse(response.body) rescue response.body)
107
+ else
108
+ result.headers = response.headers
109
+ result.body = response.body
110
+ end
76
111
 
77
112
  result
78
113
  end
@@ -18,13 +18,11 @@ module Mercadopago
18
18
  client_secret: @app_secret,
19
19
  code: auth_code,
20
20
  redirect_uri: @callback_url
21
- })[:body]
21
+ })
22
22
 
23
- @access_token = response['access_token']
24
-
25
- Mercadopago::Entity::Auth.new(response.merge({
26
- expired_at: (Time.now + response['expires_in'].to_i)
27
- }))
23
+ @access_token = response.body.access_token
24
+ response.body.expiration_time = (Time.now + response.body.expires_in.to_i)
25
+ response.body
28
26
  end
29
27
 
30
28
  def update_token(refresh_token)
@@ -33,13 +31,11 @@ module Mercadopago
33
31
  client_id: @app_key,
34
32
  client_secret: @app_secret,
35
33
  refresh_token: refresh_token
36
- })[:body]
37
-
38
- @access_token = response['access_token']
34
+ })
39
35
 
40
- Mercadopago::Entity::Auth.new(response.merge({
41
- expired_at: (Time.now + response['expires_in'].to_i)
42
- }))
36
+ @access_token = response.body.access_token
37
+ response.body.expiration_time = (Time.now + response.body.expires_in.to_i)
38
+ response.body
43
39
  end
44
40
 
45
41
  def create_token
@@ -52,13 +48,11 @@ module Mercadopago
52
48
  grant_type: 'client_credentials',
53
49
  client_id: @app_key,
54
50
  client_secret: @app_secret
55
- }, headers)[:body]
56
-
57
- @access_token = response['access_token']
51
+ }, headers)
58
52
 
59
- Mercadopago::Entity::Auth.new(response.merge({
60
- expired_at: (Time.now + response['expires_in'].to_i)
61
- }))
53
+ @access_token = response.body.access_token
54
+ response.body.expiration_time = (Time.now + response.body.expires_in.to_i)
55
+ response.body
62
56
  end
63
57
  end
64
58
  end
@@ -3,20 +3,13 @@ module Mercadopago
3
3
  module Payments
4
4
  def get_payment(payment_id)
5
5
  filters = { access_token: @access_token }
6
- r = get_request("/v1/payments/#{payment_id}", filters)
7
-
8
- Mercadopago::Entity::Payment.new(r[:body])
6
+ get_request("/v1/payments/#{payment_id}", filters).body
9
7
  end
10
8
 
11
9
  def search_payments(filters={})
12
10
  filters.merge!({ access_token: @access_token })
13
11
 
14
- response = get_request('/v1/payments/search', filters)[:body]
15
-
16
- {
17
- results: response['results'].map { |r| Mercadopago::Entity::Payment.new(r) },
18
- paging: response['paging']
19
- }
12
+ get_request('/v1/payments/search', filters).body
20
13
  end
21
14
 
22
15
  def request_payment(attrs={})
@@ -24,9 +17,7 @@ module Mercadopago
24
17
 
25
18
  headers = { content_type: :json }
26
19
 
27
- result = post_request("/money_requests?access_token=#{@access_token}", payload, headers)
28
-
29
- Mercadopago::Entity::MoneyRequest.new(result[:body])
20
+ post_request("/money_requests?access_token=#{@access_token}", payload, headers).body
30
21
  end
31
22
  end
32
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mercadolibre
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matias Hick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-01 00:00:00.000000000 Z
11
+ date: 2016-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,91 +66,17 @@ files:
66
66
  - lib/mercadolibre/api.rb
67
67
  - lib/mercadolibre/core/auth.rb
68
68
  - lib/mercadolibre/core/categories_and_listings.rb
69
+ - lib/mercadolibre/core/collections.rb
69
70
  - lib/mercadolibre/core/items_and_searches.rb
70
71
  - lib/mercadolibre/core/locations_and_currencies.rb
71
72
  - lib/mercadolibre/core/order_management.rb
72
73
  - lib/mercadolibre/core/questions.rb
73
74
  - lib/mercadolibre/core/shippings.rb
74
75
  - lib/mercadolibre/core/users.rb
75
- - lib/mercadolibre/entity/address.rb
76
- - lib/mercadolibre/entity/address_agency.rb
77
- - lib/mercadolibre/entity/answer.rb
78
- - lib/mercadolibre/entity/atm_transfer_reference.rb
79
- - lib/mercadolibre/entity/auth.rb
80
- - lib/mercadolibre/entity/billing_info.rb
81
- - lib/mercadolibre/entity/card_configuration.rb
82
- - lib/mercadolibre/entity/card_issuer.rb
83
- - lib/mercadolibre/entity/category.rb
84
- - lib/mercadolibre/entity/category_settings.rb
85
- - lib/mercadolibre/entity/city.rb
86
- - lib/mercadolibre/entity/collector.rb
87
- - lib/mercadolibre/entity/cost_components.rb
88
- - lib/mercadolibre/entity/country.rb
89
- - lib/mercadolibre/entity/currency.rb
90
- - lib/mercadolibre/entity/currency_conversion_ratio.rb
91
- - lib/mercadolibre/entity/featured_item.rb
92
- - lib/mercadolibre/entity/feedback.rb
93
- - lib/mercadolibre/entity/feedback_reply.rb
94
- - lib/mercadolibre/entity/geolocation.rb
95
- - lib/mercadolibre/entity/gtin.rb
96
- - lib/mercadolibre/entity/item.rb
97
- - lib/mercadolibre/entity/item_attribute.rb
98
- - lib/mercadolibre/entity/item_description.rb
99
- - lib/mercadolibre/entity/item_payment_method.rb
100
- - lib/mercadolibre/entity/item_picture.rb
101
- - lib/mercadolibre/entity/item_shipping.rb
102
- - lib/mercadolibre/entity/listing_exposure.rb
103
- - lib/mercadolibre/entity/listing_price.rb
104
- - lib/mercadolibre/entity/listing_type.rb
105
- - lib/mercadolibre/entity/mediation.rb
106
- - lib/mercadolibre/entity/mediation_interaction.rb
107
- - lib/mercadolibre/entity/municipality.rb
108
- - lib/mercadolibre/entity/neighborhood.rb
109
- - lib/mercadolibre/entity/order.rb
110
- - lib/mercadolibre/entity/order_coupon.rb
111
- - lib/mercadolibre/entity/order_feedback.rb
112
- - lib/mercadolibre/entity/order_item.rb
113
- - lib/mercadolibre/entity/order_note.rb
114
- - lib/mercadolibre/entity/order_shipping.rb
115
- - lib/mercadolibre/entity/payment.rb
116
- - lib/mercadolibre/entity/payment_method.rb
117
- - lib/mercadolibre/entity/payment_plan.rb
118
- - lib/mercadolibre/entity/payment_promotion.rb
119
- - lib/mercadolibre/entity/phone.rb
120
- - lib/mercadolibre/entity/product_identifier.rb
121
- - lib/mercadolibre/entity/question.rb
122
- - lib/mercadolibre/entity/search_location.rb
123
- - lib/mercadolibre/entity/shipment.rb
124
- - lib/mercadolibre/entity/shipment_status_history.rb
125
- - lib/mercadolibre/entity/shipping_delivery.rb
126
- - lib/mercadolibre/entity/shipping_item.rb
127
- - lib/mercadolibre/entity/shipping_option.rb
128
- - lib/mercadolibre/entity/shipping_speed.rb
129
- - lib/mercadolibre/entity/site.rb
130
- - lib/mercadolibre/entity/site_domain.rb
131
- - lib/mercadolibre/entity/site_trend.rb
132
- - lib/mercadolibre/entity/state.rb
133
- - lib/mercadolibre/entity/user.rb
134
- - lib/mercadolibre/entity/zip_code.rb
135
76
  - lib/mercadolibre/version.rb
136
77
  - lib/mercadopago/api.rb
137
78
  - lib/mercadopago/core/auth.rb
138
79
  - lib/mercadopago/core/payments.rb
139
- - lib/mercadopago/entity/additional_info.rb
140
- - lib/mercadopago/entity/address.rb
141
- - lib/mercadopago/entity/auth.rb
142
- - lib/mercadopago/entity/collector.rb
143
- - lib/mercadopago/entity/fee_detail.rb
144
- - lib/mercadopago/entity/identification.rb
145
- - lib/mercadopago/entity/money_request.rb
146
- - lib/mercadopago/entity/order.rb
147
- - lib/mercadopago/entity/payer.rb
148
- - lib/mercadopago/entity/payment.rb
149
- - lib/mercadopago/entity/phone.rb
150
- - lib/mercadopago/entity/refund.rb
151
- - lib/mercadopago/entity/shipments.rb
152
- - lib/mercadopago/entity/source.rb
153
- - lib/mercadopago/entity/transaction_details.rb
154
80
  homepage: https://github.com/unformattmh/mercadolibre
155
81
  licenses:
156
82
  - MIT
@@ -1,40 +0,0 @@
1
- module Mercadolibre
2
- module Entity
3
- class Address
4
- def self.attr_list
5
- [:country, :state, :city, :neighborhood, :municipality, :types, :street_name,
6
- :address_line, :id, :zip_code, :longitude, :street_number, :latitude, :comment,
7
- :latitude, :longitude, :geolocation_type, :agency, :is_valid_for_carrier,
8
- :search_location]
9
- end
10
-
11
- attr_reader *attr_list
12
-
13
- def initialize(attributes={})
14
- attributes.each do |k, v|
15
- if k.to_s == 'state'
16
- self.state = State.new(v) unless v.nil?
17
- elsif k.to_s == 'city'
18
- self.city = City.new(v) unless v.nil?
19
- elsif k.to_s == 'country'
20
- self.country = Country.new(v) unless v.nil?
21
- elsif k.to_s == 'neighborhood'
22
- self.neighborhood = Neighborhood.new(v) unless v.nil?
23
- elsif k.to_s == 'municipality'
24
- self.municipality = Municipality.new(v) unless v.nil?
25
- elsif k.to_s == 'agency'
26
- self.agency = AddressAgency.new(v) unless v.nil?
27
- elsif k.to_s == 'search_location'
28
- self.search_location = SearchLocation.new(v) unless v.nil?
29
- else
30
- self.send("#{k}=", v) if self.respond_to?(k)
31
- end
32
- end
33
- end
34
-
35
- private
36
-
37
- attr_writer *attr_list
38
- end
39
- end
40
- end
@@ -1,21 +0,0 @@
1
- module Mercadolibre
2
- module Entity
3
- class AddressAgency
4
- def self.attr_list
5
- [:carrier_id, :agency_id, :description, :phone, :open_hours]
6
- end
7
-
8
- attr_reader *attr_list
9
-
10
- def initialize(attributes={})
11
- attributes.each do |k, v|
12
- self.send("#{k}=", v) if self.respond_to?(k)
13
- end
14
- end
15
-
16
- private
17
-
18
- attr_writer *attr_list
19
- end
20
- end
21
- end
@@ -1,25 +0,0 @@
1
- module Mercadolibre
2
- module Entity
3
- class Answer
4
- def self.attr_list
5
- [:text, :status, :date_created]
6
- end
7
-
8
- attr_reader *attr_list
9
-
10
- def initialize(attributes={})
11
- attributes.each do |k, v|
12
- if k.to_s == 'date_created'
13
- self.date_created = Time.parse(v) unless v.nil?
14
- else
15
- self.send("#{k}=", v) if self.respond_to?(k)
16
- end
17
- end
18
- end
19
-
20
- private
21
-
22
- attr_writer *attr_list
23
- end
24
- end
25
- end
@@ -1,21 +0,0 @@
1
- module Mercadolibre
2
- module Entity
3
- class AtmTransferReference
4
- def self.attr_list
5
- [:company_id, :transaction_id]
6
- end
7
-
8
- attr_reader *attr_list
9
-
10
- def initialize(attributes={})
11
- attributes.each do |k, v|
12
- self.send("#{k}=", v) if self.respond_to?(k)
13
- end
14
- end
15
-
16
- private
17
-
18
- attr_writer *attr_list
19
- end
20
- end
21
- end
@@ -1,21 +0,0 @@
1
- module Mercadolibre
2
- module Entity
3
- class Auth
4
- def self.attr_list
5
- [:access_token, :refresh_token, :live_mode, :user_id, :token_type, :scope, :expires_in, :expired_at]
6
- end
7
-
8
- attr_reader *attr_list
9
-
10
- def initialize(attributes={})
11
- attributes.each do |k, v|
12
- self.send("#{k}=", v) if self.respond_to?(k)
13
- end
14
- end
15
-
16
- private
17
-
18
- attr_writer *attr_list
19
- end
20
- end
21
- end