foobara-http-command-connector 0.0.24 → 0.0.26

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: 3d736806debd1bbbac0e0e19a500a10077b24b8f78d04d8493328e323467b3cb
4
- data.tar.gz: 5d881973d9994cfd5b127bb57a5dc6e7bbed2e210c0013e7d9fa3b9efaae81c8
3
+ metadata.gz: 29aa9d3315dc94a20e2799a25609724d6c07116d468c0187618916ecb294f424
4
+ data.tar.gz: a04bbdca1ed113eb63589e437ce5262e2c483704601473f2665fcfe660c2740b
5
5
  SHA512:
6
- metadata.gz: 148abf405a30f5a2008f646df51568799da0cc875e832e4b205bc7fe77d32d148d546629902232e535d0d1948c95fe705d5271f6f617563ad363a179e838afcc
7
- data.tar.gz: f1b512be8a16cb6422e00ff0167785dfd3cd5bd88c1b8b743ef1cb7f3fd2291453256c3646445dd9933e969efc63b03cf59a6d6c23aeba2f36b80755514092c0
6
+ metadata.gz: 9f3860ea8fa74eec452c33bd8065a3ffae94227ea5123103c1354b4547307060139a9a62badeb9eb33c49b300d281dd70aab9e45f21a9589d6e12cc8920c78a2
7
+ data.tar.gz: 5c5e6ad45a9d9af5e732121d1cda3433a0d98a7f2ae1765fa62a2de61e18824c6fef07e02c802034ef040ad7c756b5c60caa55c493d30bfc0216ce29fdd03f8c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [0.0.26] - 2025-05-03
2
+
3
+ - Deal with CommandConnector interface changes
4
+
5
+ ## [0.0.25] - 2025-05-01
6
+
7
+ - Add SetInputToProcResult request transformer
8
+
1
9
  ## [0.0.24] - 2025-04-28
2
10
 
3
11
  - Make sure cookies are looked up by string not symbol
data/src/http/request.rb CHANGED
@@ -113,14 +113,6 @@ module Foobara
113
113
  path
114
114
  end
115
115
  end
116
-
117
- def set_response_header(name, value)
118
- name = name.to_s
119
- name = name.downcase
120
-
121
- self.response_headers ||= {}
122
- self.response_headers = response_headers.merge(name => value)
123
- end
124
116
  end
125
117
  end
126
118
  end
@@ -0,0 +1,45 @@
1
+ module Foobara
2
+ module CommandConnectors
3
+ class Http < CommandConnector
4
+ # TODO: We don't really want to mutate the request. We just need access to the authenticated user.
5
+ # consider changing inputs transformer to have access to the command/request somehow
6
+ class SetInputToProcResult < RequestMutator
7
+ class << self
8
+ attr_accessor :attribute_name, :input_value_proc
9
+
10
+ def for(attribute_name, &input_value_proc)
11
+ subclass = Class.new(self)
12
+
13
+ subclass.attribute_name = attribute_name
14
+ subclass.input_value_proc = input_value_proc
15
+
16
+ subclass
17
+ end
18
+ end
19
+
20
+ attr_writer :attribute_name, :input_value_proc
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 applicable?(_request)
28
+ true
29
+ end
30
+
31
+ def mutate(request)
32
+ request.inputs[attribute_name] = request.instance_exec(&input_value_proc)
33
+ end
34
+
35
+ def attribute_name
36
+ @attribute_name ||= self.class.attribute_name
37
+ end
38
+
39
+ def input_value_proc
40
+ @input_value_proc ||= self.class.input_value_proc
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
data/src/http.rb CHANGED
@@ -58,24 +58,28 @@ module Foobara
58
58
  super(*, prefix:, **)
59
59
  end
60
60
 
61
- def request_to_command(request)
61
+ def request_to_command_class(request)
62
62
  if request.method == "OPTIONS"
63
- return Foobara::CommandConnectors::Http::Commands::GetOptions.new(request:)
63
+ Foobara::CommandConnectors::Http::Commands::GetOptions
64
+ else
65
+ super.tap do |command_class|
66
+ if request.action == "help"
67
+ command_class.serializers = [Commands::Help::ResultSerializer]
68
+ end
69
+ end
64
70
  end
71
+ end
65
72
 
66
- command = super
67
-
68
- if request.action == "help"
69
- request.set_response_header("content-type", "text/html")
70
- command.class.serializers = [Commands::Help::ResultSerializer]
73
+ def request_to_command_inputs(request)
74
+ if request.method == "OPTIONS"
75
+ { request: }
76
+ else
77
+ super
71
78
  end
72
-
73
- command
74
79
  end
75
80
 
76
81
  def set_response_status(response)
77
- command = response.command
78
- outcome = command.outcome
82
+ outcome = response.outcome
79
83
 
80
84
  response.status = if outcome.success?
81
85
  200
@@ -124,6 +128,10 @@ module Foobara
124
128
  end
125
129
  end
126
130
 
131
+ if request.action == "help"
132
+ response_headers = (response_headers || {}).merge("content-type" => "text/html")
133
+ end
134
+
127
135
  if response_headers
128
136
  static_headers.merge(response_headers)
129
137
  else
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.24
4
+ version: 0.0.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-04-28 00:00:00.000000000 Z
10
+ date: 2025-05-03 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: foobara
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: 0.0.88
18
+ version: 0.0.116
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: 0.0.88
25
+ version: 0.0.116
26
26
  email:
27
27
  - azimux@gmail.com
28
28
  executables: []
@@ -67,6 +67,7 @@ files:
67
67
  - src/http/request.rb
68
68
  - src/http/request_mutators/set_input_from_cookie.rb
69
69
  - src/http/request_mutators/set_input_from_header.rb
70
+ - src/http/request_mutators/set_input_to_proc_result.rb
70
71
  - src/http/response.rb
71
72
  - src/http/response_mutators/move_attribute_to_cookie.rb
72
73
  - src/http/response_mutators/move_attribute_to_header.rb