Commit 7d2b3947 authored by YannGarcia's avatar YannGarcia
Browse files

Add lower layer information in indication messages (tls, mutual authentication)

parent 66c5ad91
Loading
Loading
Loading
Loading
+372 −0
Original line number Diff line number Diff line
/**
 *    @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) Header 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) Headers 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 Request mw_http_request_get(
                                             template (present) charstring p_uri := ?, 
                                             template (present) Headers p_headers := ?,
                                             template HttpMessageBody p_body := *
        ) := {
          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 mw_http_request_get
        
        template (omit) Request m_http_request_post(
                                                    in charstring p_uri, 
                                                    in template (value) Headers p_headers,
                                                    in template (omit) HttpMessageBody p_body := omit
        ) modifies m_http_request_get := {
          method        := "POST"
        } // End of template m_http_request_post
        
        template Request mw_http_request_post(
                                              template (present) charstring p_uri := ?, 
                                              template (present) Headers p_headers := ?,
                                              template HttpMessageBody p_body := *
        ) modifies mw_http_request_get := {
          method        := "POST"
        } // End of template mw_http_request_post
        
        template (omit) Request m_http_request_patch(
                                                     in charstring p_uri, 
                                                     in template (value) Headers p_headers,
                                                     in template (omit) HttpMessageBody p_body := omit
        ) modifies m_http_request_get := {
          method        := "PATCH"
        } // End of template m_http_request_patch
        
        template Request mw_http_request_patch(
                                              template (present) charstring p_uri := ?, 
                                              template (present) Headers p_headers := ?,
                                              template HttpMessageBody p_body := *
        ) modifies mw_http_request_get := {
          method        := "PATCH"
        } // End of template mw_http_request_patch
        
        template (omit) Request m_http_request_put(
                                                   in charstring p_uri, 
                                                   in template (value) Headers p_headers,
                                                   in template (omit) HttpMessageBody p_body := omit
        ) modifies m_http_request_get := {
          method        := "PUT"
        } // End of template m_http_request_put
        
        template Request mw_http_request_put(
                                             template (present) charstring p_uri := ?, 
                                             template (present) Headers p_headers := ?,
                                             template HttpMessageBody p_body := *
        ) modifies mw_http_request_get := {
          method        := "PUT"
        } // End of template mw_http_request_put
        
        template (omit) Request m_http_request_delete(
                                                      in charstring p_uri, 
                                                      in template (value) Headers p_headers,
                                                      in template (omit) HttpMessageBody p_body := omit
        ) modifies m_http_request_get := {
          method        := "DELETE"
        } // End of template m_http_request_delete
        
        template Request mw_http_request_delete(
                                                template (present) charstring p_uri := ?, 
                                                template (present) Headers p_headers := ?,
                                                template HttpMessageBody p_body := *
        ) modifies mw_http_request_get := {
          method        := "DELETE"
        } // 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) Headers p_header
      ) := {
          version_major := 1,
          version_minor := 1,
          statuscode    := 200,
          statustext    := "OK",
          header        := p_header,
          body          := p_body,
          tls           := omit,
          mutual_tls    := omit
      } // End of template m_http_response_ok
      
      template (value) Response m_http_response_ok_no_body(
                                                           in template (value) Headers p_header
      ) := {
          version_major := 1,
          version_minor := 1,
          statuscode    := 200,
          statustext    := "OK",
          header        := p_header,
          body          := omit,
          tls           := omit,
          mutual_tls    := omit
      } // End of template m_http_response_ok_no_body
      
      template (value) Response m_http_response_204_no_content(
                                                               in template (value) Headers p_header
      ) modifies m_http_response_ok_no_body := {
          statuscode    := 204,
          statustext    := "No Content"
      } // End of template m_http_response_204_no_content
      
      template (present) Response mw_http_response_ok(
                                                      template (present) HttpMessageBody p_body := ?,
                                                      template (present) Headers p_header := ?,
                                                      template boolean p_tls := *,
                                                      template boolean p_mutual_tls := *
      ) := {
          version_major := 1,
          version_minor := 1,
          statuscode    := 200,
          statustext    := ?,
          header        := p_header,
          body          := p_body,
          tls           := *,
          mutual_tls    := *
      } // End of template mw_http_response_ok
      
      template (present) Response mw_http_response_201_created(
                                                               template (present) HttpMessageBody p_body := ?,
                                                               template (present) Headers p_header := ?,
                                                               template boolean p_tls := *,
                                                               template boolean p_mutual_tls := *
      ) modifies mw_http_response_ok := {
          statuscode    := 201,
          statustext    := "Created"
      } // End of template mw_http_response_ok
      
      template (present) Response mw_http_response_202_accepted(
                                                                template (present) HttpMessageBody p_body := ?,
                                                                template (present) Headers p_header := ?,
                                                                template boolean p_tls := *,
                                                                template boolean p_mutual_tls := *
      ) modifies mw_http_response_ok := {
          statuscode    := 202,
          statustext    := "Accepted"
      } // End of template mw_http_response_ok
      
      template (present) Response mw_http_response_204_no_content(
                                                                   template (present) HttpMessageBody p_body := ?,
                                                                   template (present) Headers p_header := ?,
                                                                   template boolean p_tls := *,
                                                                   template boolean p_mutual_tls := *
      ) modifies mw_http_response_ok := {
          statuscode    := 204,
          statustext    := "No Content"
      } // End of template mw_http_response_ok
      
      template (value) Response m_http_response_ko(
                                                   in template (value) HttpMessageBody p_body,
                                                   in template (value) Headers 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,
          tls           := omit,
          mutual_tls    := omit
      } // End of template m_http_response_ko
      
      template (value) Response m_http_response_ko_no_body(
                                                           in template (value) Headers 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          := omit,
          tls           := omit,
          mutual_tls    := omit
      } // End of template m_http_response_ko_no_body
      
      template Response mw_http_response_ko(
                                            template HttpMessageBody p_body  := *,
                                            template (present) Headers p_header := ?
      ) := {
          version_major := 1,
          version_minor := 1,
          statuscode    := complement(200),
          statustext    := ?,
          header        := p_header,
          body          := p_body,
          tls           := *,
          mutual_tls    := *
      } // End of template mw_http_response_ko
      
      template Response mw_http_response_400_bad_request(
                                                         template HttpMessageBody p_body  := *,
                                                         template (present) Headers p_header := ?
      ) modifies mw_http_response_ko := {
          statuscode    := 400,
          statustext    := "Bad Request"
      } // End of template mw_http_response_400_bad_request
      
      template Response mw_http_response_401_unauthorized(
                                                          template HttpMessageBody p_body  := *,
                                                          template (present) Headers p_header := ?
      ) modifies mw_http_response_ko := {
          statuscode    := 401,
          statustext    := "Unauthorized"
      } // End of template mw_http_response_401_unauthorized
      
      template Response mw_http_response_403_forbidden(
                                                       template HttpMessageBody p_body  := *,
                                                       template (present) Headers p_header := ?
      ) modifies mw_http_response_ko := {
          statuscode    := 403,
          statustext    := "Forbidden"
      } // End of template mw_http_response_403_forbidden
      
      template Response mw_http_response_404_not_found(
                                                       template HttpMessageBody p_body  := *,
                                                       template (present) Headers p_header := ?
      ) modifies mw_http_response_ko := {
          statuscode    := 404,
          statustext    := "Not Found"
      } // End of template mw_http_response_404_not_found
      
      template Response mw_http_response_412_precondition_failed(
                                                                 template HttpMessageBody p_body  := *,
                                                                 template (present) Headers p_header := ?
      ) modifies mw_http_response_ko := {
          statuscode    := 412,
          statustext    := "Precondition Failed"
      } // End of template mw_http_response_412_not_found
      
    } // 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
+75 −0
Original line number Diff line number Diff line
/**
 *    @author   ETSI / STF545
 *    @version  $URL$
 *              $ID:$
 *    @desc     This module provides the types and values used by 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_TypesAndValues {
    
    // LibHttp
    import from LibItsHttp_MessageBodyTypes all;
    import from LibItsHttp_Pics all;
    
    const charstring c_header_host := "Host";
    const charstring c_header_content_type := "Content-Type";
    const charstring c_header_content_text := "Content-Text";
    const charstring c_header_content_length := "Content-Length";
    const charstring c_header_accept := "Accept";
    const charstring c_header_connection := "Connection";
    const charstring c_header_pragma := "Pragma";
    const charstring c_header_cache_control := "Cache-Control";
    const charstring c_header_authorization := "Authorization";
    
    const integer c_http_version_major := PICS_HTTP_VERSION_MAJOR;
    const integer c_http_version_minor := PICS_HTTP_VERSION_MINOR;
    
    type record of charstring charstring_list;
    type record Header {
      charstring        header_name,
      charstring_list   header_value optional
    } with { 
        variant "FIELDORDER(msb)" 
    }
    
    type record of Header Headers;
    
    type record Request {
      charstring method,
      charstring uri,
      integer version_major,
      integer version_minor,
      Headers header,
      HttpMessageBody body optional
    } with { 
        variant "FIELDORDER(msb)" 
    }
    
    type record Response {
      integer version_major,
      integer version_minor,
      integer statuscode,
      charstring statustext,
      Headers header,
      HttpMessageBody body optional,
      boolean tls optional,
      boolean mutual_tls optional
    } with { 
        variant "FIELDORDER(msb)" 
    }
    
    type union HttpMessage {
      Response response,
      Request request
    } with { 
        variant "" 
    }
    
} with {
        variant ""
        encode "HttpCodec"
} // End of module LibItsHttp_TypesAndValues