--- parser3/src/classes/response.C 2003/02/17 17:05:02 1.23.2.5 +++ parser3/src/classes/response.C 2026/10/10 12:58:07 1.37 @@ -1,16 +1,18 @@ /** @file Parser: @b response parser class. - Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com) - Author: Alexandr Petrosian (http://paf.design.ru) + Copyright (c) 2001-2026 Art. Lebedev Studio (https://www.artlebedev.com) + Authors: Konstantin Morshnev , Alexandr Petrosian */ -static const char* IDENT_RESPONSE_C="$Date: 2003/02/17 17:05:02 $"; - #include "classes.h" #include "pa_vmethod_frame.h" #include "pa_request.h" +#include "pa_vresponse.h" +#include "pa_vfile.h" + +volatile const char * IDENT_RESPONSE_C="$Id: response.C,v 1.37 2026/10/10 12:58:07 moko Exp $"; // class @@ -23,17 +25,28 @@ public: // Methoded // global variable -MethodedPtr response_class(new MResponse); +DECLARE_CLASS_VAR(response, new MResponse); // methods -static void _clear(Request& r, StringPtr method_name, MethodParams& ) { +static void _clear(Request& r, MethodParams&) { GET_SELF(r, VResponse).fields().clear(); } +static void _send(Request& r, MethodParams& params) { + Value& part=params[0]; + // checked here, before headers are sent + if(!dynamic_cast(&part)) + params.as_string(0, "part must be string or file"); + r.send(part); +} + // constructor MResponse::MResponse(): Methoded("response") { // ^clear[] - add_native_method("clear", Method::CT_DYNAMIC, _clear, 0, 0); + add_native_method("clear", Method::CT_STATIC, _clear, 0, 0); + + // ^send[string or file]: the headers go with the first part, the result of @main is not sent then + add_native_method("send", Method::CT_STATIC, _send, 1, 1); }