///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Copyright (c) 2000-2018 Ericsson Telecom AB                               //
//                                                                           //
// All rights reserved. This program and the accompanying materials          //
// are made available under the terms of the Eclipse Public License v2.0     //
// which accompanies this distribution, and is available at                  //
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html                                 //
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////
//  Module: EPTF_CLL_DsRestAPI_HTTPServer_Definitions
// 
//  Purpose:
//    This module contains definitions of EPTF_CLL_DsRestAPI_HTTPServer.
// 
//  Module depends on:
//    <IPL4asp_Types>
//    <IPL4asp_PortType>
//    <EPTF_CLL_Base_Definitions>
//    <EPTF_CLL_DsRestAPI_DSServer_Definitions>
//    <EPTF_CLL_Common_Definitions>
// 
//  Current Owner:
//    Tamas Kis (ekistam)
// 
//  Last Review Date:
//    -
//
//  Detailed Comments:
//    The HTTP server supports the following HTTP methods:
//      - GET - method used for getting files (standard GET method)
//      - HEAD - standard HEAD method
//      - POST - standard POST method (used in the REST API)
//      - PUT - methd used to save files (standard PUT method)
//      - LSDIR - method used to get the contents of a directory
//      - MKDIR - method used to create a directory
//      - RMDIR - method used to delete directories or files
//
///////////////////////////////////////////////////////////////
module EPTF_CLL_DsRestAPI_HTTPServer_Definitions
{
import from IPL4asp_Types all;
import from IPL4asp_PortType all;
import from EPTF_CLL_Base_Definitions all;
import from EPTF_CLL_DsRestAPI_DSServer_Definitions all;
import from EPTF_CLL_Common_Definitions all;

friend module EPTF_CLL_DsRestAPI_HTTPServer_Functions;

private const charstring cg_EPTF_DsRestAPI_HTTPServer_mainHtml := "/Main.html";
friend const charstring cg_EPTF_DsRestAPI_Browser_chunk_FromConnId_HashMapName := "EPTF_DsRestAPI_Browser_chunk_FromConnId_HashMapName"
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_GET := "GET";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_HEAD := "HEAD";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_POST := "POST";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_PUT := "PUT";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_LSDIR := "LSDIR";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_MKDIR := "MKDIR";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_RMDIR := "RMDIR";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_OPTIONS := "OPTIONS";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_SP := " ";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_FS := ":";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_Dot := ".";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_Slash := "/";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLF := "\r\n";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLFCRLF := "\r\n\r\n";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_HTTP10VER := "HTTP/1.0";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_HTTP11VER := "HTTP/1.1";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_ServerHdr := "Server: EPTF_CLL_DsRestAPI";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_ContentLength_Name := "Content-Length";
friend const charstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_ContentType_Name := "Content-Type";
friend const octetstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_Dot_oct := '2E'O;
friend const octetstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLF_oct := '0D0A'O;
friend const octetstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLFCRLF_oct := '0D0A0D0A'O;
friend const octetstring cg_EPTF_DsRestAPI_HTTPServer_HTTP_ContentLength_Name_oct := '436f6E74656E742d4C656E677468'O;
friend const charstring cg_EPTF_DsRestAPI_CORSAccessHeaders := "Access-Control-Allow-Origin: *"
    & cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLF
    & "Access-Control-Allow-Methods: GET, HEAD, POST, PUT"
    & cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLF
    & "Access-Control-Allow-Credentials: true"
    & cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLF
    & "Access-Control-Allow-Headers: Accept, Accept-Encoding, Accept-Language, Allow, Connection, Content-Type, Origin, Referer, User-Agent"
    & cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLF 
    & "Access-Control-Expose-Headers: Content-Length, Content-Type, Server";
friend const charstring cg_EPTF_DsRestAPI_HTTPHeaderChunk01 := cg_EPTF_DsRestAPI_HTTPServer_HTTP_HTTP11VER & cg_EPTF_DsRestAPI_HTTPServer_HTTP_SP;
friend const charstring cg_EPTF_DsRestAPI_HTTPHeaderChunk02 := cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLF & cg_EPTF_DsRestAPI_HTTPServer_HTTP_ContentLength_Name & cg_EPTF_DsRestAPI_HTTPServer_HTTP_FS & cg_EPTF_DsRestAPI_HTTPServer_HTTP_SP;
friend const charstring cg_EPTF_DsRestAPI_HTTPHeaderChunk03 := cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLF & cg_EPTF_DsRestAPI_HTTPServer_HTTP_ContentType_Name & cg_EPTF_DsRestAPI_HTTPServer_HTTP_FS & cg_EPTF_DsRestAPI_HTTPServer_HTTP_SP;
friend const charstring cg_EPTF_DsRestAPI_HTTPHeaderChunk04 := cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLF & cg_EPTF_DsRestAPI_HTTPServer_HTTP_ServerHdr & cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLF & cg_EPTF_DsRestAPI_CORSAccessHeaders & cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLF & cg_EPTF_DsRestAPI_HTTPServer_HTTP_CRLF;

/////////////////////////////////////////////////////////////////////////////  
//  Type: EPTF_DsRestAPI_HTTPServer_CT
//
//  Purpose:
//    The HTTP Server UI Model component
//
//  Extensions:
//    EPTF_Base_CT, EPTF_DsRestAPI_DSServer_CT
//
//  Variables:    
//    - v_DsRestAPI_HTTPServer_initialized - *boolean* - represents if HTTP Server is initialized
//    - v_DsRestAPI_HTTPServer_mainHandler - *default* - main handler default altstep
//    - v_EPTF_DsRestAPI_HTTPServer_directory - *charstring* - directory of HTTP Server
//    - v_EPTF_DsRestAPI_HTTPServer_path - *charstring* - path to HTTP Server
//    - v_EPTF_DsRestAPI_HTTPServer_mainHtml - *charstring* - path to main page
//    - v_EPTF_DsRestAPI_Browser_chunk - <EPTF_OctetstringList> -  browser chunk
//    - v_EPTF_DsRestAPI_Browser_chunk_FromConnId_Hash - *integer* - hash for browser chunk
//    - v_EPTF_DsRestAPI_Browser_chunk_FromConnId_Queue - *integer* - queue of browser chunk
//    - v_DsRestAPI_HTTPServer_IPL4_PCO_PT - <IPL4asp_PT> - port to send HTTP messages
//    - v_ConnId - <ConnectionId> - connection id of DsRestAPI HTTP server
//
//  Ports:  
//    -
//  Function types:
//    -
//
//  Detailed Comments:
//      -
/////////////////////////////////////////////////////////////////////////////
type component EPTF_DsRestAPI_HTTPServer_CT extends EPTF_Base_CT, EPTF_DsRestAPI_DSServer_CT
{
  private var boolean v_DsRestAPI_HTTPServer_initialized := false;
  private var default v_DsRestAPI_HTTPServer_mainHandler := null;
  private var charstring v_EPTF_DsRestAPI_HTTPServer_directory;
  private var charstring v_EPTF_DsRestAPI_HTTPServer_path;
  private var charstring v_EPTF_DsRestAPI_HTTPServer_mainHtml := cg_EPTF_DsRestAPI_HTTPServer_mainHtml;
  private var EPTF_OctetstringList v_EPTF_DsRestAPI_Browser_chunk := {};
  private var integer v_EPTF_DsRestAPI_Browser_chunk_FromConnId_Hash := -1;
  private var integer v_EPTF_DsRestAPI_Browser_chunk_FromConnId_Queue := -1;
  private var integer v_EPTF_DsRestAPI_Browser_Buffer_FBQ := -1;
  private var EPTF_DsRestAPI_HTTPServer_ListOfMessages v_EPTF_DsRestAPI_Browser_Buffer_Messages := {};
  private var boolean v_EPTF_DsRestAPI_Browser_Buffer_dropAll := true;
  private var integer v_EPTF_DsRestAPI_Browser_Buffer_maxSize := 20;
  private port IPL4asp_PT v_DsRestAPI_HTTPServer_IPL4_PCO_PT;
  private var ConnectionId v_EPTF_DsRestAPI_HTTPServer_connId := -1;
  private timer t_bufferTimer := 0.0;
}

friend type record EPTF_DsRestAPI_HTTPServer_BufferItem {
  octetstring request,
  integer connId
}

friend type record of EPTF_DsRestAPI_HTTPServer_BufferItem EPTF_DsRestAPI_HTTPServer_ListOfMessages;

///////////////////////////////////////////////////////////////////////////////
// Type: EPTF_DsRestAPI_HTTPServer_FileInfo
//
// Purpose:
//   Type for HTTP Server File Info
//
// Elements:
//   - fileName - *charstring* - the name of the file
//   - contentType - *charstring* - the type of content
//   - size - *charstring* - the size of the file
//   - timestamp - *charstring* - the timestamp of the file
//       
///////////////////////////////////////////////////////////////////////////////
friend type record EPTF_DsRestAPI_HTTPServer_FileInfo {
  charstring fileName,
  charstring contentType,
  integer size,
  integer timestamp
} with {
  variant(fileName) "JSON:name as fileName";
  variant(contentType) "JSON:name as contentType";
  variant(size) "JSON:name as size";
  variant(timestamp) "JSON:name as timestamp";
}

///////////////////////////////////////////////////////////
// Type: EPTF_DsRestAPI_HTTPServer_FileInfoList
//
// Purpose:
//   Type for storing list of <EPTF_DsRestAPI_HTTPServer_FileInfo> items
//
// Elements:
//   <EPTF_DsRestAPI_HTTPServer_FileInfo>
///////////////////////////////////////////////////////////
friend type record of EPTF_DsRestAPI_HTTPServer_FileInfo EPTF_DsRestAPI_HTTPServer_FileInfoList;

///////////////////////////////////////////////////////////////////////////////
// Type: EPTF_DsRestAPI_HTTPServer_FileInfoList_Wrapper
//
// Purpose:
//   Type for wrapping file info lists
//
// Elements:
//   - fileList - <EPTF_DsRestAPI_HTTPServer_FileInfoList> - list of file info
//       
///////////////////////////////////////////////////////////////////////////////
friend type record EPTF_DsRestAPI_HTTPServer_FileInfoList_Wrapper {
  EPTF_DsRestAPI_HTTPServer_FileInfoList fileList
} with { variant(fileList) "JSON: name as fileList"; }

} // ~ module EPTF_DsRestAPI_HTTPServer_Definitions
