clayful 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,92 @@
1
+ require 'rest-client'
2
+ require 'json'
3
+ require_relative './exception'
4
+ require_relative './response'
5
+
6
+ module Clayful
7
+
8
+ class Requester
9
+
10
+ @@request = lambda do |request_options|
11
+
12
+ query = []
13
+
14
+ request_options.fetch('query', {}).each do |key, value|
15
+ query.push("#{key}=#{value}")
16
+ end
17
+
18
+ query = query.empty? ? '' : '?' + query.join('&')
19
+
20
+ options = {
21
+ method: request_options['http_method'].downcase.to_sym,
22
+ url: request_options['request_url'] + query,
23
+ headers: request_options['headers'].clone
24
+ }
25
+
26
+ if request_options['payload']
27
+
28
+ if request_options['uses_form_data']
29
+
30
+ options[:payload] = request_options['payload']
31
+ else
32
+ # Set JSON as a request body
33
+ options[:payload] = request_options['payload'].to_json
34
+ options[:headers]['Content-Type'] = 'application/json'
35
+ end
36
+
37
+ end
38
+
39
+ response = {}
40
+ data = nil
41
+
42
+ begin
43
+ # 2xx case
44
+ response = RestClient::Request.execute(options)
45
+
46
+ rescue RestClient::ExceptionWithResponse => e
47
+ # 4xx, 5xx case
48
+ response = e.response
49
+ end
50
+
51
+ begin
52
+
53
+ data = JSON.parse(response.body)
54
+
55
+ rescue JSON::ParserError
56
+
57
+ data = nil
58
+ end
59
+
60
+ if response.code >= 400
61
+
62
+ data = data ? data : {}
63
+
64
+ raise Clayful::Exception.new(
65
+ request_options.fetch('model_name', nil),
66
+ request_options.fetch('method_name', nil),
67
+ response.code,
68
+ response.headers,
69
+ data.fetch('errorCode', nil),
70
+ data.fetch('message', ''),
71
+ data.fetch('validation', nil)
72
+ )
73
+
74
+ else
75
+
76
+ return Clayful::Response.new(
77
+ response.code,
78
+ data,
79
+ response.headers
80
+ )
81
+
82
+ end
83
+
84
+ end
85
+
86
+ def Requester.request
87
+ @@request
88
+ end
89
+
90
+ end
91
+
92
+ end
@@ -0,0 +1,19 @@
1
+ module Clayful
2
+
3
+ class Response
4
+
5
+ attr_reader :status
6
+ attr_reader :data
7
+ attr_reader :headers
8
+
9
+ def initialize(status = nil, data = nil, headers = nil)
10
+
11
+ @status = status
12
+ @data = data
13
+ @headers = headers
14
+
15
+ end
16
+
17
+ end
18
+
19
+ end
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: clayful
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Daeik Kim
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-10-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rest-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: fakeweb
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ description: Ruby SDK for Clayful API
70
+ email:
71
+ - daeik.kim@clayful.io
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - Gemfile
77
+ - LICENSE
78
+ - README.md
79
+ - lib/clayful.rb
80
+ - lib/exception.rb
81
+ - lib/models/binder.rb
82
+ - lib/models/brand.rb
83
+ - lib/models/cart.rb
84
+ - lib/models/catalog.rb
85
+ - lib/models/collection.rb
86
+ - lib/models/country.rb
87
+ - lib/models/coupon.rb
88
+ - lib/models/currency.rb
89
+ - lib/models/customer.rb
90
+ - lib/models/discount.rb
91
+ - lib/models/downloadable.rb
92
+ - lib/models/group.rb
93
+ - lib/models/image.rb
94
+ - lib/models/impression.rb
95
+ - lib/models/order.rb
96
+ - lib/models/order_tag.rb
97
+ - lib/models/payment_method.rb
98
+ - lib/models/product.rb
99
+ - lib/models/review.rb
100
+ - lib/models/review_comment.rb
101
+ - lib/models/shipping_method.rb
102
+ - lib/models/store.rb
103
+ - lib/models/subscription.rb
104
+ - lib/models/subscription_plan.rb
105
+ - lib/models/tax_category.rb
106
+ - lib/models/tracker.rb
107
+ - lib/models/wish_list.rb
108
+ - lib/requester.rb
109
+ - lib/response.rb
110
+ homepage: https://github.com/Clayful/clayful-ruby
111
+ licenses:
112
+ - MIT
113
+ metadata: {}
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ requirements: []
129
+ rubyforge_project:
130
+ rubygems_version: 2.7.6
131
+ signing_key:
132
+ specification_version: 4
133
+ summary: Ruby SDK for Clayful API
134
+ test_files: []