infopark_cloud_connector 6.9.5 → 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/controllers/rails_connector/default_cms_controller.rb +0 -1
- data/app/controllers/rails_connector/objs_controller.rb +31 -27
- data/app/helpers/rails_connector/cms_tag_helper.rb +20 -12
- data/app/views/rails_connector/objs/show_widget.html.erb +1 -0
- data/config/ca-bundle.crt +1 -1
- data/config/locales/de.rails_connector.views.yml +0 -3
- data/config/locales/en.rails_connector.views.yml +0 -3
- data/config/routes.rb +2 -1
- data/lib/assets/fonts/infopark_icons-webfont.eot +0 -0
- data/lib/assets/fonts/infopark_icons-webfont.ttf +0 -0
- data/lib/assets/fonts/infopark_icons-webfont.woff +0 -0
- data/lib/assets/javascripts/infopark_editing.js +84 -35
- data/lib/assets/stylesheets/infopark_editing.css +227 -33
- data/lib/generators/cms/migration/migration_generator.rb +1 -1
- data/lib/generators/cms/migration/templates/{migration.rb → migration.erb} +0 -0
- data/lib/rails_connector/attribute_content.rb +39 -40
- data/lib/rails_connector/basic_obj.rb +64 -56
- data/lib/rails_connector/basic_widget.rb +2 -0
- data/lib/rails_connector/cms_accessible.rb +0 -17
- data/lib/rails_connector/cms_backend.rb +2 -2
- data/lib/rails_connector/cms_env.rb +0 -5
- data/lib/rails_connector/cms_rest_api.rb +62 -30
- data/lib/rails_connector/configuration.rb +3 -3
- data/lib/rails_connector/connection_manager.rb +98 -0
- data/lib/rails_connector/content_service.rb +12 -94
- data/lib/rails_connector/content_state_caching.rb +3 -5
- data/lib/rails_connector/deprecation.rb +21 -0
- data/lib/rails_connector/link.rb +12 -22
- data/lib/rails_connector/migrations/cms_backend.rb +1 -1
- data/lib/rails_connector/migrations/migration.rb +1 -1
- data/lib/rails_connector/migrations/migration_dsl.rb +10 -101
- data/lib/rails_connector/named_link.rb +1 -1
- data/lib/rails_connector/obj_search_enumerator.rb +37 -49
- metadata +6 -5
- data/app/views/errors/410_gone.html.erb +0 -7
- data/app/views/rails_connector/objs/show.html.erb +0 -1
@@ -20,7 +20,7 @@ module RailsConnector
|
|
20
20
|
@_type_computer = nil
|
21
21
|
end
|
22
22
|
|
23
|
-
# Create a new Obj instance with the given values and attributes.
|
23
|
+
# Create a new {BasicObj Obj} instance with the given values and attributes.
|
24
24
|
# Normally this method should not be used.
|
25
25
|
# Instead Objs should be loaded from the cms database.
|
26
26
|
def initialize(obj_data = {})
|
@@ -38,7 +38,7 @@ module RailsConnector
|
|
38
38
|
|
39
39
|
### FINDERS ####################
|
40
40
|
|
41
|
-
# Find an Obj by
|
41
|
+
# Find an {BasicObj Obj} by its id.
|
42
42
|
# If the paremeter is an Array containing ids, return a list of corresponding Objs.
|
43
43
|
# @param [String, Integer, Array<String, Integer>]id_or_list
|
44
44
|
# @return [Obj, Array<Obj>]
|
@@ -71,15 +71,15 @@ module RailsConnector
|
|
71
71
|
ObjSearchEnumerator.new(nil).and(field, operator, value, boost)
|
72
72
|
end
|
73
73
|
|
74
|
-
# Returns a {ObjSearchEnumerator} of all
|
75
|
-
# If invoked on a subclass of Obj, the result will be restricted to
|
74
|
+
# Returns a {ObjSearchEnumerator} of all {BasicObj Obj}s.
|
75
|
+
# If invoked on a subclass of Obj, the result will be restricted to instances of that subclass.
|
76
76
|
# @return [ObjSearchEnumerator]
|
77
77
|
# @api public
|
78
78
|
def self.all
|
79
79
|
if superclass == RailsConnector::BasicObj
|
80
|
-
|
80
|
+
search_for_all
|
81
81
|
else
|
82
|
-
find_all_by_obj_class(
|
82
|
+
find_all_by_obj_class(name)
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
@@ -88,12 +88,12 @@ module RailsConnector
|
|
88
88
|
# @return [ObjSearchEnumerator]
|
89
89
|
# @api public
|
90
90
|
def self.find_all_by_obj_class(obj_class)
|
91
|
-
|
91
|
+
search_for_all.and(:_obj_class, :equals, obj_class)
|
92
92
|
end
|
93
93
|
|
94
|
-
# Find the Obj with the given path.
|
94
|
+
# Find the {BasicObj Obj} with the given path.
|
95
95
|
# Returns +nil+ if no matching Obj exists.
|
96
|
-
# @param [String] path Path of the {Obj}.
|
96
|
+
# @param [String] path Path of the {BasicObj Obj}.
|
97
97
|
# @return [Obj]
|
98
98
|
# @api public
|
99
99
|
def self.find_by_path(path)
|
@@ -104,10 +104,10 @@ module RailsConnector
|
|
104
104
|
find_objs_by(:path, pathes).map(&:first)
|
105
105
|
end
|
106
106
|
|
107
|
-
# Find an Obj with the given name.
|
107
|
+
# Find an {BasicObj Obj} with the given name.
|
108
108
|
# If several Objs with the given name exist, an arbitrary one of these Objs is chosen and returned.
|
109
109
|
# If no Obj with the name exits, +nil+ is returned.
|
110
|
-
# @param [String] name Name of the {Obj}.
|
110
|
+
# @param [String] name Name of the {BasicObj Obj}.
|
111
111
|
# @return [Obj]
|
112
112
|
# @api public
|
113
113
|
def self.find_by_name(name)
|
@@ -115,23 +115,23 @@ module RailsConnector
|
|
115
115
|
end
|
116
116
|
|
117
117
|
# Returns a {ObjSearchEnumerator} of all Objs with the given name.
|
118
|
-
# @param [String] name Name of the {Obj}.
|
118
|
+
# @param [String] name Name of the {BasicObj Obj}.
|
119
119
|
# @return [ObjSearchEnumerator]
|
120
120
|
# @api public
|
121
121
|
def self.find_all_by_name(name)
|
122
122
|
where(:_name, :equals, name)
|
123
123
|
end
|
124
124
|
|
125
|
-
# Returns the Obj with the given permalink, or +nil+ if no matching Obj exists.
|
126
|
-
# @param [String] permalink The permalink of the {Obj}.
|
125
|
+
# Returns the {BasicObj Obj} with the given permalink, or +nil+ if no matching Obj exists.
|
126
|
+
# @param [String] permalink The permalink of the {BasicObj Obj}.
|
127
127
|
# @return [Obj]
|
128
128
|
# @api public
|
129
129
|
def self.find_by_permalink(permalink)
|
130
130
|
find_objs_by(:permalink, [permalink]).first.first
|
131
131
|
end
|
132
132
|
|
133
|
-
# Returns the Obj with the given permalink, or raise ResourceNotFound if no matching Obj exists.
|
134
|
-
# @param [String] permalink The permalink of the {Obj}.
|
133
|
+
# Returns the {BasicObj Obj} with the given permalink, or raise ResourceNotFound if no matching Obj exists.
|
134
|
+
# @param [String] permalink The permalink of the {BasicObj Obj}.
|
135
135
|
# @return [Obj]
|
136
136
|
# @api public
|
137
137
|
def self.find_by_permalink!(permalink)
|
@@ -147,18 +147,18 @@ module RailsConnector
|
|
147
147
|
end
|
148
148
|
end
|
149
149
|
|
150
|
-
# Hook method to control which page classes should be
|
150
|
+
# Hook method to control which page classes should be available for a page with given path.
|
151
151
|
# Override it to allow only certain classes or none.
|
152
|
-
# Must return either
|
152
|
+
# Must return either +NilClass+, or +Array+.
|
153
153
|
#
|
154
154
|
# Be aware that the given argument is a parent path.
|
155
155
|
# E.g. when creating a page with path +/products/shoes+ then the argument will be +/products+.
|
156
156
|
#
|
157
|
-
# If
|
158
|
-
# By default
|
157
|
+
# If +NilClass+ is returned, then all possible classes will be available.
|
158
|
+
# By default +NilClass+ is returned.
|
159
159
|
#
|
160
|
-
# If
|
161
|
-
# Each class name must be either a
|
160
|
+
# If +Array+ is returned, then it should include desired class names.
|
161
|
+
# Each class name must be either a +String+ or a +Symbol+.
|
162
162
|
# Only this class names will be available. Order of the class names will be preserved.
|
163
163
|
#
|
164
164
|
# @param [String] parent_path Path of the parent obj
|
@@ -171,7 +171,7 @@ module RailsConnector
|
|
171
171
|
id
|
172
172
|
end
|
173
173
|
|
174
|
-
# return the Obj that is the parent of this Obj.
|
174
|
+
# return the {BasicObj Obj} that is the parent of this Obj.
|
175
175
|
# returns +nil+ for the root Obj.
|
176
176
|
# @api public
|
177
177
|
def parent
|
@@ -190,7 +190,7 @@ module RailsConnector
|
|
190
190
|
BasicObj.find_many_by_paths(ancestor_paths)
|
191
191
|
end
|
192
192
|
|
193
|
-
# return a list of all child
|
193
|
+
# return a list of all child {BasicObj Obj}s.
|
194
194
|
# @return [Array<Obj>]
|
195
195
|
# @api public
|
196
196
|
def children
|
@@ -199,13 +199,13 @@ module RailsConnector
|
|
199
199
|
|
200
200
|
### ATTRIBUTES #################
|
201
201
|
|
202
|
-
# returns the Obj's path as a String.
|
202
|
+
# returns the {BasicObj Obj}'s path as a String.
|
203
203
|
# @api public
|
204
204
|
def path
|
205
205
|
read_attribute('_path') or raise 'Obj without path'
|
206
206
|
end
|
207
207
|
|
208
|
-
# returns the Obj's name, i.e. the last component of the path.
|
208
|
+
# returns the {BasicObj Obj}'s name, i.e. the last component of the path.
|
209
209
|
# @api public
|
210
210
|
def name
|
211
211
|
if root?
|
@@ -238,7 +238,7 @@ module RailsConnector
|
|
238
238
|
end
|
239
239
|
end
|
240
240
|
|
241
|
-
# Returns the root Obj, i.e. the Obj with the path "/"
|
241
|
+
# Returns the root {BasicObj Obj}, i.e. the Obj with the path "/"
|
242
242
|
# @return [Obj]
|
243
243
|
# @api public
|
244
244
|
def self.root
|
@@ -246,21 +246,26 @@ module RailsConnector
|
|
246
246
|
"Obj.root not found: There is no Obj with path '/'."
|
247
247
|
end
|
248
248
|
|
249
|
-
# Returns the homepage
|
250
|
-
# Use
|
249
|
+
# Returns the homepage obj. This can be overwritten in your application's +Obj+.
|
250
|
+
# Use {#homepage?} to check if an obj is the homepage.
|
251
251
|
# @return [Obj]
|
252
252
|
# @api public
|
253
253
|
def self.homepage
|
254
254
|
root
|
255
255
|
end
|
256
256
|
|
257
|
+
# @api private
|
258
|
+
def self.generate_widget_pool_id
|
259
|
+
SecureRandom.hex(4)
|
260
|
+
end
|
261
|
+
|
257
262
|
# returns the obj's permalink.
|
258
263
|
# @api public
|
259
264
|
def permalink
|
260
265
|
read_attribute('_permalink')
|
261
266
|
end
|
262
267
|
|
263
|
-
# This method determines the controller that should be invoked when the Obj is requested.
|
268
|
+
# This method determines the controller that should be invoked when the +Obj+ is requested.
|
264
269
|
# By default a controller matching the Obj's obj_class will be used.
|
265
270
|
# If the controller does not exist, the CmsController will be used as a fallback.
|
266
271
|
# Overwrite this method to force a different controller to be used.
|
@@ -270,7 +275,7 @@ module RailsConnector
|
|
270
275
|
obj_class
|
271
276
|
end
|
272
277
|
|
273
|
-
# This method determines the action that should be invoked when the Obj is requested.
|
278
|
+
# This method determines the action that should be invoked when the +Obj+ is requested.
|
274
279
|
# The default action is 'index'.
|
275
280
|
# Overwrite this method to force a different action to be used.
|
276
281
|
# @return [String]
|
@@ -279,20 +284,20 @@ module RailsConnector
|
|
279
284
|
"index"
|
280
285
|
end
|
281
286
|
|
282
|
-
# Returns true if the current
|
287
|
+
# Returns true if the current obj is the {.homepage} obj.
|
283
288
|
# @api public
|
284
289
|
def homepage?
|
285
290
|
self == self.class.homepage
|
286
291
|
end
|
287
292
|
|
288
|
-
# This method is used to calculate
|
293
|
+
# This method is used to calculate a part of a URL of this Obj.
|
289
294
|
#
|
290
295
|
# The routing schema: <code><em><obj.id></em>/<em><obj.slug></em></code>
|
291
296
|
#
|
292
297
|
# The default is {http://apidock.com/rails/ActiveSupport/Inflector/parameterize parameterize}
|
293
298
|
# on +obj.title+.
|
294
299
|
#
|
295
|
-
# You can customize this part by overwriting
|
300
|
+
# You can customize this part by overwriting {#slug}.
|
296
301
|
# @return [String]
|
297
302
|
# @api public
|
298
303
|
def slug
|
@@ -343,37 +348,37 @@ module RailsConnector
|
|
343
348
|
|
344
349
|
# Returns true if this object is active.
|
345
350
|
# @api public
|
351
|
+
# @deprecated Active is deprecated without substitution.
|
346
352
|
def active?
|
353
|
+
Deprecation.warn_method('Obj#active?')
|
347
354
|
return false unless valid_from
|
348
355
|
valid_from <= Time.now && (!valid_until || Time.now <= valid_until)
|
349
356
|
end
|
350
357
|
|
351
358
|
# compatibility with legacy apps.
|
352
359
|
def suppress_export
|
360
|
+
Deprecation.warn_method('Obj#suppress_export?')
|
353
361
|
suppressed? ? 1 : 0
|
354
362
|
end
|
355
363
|
|
356
|
-
# Returns true if the Obj is suppressed.
|
364
|
+
# Returns true if the {BasicObj Obj} is suppressed.
|
357
365
|
# A suppressed Obj does not represent an entire web page, but only a part of a page
|
358
366
|
# (for example a teaser) and will not be delivered by the rails application
|
359
367
|
# as a standalone web page.
|
360
368
|
def suppressed?
|
369
|
+
Deprecation.warn_method('Obj#suppressed?')
|
361
370
|
read_attribute('_suppress_export') ? true : false
|
362
371
|
end
|
363
372
|
|
364
373
|
# Returns true if the export of the object is not suppressed and the content is active?
|
365
374
|
def exportable?
|
375
|
+
Deprecation.warn_method('Obj#exportable?')
|
366
376
|
!suppressed? && active?
|
367
377
|
end
|
368
378
|
|
369
379
|
# Returns the file name to which the Content.file_extension has been appended.
|
370
380
|
def filename
|
371
|
-
|
372
|
-
"DEPRECATION WARNING: "\
|
373
|
-
"The Method Obj#filename is no longer supported. Please use Obj#name instead. "\
|
374
|
-
"From: #{caller[0]}"
|
375
|
-
)
|
376
|
-
|
381
|
+
Deprecation.warn_method('Obj#filename', 'Obj#name')
|
377
382
|
name
|
378
383
|
end
|
379
384
|
|
@@ -390,13 +395,13 @@ module RailsConnector
|
|
390
395
|
path == "/"
|
391
396
|
end
|
392
397
|
|
393
|
-
# Returns a list of
|
398
|
+
# Returns a list of children excluding the binary? ones unless :all is specfied.
|
394
399
|
# This is mainly used for navigations.
|
395
400
|
# @return [Array<Obj>]
|
396
401
|
# @api public
|
397
402
|
def toclist(*args)
|
398
403
|
return [] unless publication?
|
399
|
-
toclist = children
|
404
|
+
toclist = children
|
400
405
|
toclist = toclist.reject { |toc| toc.binary? } unless args.include?(:all)
|
401
406
|
toclist
|
402
407
|
end
|
@@ -470,8 +475,12 @@ module RailsConnector
|
|
470
475
|
# @api public
|
471
476
|
def find_nearest(name)
|
472
477
|
obj = self.class.find_by_path(root? ? "/#{name}" : "#{path}/#{name}")
|
473
|
-
|
474
|
-
|
478
|
+
|
479
|
+
if obj
|
480
|
+
obj
|
481
|
+
elsif !self.root?
|
482
|
+
parent.find_nearest(name)
|
483
|
+
end
|
475
484
|
end
|
476
485
|
|
477
486
|
# This should be a SET, because it's faster in this particular case.
|
@@ -523,10 +532,6 @@ module RailsConnector
|
|
523
532
|
update_data(obj_data)
|
524
533
|
end
|
525
534
|
|
526
|
-
def text_links
|
527
|
-
read_attribute('_text_links')
|
528
|
-
end
|
529
|
-
|
530
535
|
# @return [String]
|
531
536
|
# @api public
|
532
537
|
def obj_class
|
@@ -548,7 +553,7 @@ module RailsConnector
|
|
548
553
|
read_attribute('_valid_until')
|
549
554
|
end
|
550
555
|
|
551
|
-
# For a binary Obj, the content_type is equal to the content_type of
|
556
|
+
# For a binary Obj, the content_type is equal to the content_type of its body (i.e. its data).
|
552
557
|
# For non-binary Objs, a the default content_type is "text/html".
|
553
558
|
# Override this method in subclasses to define a different content_type.
|
554
559
|
# Note that only Objs with content_type "text/html"
|
@@ -635,12 +640,7 @@ module RailsConnector
|
|
635
640
|
if children.any?
|
636
641
|
raise ClientError.new(I18n.t('rails_connector.errors.models.basic_obj.has_children'), 412)
|
637
642
|
end
|
638
|
-
|
639
|
-
CmsRestApi.delete("revisions/#{Workspace.current.revision_id}/objs/#{id}")
|
640
|
-
end
|
641
|
-
|
642
|
-
def widget_container
|
643
|
-
@widget_container ||= self.class.find(parent_path.split('/').last)
|
643
|
+
CmsRestApi.delete("workspaces/#{Workspace.current.id}/objs/#{id}")
|
644
644
|
end
|
645
645
|
|
646
646
|
def edit_view_path
|
@@ -706,6 +706,14 @@ module RailsConnector
|
|
706
706
|
def converted_sort_type(attribute)
|
707
707
|
read_attribute(attribute) == 1 ? "numeric" : "alphaNumeric"
|
708
708
|
end
|
709
|
+
|
710
|
+
class << self
|
711
|
+
private
|
712
|
+
|
713
|
+
def search_for_all
|
714
|
+
ObjSearchEnumerator.new(nil).batch_size(1000)
|
715
|
+
end
|
716
|
+
end
|
709
717
|
end
|
710
718
|
|
711
719
|
end
|
@@ -16,23 +16,6 @@ module RailsConnector
|
|
16
16
|
@obj = loaded_obj
|
17
17
|
end
|
18
18
|
|
19
|
-
# Filter method to check if the already loaded object is active. If it is
|
20
|
-
# not, a 410 Gone error message will be generate (by calling render_obj_error).
|
21
|
-
#
|
22
|
-
# To require the check for all actions, use this in your controllers:
|
23
|
-
# before_filter :load_object
|
24
|
-
# before_filter :ensure_object_is_active
|
25
|
-
def ensure_object_is_active
|
26
|
-
unless @obj.active?
|
27
|
-
@valid_from = @obj.valid_from
|
28
|
-
@valid_until = @obj.valid_until
|
29
|
-
@obj = nil
|
30
|
-
render_obj_error(410, "gone")
|
31
|
-
return false
|
32
|
-
end
|
33
|
-
return true
|
34
|
-
end
|
35
|
-
|
36
19
|
# Filter method to check if access to the loaded object is permitted. If it is
|
37
20
|
# not, a 403 Forbidden error message will be generated (by calling render_obj_error)
|
38
21
|
#
|
@@ -155,7 +155,7 @@ module RailsConnector
|
|
155
155
|
end
|
156
156
|
|
157
157
|
def find_raw_data_from_cache_by(workspace_data, index, key)
|
158
|
-
ContentStateCaching.find_obj_data(workspace_data, index, key) if caching?
|
158
|
+
ContentStateCaching.find_obj_data(workspace_data.content_state, index, key) if caching?
|
159
159
|
end
|
160
160
|
|
161
161
|
def find_raw_data_from_database_by(workspace_data, index, keys)
|
@@ -195,7 +195,7 @@ module RailsConnector
|
|
195
195
|
end
|
196
196
|
|
197
197
|
def store_item_in_cache(workspace_data, index, key, item)
|
198
|
-
ContentStateCaching.store_obj_data(workspace_data, index, key, item)
|
198
|
+
ContentStateCaching.store_obj_data(workspace_data.content_state, index, key, item)
|
199
199
|
end
|
200
200
|
|
201
201
|
def find_blob_data_from_database_by(id)
|
@@ -28,6 +28,15 @@ module RailsConnector
|
|
28
28
|
# RailsConnector::CmsRestApi.task_unaware_request(:put, 'workspace/rtc/publish', nil)
|
29
29
|
#
|
30
30
|
class CmsRestApi
|
31
|
+
DEFAULT_PROTOCOL = 'https'.freeze
|
32
|
+
|
33
|
+
METHOD_TO_NET_HTTP_CLASS = {
|
34
|
+
:get => Net::HTTP::Get,
|
35
|
+
:put => Net::HTTP::Put,
|
36
|
+
:post => Net::HTTP::Post,
|
37
|
+
:delete => Net::HTTP::Delete,
|
38
|
+
}.freeze
|
39
|
+
|
31
40
|
class Configuration
|
32
41
|
attr_accessor :url
|
33
42
|
attr_accessor :login
|
@@ -71,11 +80,18 @@ module RailsConnector
|
|
71
80
|
response_for_request_cms_api(method, resource_path, payload)
|
72
81
|
end
|
73
82
|
|
83
|
+
# This method is mainly for tests
|
84
|
+
def self.reset!
|
85
|
+
@connection_manager = nil
|
86
|
+
end
|
87
|
+
|
74
88
|
class << self
|
75
89
|
|
76
90
|
private
|
77
91
|
|
78
92
|
def request_cms_api(action, resource_path, payload, options)
|
93
|
+
reset_connection_manager if connection_manager.uri != uri
|
94
|
+
|
79
95
|
decoded = response_for_request_cms_api(action, resource_path, payload)
|
80
96
|
return decoded unless Hash === decoded
|
81
97
|
return decoded unless decoded.keys == ["task"]
|
@@ -85,26 +101,30 @@ module RailsConnector
|
|
85
101
|
final_response(task_path, options)
|
86
102
|
end
|
87
103
|
|
88
|
-
def response_for_request_cms_api(
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
104
|
+
def response_for_request_cms_api(method, resource_path, payload = nil)
|
105
|
+
request = method_to_net_http_class(method).new(path(resource_path))
|
106
|
+
set_headers(request)
|
107
|
+
request.body = MultiJson.encode(payload) if payload.present?
|
108
|
+
|
109
|
+
handle_response(connection_manager.request(request))
|
110
|
+
end
|
111
|
+
|
112
|
+
def handle_response(response)
|
113
|
+
code = response.code.to_i
|
114
|
+
if code.to_s.start_with?('2')
|
115
|
+
MultiJson.load(response.body)
|
116
|
+
elsif response.code == '403'
|
117
|
+
raise AccessDenied.new(response.body)
|
118
|
+
elsif (400...500).include?(code)
|
99
119
|
begin
|
100
|
-
specific_output = MultiJson.decode(
|
120
|
+
specific_output = MultiJson.decode(response.body)['error']
|
121
|
+
raise ClientError.new(specific_output, code)
|
101
122
|
rescue MultiJson::DecodeError
|
102
|
-
|
103
|
-
else
|
104
|
-
raise ClientError.new(specific_output, http_code)
|
123
|
+
raise BackendNotAvailable.new(response.body, code)
|
105
124
|
end
|
125
|
+
else
|
126
|
+
raise BackendNotAvailable.new(response.body, code)
|
106
127
|
end
|
107
|
-
raise BackendNotAvailable.new(e.http_body, http_code)
|
108
128
|
end
|
109
129
|
|
110
130
|
def final_response(task_path, options)
|
@@ -121,22 +141,34 @@ module RailsConnector
|
|
121
141
|
raise ClientError.new(message, 400)
|
122
142
|
end
|
123
143
|
|
124
|
-
def
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
144
|
+
def set_headers(request)
|
145
|
+
request.basic_auth(configuration.login, configuration.api_key)
|
146
|
+
request['Content-type'] = 'application/json'
|
147
|
+
request['Accept'] = 'application/json'
|
148
|
+
|
149
|
+
request['Host'] = configuration.http_host if configuration.http_host.present?
|
150
|
+
end
|
151
|
+
|
152
|
+
def path(path)
|
153
|
+
"/#{path}".squeeze('/')
|
154
|
+
end
|
155
|
+
|
156
|
+
def connection_manager
|
157
|
+
@connection_manager ||= ConnectionManager.new(uri)
|
158
|
+
end
|
159
|
+
|
160
|
+
def uri
|
161
|
+
url = configuration.url
|
162
|
+
url = "#{DEFAULT_PROTOCOL}://#{url}" unless url.match /^http/
|
163
|
+
URI.parse(url)
|
164
|
+
end
|
165
|
+
|
166
|
+
def method_to_net_http_class(method)
|
167
|
+
METHOD_TO_NET_HTTP_CLASS.fetch(method)
|
136
168
|
end
|
137
169
|
|
138
|
-
def
|
139
|
-
|
170
|
+
def reset_connection_manager
|
171
|
+
@connection_manager = ConnectionManager.new(uri)
|
140
172
|
end
|
141
173
|
end
|
142
174
|
end
|