Files
aws/regtests/0387_hotplug_post/hotplug_cb.adb
Pascal Obry 0f37994c02 Hotplug: Ensure the proper content type is passed to the hotplug module.
When transferring a request from the main server to the hotplug one
we must use the same Content-Type. Not doing that will fail to pass
the POST (application/x-www-form-urlencoded) parameters to the
hotplug module.

Add corresponding regression test.

TN eng/toolchain/aws#110
2025-12-24 14:48:48 +01:00

84 lines
3.2 KiB
Ada

------------------------------------------------------------------------------
-- Ada Web Server --
-- --
-- Copyright (C) 2025, AdaCore --
-- --
-- This is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the --
-- Free Software Foundation; either version 3, or (at your option) any --
-- later version. This software is distributed in the hope that it will --
-- be useful, but WITHOUT ANY WARRANTY; without even the implied warranty --
-- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --
-- General Public License for more details. --
-- --
-- You should have received a copy of the GNU General Public License --
-- distributed with this software; see file COPYING3. If not, go --
-- to http://www.gnu.org/licenses for a complete copy of the license. --
------------------------------------------------------------------------------
with Ada.Strings.Unbounded;
with AWS.Parameters;
package body Hotplug_CB is
use Ada.Strings.Unbounded;
NL : constant String := [ ASCII.LF ];
-------------
-- Hotplug --
-------------
function Hotplug (Request : AWS.Status.Data)
return AWS.Response.Data
is
URI : constant String := AWS.Status.URI (Request);
P : constant AWS.Parameters.List := AWS.Status.Parameters (Request);
Parameters : Unbounded_String;
begin
for K in 1 .. AWS.Parameters.Count (P) loop
Append (Parameters, Positive'Image (K) & " Name = "
& AWS.Parameters.Get_Name (P, K));
Append (Parameters, " Value = " & AWS.Parameters.Get_Value (P, K) & NL);
end loop;
return AWS.Response.Build
(Content_Type => "text/html",
Message_Body =>
"This request is using method "
& AWS.Status.Request_Method'Image (AWS.Status.Method (Request)) & NL
& "Ok, I'm the Hotplug server, you have asked for " & URI & NL
& "Here are the parameters:" & NL
& To_String (Parameters) & NL);
end Hotplug;
----------
-- Main --
----------
function Main (Request : AWS.Status.Data)
return AWS.Response.Data
is
URI : constant String := AWS.Status.URI (Request);
P : constant AWS.Parameters.List := AWS.Status.Parameters (Request);
Parameters : Unbounded_String;
begin
for K in 1 .. AWS.Parameters.Count (P) loop
Append (Parameters, Positive'Image (K) & " Name = "
& AWS.Parameters.Get_Name (P, K));
Append (Parameters, " Value = " & AWS.Parameters.Get_Value (P, K) & NL);
end loop;
return AWS.Response.Build
(Content_Type => "text/html",
Message_Body =>
"Ok, I'm the main server, you have asked for " & URI & NL
& "Here are the parameters:"
& To_String (Parameters));
end Main;
end Hotplug_CB;