delivery-sdk-ruby 1.0.4 → 1.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 59c57cb2cc1d228224b9951a2732716bb293b834b82bf866d12cafab02477e9d
4
- data.tar.gz: a46e51465948bcf93109ef78c022112d90faf19a420835aca1dd80e750b86473
3
+ metadata.gz: dca4c3262d547c5c78bc08b50bae3eac4c5648c47d504b7e84eb275898dcf15b
4
+ data.tar.gz: b69230e0daeab4020129b5468828cd335cda552c178a17789a421b44b810cafd
5
5
  SHA512:
6
- metadata.gz: 4652ca3d42dd905025d2c206a0d24b38c3ff45a9d330b309eb2fe19647b22e9153cae3f3f3abbe1f35f57457464842ea8676cc427dd9db5523bd4efa7c511a47
7
- data.tar.gz: 850a8489c97d6dc94e59867f5bb4fddff783e829852c3ad9a0615cdfffc2b735bb97aa2e5d70266b40da12a1b70d8bb0e473d80759d1349df6f41fbec2fc969e
6
+ metadata.gz: 6ebb05000adcca618e7380b85ebed9be8ed0cd5485381297a918adef67e79e60430f86f8b10615be4d570a574a9ba9b8ab35166946f65134757ccb2023265e50
7
+ data.tar.gz: 37c0838a7dc73f6465424422f936e79b7f72a63bd1c8756b54b3755b332682deca5d9018d311d50991e470ddca105a50eb7a238d4456b742978c1ded2f05d4ff
data/README.md CHANGED
@@ -6,6 +6,8 @@
6
6
 
7
7
  # Delivery Ruby SDK
8
8
 
9
+ ![Banner](https://github.com/Kentico/delivery-sdk-ruby/blob/master/banner.png)
10
+
9
11
  The Delivery Ruby SDK can be used in Ruby/Rails projects to retrieve content from Kentico Cloud. This is a community project and not an official Kentico SDK. If you find a bug in the SDK or have a feature request, please submit a GitHub issue.
10
12
 
11
13
  See [How to setup a development environment on Windows](https://github.com/Kentico/delivery-sdk-ruby/wiki/How-to-setup-development-environment-on-Windows) for local development.
@@ -71,6 +71,19 @@ module KenticoCloud
71
71
  resp
72
72
  end
73
73
 
74
+ # Determines whether the query should use preview mode.
75
+ #
76
+ # * *Returns*:
77
+ # - +boolean+ Whether preview mode should be used for the query
78
+ #
79
+ # * *Raises*:
80
+ # - +StandardError+ if +use_preview+ is true, but +preview_key+ is +nil+
81
+ def should_preview
82
+ raise ERROR_PREVIEW if use_preview && preview_key.nil?
83
+
84
+ use_preview && !preview_key.nil?
85
+ end
86
+
74
87
  # Sets a content link resolver to render links contained in rich text. See
75
88
  # https://github.com/Kentico/delivery-sdk-ruby#resolving-links
76
89
  #
@@ -226,19 +239,6 @@ module KenticoCloud
226
239
  end
227
240
  end
228
241
 
229
- # Determines whether the query should use preview mode.
230
- #
231
- # * *Returns*:
232
- # - +boolean+ Whether preview mode should be used for the query
233
- #
234
- # * *Raises*:
235
- # - +StandardError+ if +use_preview+ is true, but +preview_key+ is +nil+
236
- def should_preview
237
- raise ERROR_PREVIEW if use_preview && preview_key.nil?
238
-
239
- use_preview && !preview_key.nil?
240
- end
241
-
242
242
  def provide_sdk_header
243
243
  "rubygems.org;delivery-sdk-ruby;#{KenticoCloud::Delivery::VERSION}"
244
244
  end
@@ -1,4 +1,5 @@
1
1
  require 'rest-client'
2
+ require 'dotenv/load'
2
3
 
3
4
  module KenticoCloud
4
5
  module Delivery
@@ -31,15 +32,24 @@ module KenticoCloud
31
32
  end
32
33
 
33
34
  def continue
34
- resp = RestClient.get @url, @headers
35
- rescue RestClient::ExceptionWithResponse => err
36
- should_retry KenticoCloud::Delivery::Responses::ResponseBase.new err.http_code, err.response
37
- rescue RestClient::SSLCertificateNotVerified => err
38
- should_retry KenticoCloud::Delivery::Responses::ResponseBase.new 500, err
39
- rescue SocketError => err
40
- should_retry KenticoCloud::Delivery::Responses::ResponseBase.new 500, err.message
41
- else
42
- make_response resp
35
+ if ENV['TEST'] == '1'
36
+ resp = KenticoCloud::Delivery::Tests::FakeResponder.get_response @query, @url, @headers
37
+ return resp if resp.is_a? KenticoCloud::Delivery::Responses::ResponseBase
38
+
39
+ make_response resp # resp is pure JSON
40
+ else
41
+ begin
42
+ resp = RestClient.get @url, @headers
43
+ rescue RestClient::ExceptionWithResponse => err
44
+ should_retry KenticoCloud::Delivery::Responses::ResponseBase.new err.http_code, err.response
45
+ rescue RestClient::SSLCertificateNotVerified => err
46
+ should_retry KenticoCloud::Delivery::Responses::ResponseBase.new 500, err
47
+ rescue SocketError => err
48
+ should_retry KenticoCloud::Delivery::Responses::ResponseBase.new 500, err.message
49
+ else
50
+ make_response resp
51
+ end
52
+ end
43
53
  end
44
54
 
45
55
  # Converts a standard REST response based on the type of query.
@@ -0,0 +1,6 @@
1
+ {
2
+ "message": "Missing or invalid access token. Please include the valid access token value in the Authorization header field as an HTTP bearer authorization scheme.",
3
+ "request_id": "|89bb1503b14c254a91bd57c135329822.d31c99c5_",
4
+ "error_code": 3,
5
+ "specific_code": 0
6
+ }
@@ -0,0 +1,65 @@
1
+ require 'dotenv/load'
2
+ require 'pathname'
3
+ require 'cgi'
4
+
5
+ module KenticoCloud
6
+ module Delivery
7
+ module Tests
8
+ class FakeResponder
9
+ PROJECT_ID = ENV['PROJECT_ID']
10
+ IS_SECURE = ENV['TEST_SECURE_API_ENABLED']
11
+ SECURE_KEY = ENV['SECURE_KEY']
12
+ PREVIEW_KEY = ENV['PREVIEW_KEY']
13
+ BASE_URL = "https://deliver.kenticocloud.com/#{PROJECT_ID}".freeze
14
+ PREVIEW_URL = "https://preview-deliver.kenticocloud.com/#{PROJECT_ID}".freeze
15
+
16
+ class << self
17
+ def get_response(query, url, headers)
18
+ @query = query
19
+ if IS_SECURE && !(
20
+ headers['Authorization'] == "Bearer #{SECURE_KEY}" ||
21
+ headers['Authorization'] == "Bearer #{PREVIEW_KEY}"
22
+ )
23
+ return respond_401
24
+ end
25
+
26
+ url =
27
+ if @query.should_preview
28
+ url[PREVIEW_URL.length...url.length]
29
+ else
30
+ url[BASE_URL.length...url.length]
31
+ end
32
+
33
+ qs = url.contains('?') ? url.split('?')[1] : nil
34
+ return respond_filtering qs unless qs.nil? # e.g. /items/about_us?skip=0&limit=5
35
+
36
+ respond_generic url # Didn't match other clauses, so response should be located in corresponding filepath
37
+ end
38
+
39
+ def respond_generic(url)
40
+ path = Pathname.new(File.dirname(__FILE__) + "/generic#{url}.json")
41
+ path.read if path.exist?
42
+ end
43
+
44
+ def respond_filtering(query)
45
+ path =
46
+ case CGI.unescape query
47
+ when 'skip=0&limit=5'
48
+ Pathname.new(File.dirname(__FILE__) + '/filtering/pagination_about_us.json')
49
+ when 'elements.price[gt]=20'
50
+ Pathname.new(File.dirname(__FILE__) + '/filtering/items_gt.json')
51
+ when 'elements.price[gt]=20&system.type=grinder'
52
+ Pathname.new(File.dirname(__FILE__) + '/filtering/multiple.json')
53
+ end
54
+ path.read unless path.nil? && !path.exist?
55
+ end
56
+
57
+ def respond_401
58
+ path = Pathname.new(File.dirname(__FILE__) + '/401.json')
59
+ KenticoCloud::Delivery::Responses::ResponseBase.new 401, '', path.read if path.exist?
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end