foobara-http-command-connector 0.0.17 → 0.0.19

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: 867605b13dfdbb6e3735a376abee65a62af60597a1158946928295823f901980
4
- data.tar.gz: 2ef5837bd5fed7c4ad21a952faee5b4b51a7af1e94acf4e2cfc7b037bd7dc75d
3
+ metadata.gz: ceebd7c1212f94fca4e4906d36e0c1b13490d0815279b81f9508ff88052934b7
4
+ data.tar.gz: 73140a63c34db0eee71bcf3794fb98e77d4aa9f61ce5b2c251f9898a17eec65e
5
5
  SHA512:
6
- metadata.gz: f5e4f2ddec2597b5f5b42e900420bea28d9f1f770ca063793afd18938e33a03405c8020d8b2d03e7a214c4b8fc67fe97e75b9b16638641816534e61b927c3593
7
- data.tar.gz: ab961b1861b1b6ba002b71c46c566cf6eb157148f17ec02f3ca67eec2a8dcc388873b0d6058ef113523d4c97199ed50b687dda98d5b06ebd1dfbd40909c8edaa
6
+ metadata.gz: 362371773eebe74e9f902235e6fb76fa07f2f9d8abf32dd1acd192cc6a2f8ffd1d7963ebe8e34fc9bfc037f05008d26390bb0d421ed06084b5bb647b0491d4b9
7
+ data.tar.gz: 66a799995e7a052703c303e5225c258b5ce7cf170861142d699c5fb47184f474a7b501df397a3f089faf30ee58ee5dc9e6cd37a369f3d888380222fcf4c35f10
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## [0.0.19] - 2025-03-31
2
+
3
+ - Add SetHeader response mutator
4
+ - Use / instead of :: for paths
5
+
6
+ ## [0.0.18] - 2025-03-29
7
+
8
+ - Implement SetInputsFromHeader request mutator and MoveAttributeToHeader response mutator
9
+
1
10
  ## [0.0.17] - 2025-03-29
2
11
 
3
12
  - Implement SetInputsFromCookie request mutator
data/src/http/request.rb CHANGED
@@ -93,7 +93,9 @@ module Foobara
93
93
  end
94
94
 
95
95
  def set_action_and_command_name
96
- @action, @full_command_name = prefixless_path[1..].split("/")
96
+ @action, *full_command_name = prefixless_path[1..].split("/")
97
+
98
+ @full_command_name = full_command_name.join("::").gsub("/", "::")
97
99
  end
98
100
 
99
101
  def prefixless_path
@@ -0,0 +1,42 @@
1
+ module Foobara
2
+ module CommandConnectors
3
+ class Http < CommandConnector
4
+ class SetInputFromHeader < RequestMutator
5
+ class << self
6
+ attr_accessor :attribute_name, :header_name
7
+
8
+ def for(attribute_name, header_name = attribute_name)
9
+ subclass = Class.new(self)
10
+
11
+ header_name = header_name.to_s if header_name.is_a?(::Symbol)
12
+
13
+ subclass.attribute_name = attribute_name
14
+ subclass.header_name = header_name
15
+
16
+ subclass
17
+ end
18
+ end
19
+
20
+ attr_writer :attribute_name, :header_name
21
+
22
+ def inputs_type_from(inputs_type)
23
+ new_declaration = TypeDeclarations::Attributes.reject(inputs_type.declaration_data, attribute_name)
24
+ Domain.current.foobara_type_from_declaration(new_declaration)
25
+ end
26
+
27
+ def mutate(request)
28
+ header_value = request.headers[header_name]
29
+ request.inputs[attribute_name] = header_value
30
+ end
31
+
32
+ def attribute_name
33
+ @attribute_name ||= self.class.attribute_name
34
+ end
35
+
36
+ def header_name
37
+ @header_name ||= self.class.header_name
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
data/src/http/response.rb CHANGED
@@ -19,6 +19,11 @@ module Foobara
19
19
  def add_cookie(cookie_name, cookie_value, cookie_opts)
20
20
  cookies << Cookie.new(cookie_name, cookie_value, **cookie_opts)
21
21
  end
22
+
23
+ def add_header(header_name, header_value)
24
+ self.headers ||= {}
25
+ headers[header_name] = header_value
26
+ end
22
27
  end
23
28
  end
24
29
  end
@@ -0,0 +1,42 @@
1
+ module Foobara
2
+ module CommandConnectors
3
+ class Http < CommandConnector
4
+ class MoveAttributeToHeader < ResponseMutator
5
+ class << self
6
+ attr_accessor :attribute_name, :header_name
7
+
8
+ def for(attribute_name, header_name = attribute_name)
9
+ subclass = Class.new(self)
10
+
11
+ subclass.attribute_name = attribute_name
12
+ subclass.header_name = header_name
13
+
14
+ subclass
15
+ end
16
+ end
17
+
18
+ attr_writer :attribute_name, :header_name
19
+
20
+ def result_type_from(result_type)
21
+ new_declaration = TypeDeclarations::Attributes.reject(result_type.declaration_data, attribute_name)
22
+ Domain.current.foobara_type_from_declaration(new_declaration)
23
+ end
24
+
25
+ def mutate(response)
26
+ if response.command.success?
27
+ header_value = response.body.delete(attribute_name)
28
+ response.add_header(header_name, header_value)
29
+ end
30
+ end
31
+
32
+ def attribute_name
33
+ @attribute_name ||= self.class.attribute_name
34
+ end
35
+
36
+ def header_name
37
+ @header_name ||= self.class.header_name
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,38 @@
1
+ module Foobara
2
+ module CommandConnectors
3
+ class Http < CommandConnector
4
+ class SetHeader < ResponseMutator
5
+ class << self
6
+ attr_accessor :header_name, :header_value
7
+
8
+ def for(header_name, header_value)
9
+ subclass = Class.new(self)
10
+
11
+ subclass.header_name = header_name
12
+ subclass.header_value = header_value
13
+
14
+ subclass
15
+ end
16
+ end
17
+
18
+ attr_writer :header_name, :header_value
19
+
20
+ def result_type_from(result_type)
21
+ result_type
22
+ end
23
+
24
+ def mutate(response)
25
+ response.add_header(header_name.to_s, header_value)
26
+ end
27
+
28
+ def header_name
29
+ @header_name ||= self.class.header_name
30
+ end
31
+
32
+ def header_value
33
+ @header_value ||= self.class.header_value
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foobara-http-command-connector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.0.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-30 00:00:00.000000000 Z
10
+ date: 2025-03-31 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: foobara
@@ -66,8 +66,11 @@ files:
66
66
  - src/http/cookie.rb
67
67
  - src/http/request.rb
68
68
  - src/http/request_mutators/set_input_from_cookie.rb
69
+ - src/http/request_mutators/set_input_from_header.rb
69
70
  - src/http/response.rb
70
71
  - src/http/response_mutators/move_attribute_to_cookie.rb
72
+ - src/http/response_mutators/move_attribute_to_header.rb
73
+ - src/http/response_mutators/set_header.rb
71
74
  homepage: https://github.com/foobara/http-command-connector
72
75
  licenses:
73
76
  - Apache-2.0