/** * @author ETSI / STF549 * @version $URL$ * $ID:$ * @desc This module provides the templates for ITS HTTP based protocols. * @copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. * The copyright and the foregoing restriction extend to reproduction in all media. * All rights reserved. * @see ETSI TS 103 478 */ module LibItsHttp_Templates { // LibHttp import from LibItsHttp_TypesAndValues all; import from LibItsHttp_MessageBodyTypes all; import from LibItsHttp_XmlMessageBodyTypes all; import from LibItsHttp_JsonMessageBodyTypes all; import from LibItsHttp_BinaryMessageBodyTypes all; group http_messages { template (value) HttpMessage m_http_request( in template (value) Request p_request ) := { request := p_request } // End of template m_http_request template (present) HttpMessage mw_http_request( template (present) Request p_request := ? ) := { request := p_request } // End of template mw_http_request template (value) HttpMessage m_http_response( in template (value) Response p_response ) := { response := p_response } // End of template m_http_response template (present) HttpMessage mw_http_response( template (present) Response p_response := ? ) := { response := p_response } // End of template mw_http_response } // End of group http_messages group http_headers { template (value) HeaderLine m_header_line( in template (value) charstring p_header_name, in template (value) charstring_list p_header_value ) := { header_name := p_header_name, header_value := p_header_value } // End of template m_header_line } // End of group http_headers group http_requests { template (omit) Request m_http_request_get( in charstring p_uri, in template (value) HeaderLines p_headers, in template (omit) HttpMessageBody p_body := omit ) := { method := "GET", uri := p_uri, version_major := c_http_version_major, version_minor := c_http_version_minor, header := p_headers, body := p_body } // End of template m_http_request_get template (omit) Request m_http_request_post( in charstring p_uri, in template (value) HeaderLines p_headers, in template (omit) HttpMessageBody p_body := omit ) := { method := "POST", uri := p_uri, version_major := c_http_version_major, version_minor := c_http_version_minor, header := p_headers, body := p_body } // End of template m_http_request_post template Request mw_http_request_post( template (present) charstring p_uri := ?, template (present) HeaderLines p_headers := ?, template HttpMessageBody p_body := * ) := { method := "POST", uri := p_uri, version_major := c_http_version_major, version_minor := c_http_version_minor, header := p_headers, body := p_body } // End of template mw_http_request_post } // End of group http_requests group http_responses { template (value) Response m_http_response_ok( in template (value) HttpMessageBody p_body, in template (value) HeaderLines p_header ) := { version_major := 1, version_minor := 1, statuscode := 200, statustext := "OK", header := p_header, body := p_body } // End of template m_http_response_ok template (present) Response mw_http_response_ok( template (present) HttpMessageBody p_body := ?, template (present) HeaderLines p_header := ? ) := { version_major := 1, version_minor := 1, statuscode := 200, statustext := "OK", header := p_header, body := p_body } // End of template mw_http_response_ok template (value) Response m_http_response_ko( in template (value) HttpMessageBody p_body, in template (value) HeaderLines p_header, in template (value) integer p_statuscode := 404, in template (value) charstring p_statustext := "Not found" ) := { version_major := 1, version_minor := 1, statuscode := p_statuscode, statustext := p_statustext, header := p_header, body := p_body } // End of template m_http_response_ko template Response mw_http_response_ko( template HttpMessageBody p_body := *, template (present) HeaderLines p_header := ? ) := { version_major := 1, version_minor := 1, statuscode := complement(200), statustext := ?, header := p_header, body := p_body } // End of template mw_http_response_ko template Response mw_http_response_404_not_found( template HttpMessageBody p_body := *, template (present) HeaderLines p_header := ? ) modifies mw_http_response_ko := { statuscode := 404, statustext := ? // TODO Add pattern for not found } // End of template mw_http_response_ok } // End of group http_responses group http_xml_body { template (value) HttpMessageBody m_http_message_body_xml( in template (value) XmlBody p_xml_body ) := { xml_body := p_xml_body } // End of template m_http_message_body_xml template (present) HttpMessageBody mw_http_message_body_xml( template (present) XmlBody p_xml_body := ? ) := { xml_body := p_xml_body } // End of template mw_http_message_body_xml } // End of group http_xml_body group http_json_body { template (value) HttpMessageBody m_http_message_body_json( in template (value) JsonBody p_json_body ) := { json_body := p_json_body } // End of template m_http_message_body_json template (present) HttpMessageBody mw_http_message_body_json( template (present) JsonBody p_json_body := ? ) := { json_body := p_json_body } // End of template mw_http_message_body_json } // End of group http_json_body group http_binary_body { template (value) HttpMessageBody m_http_message_body_binary( in template (value) BinaryBody p_binary_body ) := { binary_body := p_binary_body } // End of template m_http_message_body_binary template (present) HttpMessageBody mw_http_message_body_binary( template (present) BinaryBody p_binary_body := ? ) := { binary_body := p_binary_body } // End of template mw_http_message_body_binary } // End of group http_binary_body } // End of module LibItsHttp_Templates