smooth_operator 1.21.4 → 1.22.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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YjNhMmMxNjM2YzRiMzY4ZGIxNzc4YzI3YTE2MTY4ZDQ1Y2MzNGRjMw==
4
+ MzVmNDBmNGNhOWJmMjk0MDJhZDRhYTE0YmNhOGI3ZmQxMDQ4YWMyOQ==
5
5
  data.tar.gz: !binary |-
6
- ZmE3NjZkNTExYzdhNWRlNTQ1ZTZhNDIwMDNlMDBkODQ4NmFlYmJiNg==
6
+ NzU4MDBlMWQzNTU2NzhmZjIyMjE2Y2ZjMTk3ZjU5MjAxMjY4NzJhMQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MDEwZWY2MjJhYTY2NzY2ZGQzZjVkM2I5ODBmMjk0MTI5YWZkMzNmMzM1NTkx
10
- OGMxOTVmYjYyYTRmZjVmMjljZjk4NGYxMWNiNzkzMzAwMmQ1NjViODRkMzYw
11
- YzMzOWRiOWQ1NDgxODc4YTRlMTk5MDllZDdlZDE3MGI4NjA4Yjg=
9
+ NzAwZDJlNDM1OTJlMjg3MDVlYjViYmI4N2NjNTk4YjFkNmZiNjQzZWUyYjFk
10
+ MGUzZmEzNDliMjNjMGQ3ZTI5YjI2MTQzY2QxZTgyZTZiZmNmMzQyMjJhY2Jj
11
+ MDhiMGYwZGRlZDdlZDVlNTJiNDQ0OWIzNGYyNzgzZDAzNDZjNTk=
12
12
  data.tar.gz: !binary |-
13
- ZjllMGFlMjdhOWUyZDdiOTBkM2QyZGNhYzE0NjJkMWJiZmMwODBlMGE5YjJl
14
- NGQ0NWRiN2E2Y2Y4NjcyMzk2NjZhNTRkY2I4NzA1ZjE4ZmExYjRjNDVkNzE2
15
- MWI3ZTA4NDkzODE3ODk2YWMwZDJhNDljNzk0ZDY0ZDM0MmI2M2U=
13
+ OTE5YjlmYmRlYjVhYWZiODI2NjQ4YWI5OGRkNzRmNjk4YTdjMTQ5ZWRiZDRi
14
+ ZjJmY2FlOTIxMTZmNDBmYTllY2EwNjAzNjc1NjcxNjkzNWY2N2RiMjRlNGMx
15
+ ZTJlMzYyNDQ1MWViN2Q2M2U4NTUzOGIzMDZmYzRmZDRjN2I4MzM=
@@ -0,0 +1,21 @@
1
+ module SmoothOperator
2
+ class CookieJar < Hash
3
+
4
+ def to_s
5
+ self.map { |key, value| "#{key}=#{value}"}.join("; ")
6
+ end
7
+
8
+ def parse(*cookie_strings)
9
+ cookie_strings.each do |cookie_string|
10
+ next unless cookie_string.is_a?(String)
11
+
12
+ key, value = cookie_string.split('; ').first.split('=', 2)
13
+
14
+ self[key] = value
15
+ end
16
+
17
+ self
18
+ end
19
+
20
+ end
21
+ end
@@ -20,7 +20,9 @@ module SmoothOperator
20
20
  options[:resources_name] ||= "#{parent_object.class.resources_name}/#{id}/#{self.class.resources_name}"
21
21
  end
22
22
 
23
- self.class.make_the_call(http_verb, relative_path, data, options) do |remote_call|
23
+ call_args = before_request(http_verb, relative_path, data, options)
24
+
25
+ self.class.make_the_call(*call_args) do |remote_call|
24
26
  yield(remote_call)
25
27
  end
26
28
  end
@@ -41,9 +43,15 @@ module SmoothOperator
41
43
  base.extend(ClassMethods)
42
44
  end
43
45
 
46
+ protected ################# PROTECTED ####################
47
+
48
+ def before_request(http_verb, relative_path, data, options)
49
+ [http_verb, relative_path, data, options]
50
+ end
51
+
44
52
  module ClassMethods
45
53
 
46
- OPTIONS = [:endpoint, :endpoint_user, :endpoint_pass, :timeout]
54
+ OPTIONS = [:endpoint, :endpoint_user, :endpoint_pass, :timeout, :server_name]
47
55
 
48
56
  OPTIONS.each do |option|
49
57
  define_method(option) { Helpers.get_instance_variable(self, option, '') }
@@ -62,6 +70,8 @@ module SmoothOperator
62
70
 
63
71
  resource_path = resource_path(relative_path, options)
64
72
 
73
+ http_verb, resource_path, data, options = before_request(http_verb, resource_path, data, options)
74
+
65
75
  params, data = *HelperMethods.strip_params(self, http_verb, data)
66
76
 
67
77
  operator = HelperMethods.get_me_an_operator(options)
@@ -85,6 +95,12 @@ module SmoothOperator
85
95
  end
86
96
  end
87
97
 
98
+ protected ################# PROTECTED ####################
99
+
100
+ def before_request(http_verb, relative_path, data, options)
101
+ [http_verb, relative_path, data, options]
102
+ end
103
+
88
104
  end
89
105
 
90
106
  module HelperMethods
@@ -49,19 +49,15 @@ module SmoothOperator
49
49
  end
50
50
 
51
51
  def save(relative_path = nil, data = {}, options = {})
52
- data = resource_attributes(data, options)
52
+ data = resource_body(data, options)
53
53
 
54
54
  method = new_record? ? :create : :update
55
55
 
56
- send(method, relative_path, data, options) do |remote_call|
57
- block_given? ? yield(remote_call) : remote_call.status
58
- end
59
- end
56
+ make_a_persistence_call(method, relative_path, data, options) do |remote_call|
57
+ @new_record = false if method == :create && remote_call.status
60
58
 
61
- def save!(relative_path = nil, data = {}, options = {})
62
- save(relative_path, data, options) do |remote_call|
63
59
  block_given? ? yield(remote_call) : remote_call.status
64
- end || raise('RecordNotSaved')
60
+ end
65
61
  end
66
62
 
67
63
  def destroy(relative_path = nil, data = {}, options = {})
@@ -74,23 +70,15 @@ module SmoothOperator
74
70
  end
75
71
  end
76
72
 
77
- protected ######################### PROTECTED ##################
78
-
79
- def create(relative_path, data, options)
80
- make_a_persistence_call(:create, relative_path, data, options) do |remote_call|
81
- @new_record = false if remote_call.status
82
-
83
- block_given? ? yield(remote_call) : remote_call
84
- end
73
+ def save!(relative_path = nil, data = {}, options = {})
74
+ save(relative_path, data, options) do |remote_call|
75
+ block_given? ? yield(remote_call) : remote_call.status
76
+ end || raise('RecordNotSaved')
85
77
  end
86
78
 
87
- def update(relative_path, data, options)
88
- make_a_persistence_call(:update, relative_path, data, options) do |remote_call|
89
- block_given? ? yield(remote_call) : remote_call
90
- end
91
- end
79
+ protected ######################### PROTECTED ##################
92
80
 
93
- def resource_attributes(data, options)
81
+ def resource_body(data, options)
94
82
  data = Helpers.stringify_keys(data)
95
83
 
96
84
  hash = serializable_hash(options[:serializable_options]).dup
@@ -1,5 +1,6 @@
1
- module SmoothOperator
1
+ require "smooth_operator/cookie_jar"
2
2
 
3
+ module SmoothOperator
3
4
  module RemoteCall
4
5
 
5
6
  class Base
@@ -66,6 +67,10 @@ module SmoothOperator
66
67
  object.nil? ? parsed_response : object
67
68
  end
68
69
 
70
+ def cookie(header_field = 'set-cookie')
71
+ CookieJar.new.parse(headers[header_field])
72
+ end
73
+
69
74
  end
70
75
  end
71
76
  end
@@ -1,3 +1,3 @@
1
1
  module SmoothOperator
2
- VERSION = "1.21.4"
2
+ VERSION = "1.22.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smooth_operator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.21.4
4
+ version: 1.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - João Gonçalves
@@ -87,6 +87,7 @@ files:
87
87
  - lib/smooth_operator/associations/has_many_relation.rb
88
88
  - lib/smooth_operator/associations/reflection.rb
89
89
  - lib/smooth_operator/attribute_assignment.rb
90
+ - lib/smooth_operator/cookie_jar.rb
90
91
  - lib/smooth_operator/delegation.rb
91
92
  - lib/smooth_operator/finder_methods.rb
92
93
  - lib/smooth_operator/helpers.rb