第六日目 サブルーチン





//------------------------------------------------------------

// サブルーチン

//------------------------------------------------------------







// HTTPヘッダーを返す関数

void getHeader(char* header, int statusCode, int length){



 // 現在の時間関連変数

 time_t timeNow;

 char strNow[60];



 // 送信ヘッダ関連変数

 char message[1024];

 char contentType[1024];

 char format[HTTP_HEADER_SIZE];



 // 現在の時間を取得

 time(&timeNow);

 strftime(strNow, sizeof(strNow),

   "%a, %d %b %Y %H:%M:%S GMT",

   gmtime(&timeNow));



 // エラーヘッダーの作成

 strcpy(contentType, "text/html");

 switch (statusCode){

 case (200):

  strcpy(message, "HTTP/1.1 200 OK");

  strcpy(contentType, "application/rss+xml");

  break;

 case (404):

  strcpy(message, "HTTP/1.1 404 Not Found");

  break;

 case (501):

  strcpy(message, "HTTP/1.0 501 Not Implemented");

  break;

 default:

  strcpy(message, "HTTP/1.1 404 Not Found");

  break;

 }



 // ヘッダーを作成

 strcpy(format,

     "%s\r\n"

     "Date: %s\r\n"

     "Content-Length: %d\r\n"

     "Last-Modified: %s\r\n"

     "Content-Type: %s\r\n"

    "Accept-Charset: utf-8\r\n"

     "\r\n"

  );



  sprintf(header, format, message,

              strNow,

              length,

              strNow,

              contentType);




  return;

}



// エラーデータを返す関数

void getError(WSCstring& contentBuffer, int statusCode) {

 switch (statusCode){

 case (404):

  contentBuffer = "404 Not Found";

  break;

 case (501):

  contentBuffer = "501 Not Implemented";

  break;

 default:

  contentBuffer = "404 Not Found";

  break;

 }



 return;

}



// RSSデータを返す関数

void getRss(WSCstring& rssBuffer, WSCstring* pPath) {

 // 固定のデータを設定

 rssBuffer.setString(

   "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"

   "<rss version=\"2.0\">\r\n"

   "<channel>\r\n"

    " <title>RSS配信</title>\r\n"

   " <description>固定の文字を配信する。</description>\r\n"

   " <link>http://localhost</link>\r\n"

   " <lastBuildDate>Wed, 21 Oct 2009 16:28:16 GMT</lastBuildDate>\r\n"

   " <pubDate>Wed, 21 Oct 2009 16:28:16 GMT</pubDate>\r\n"

   " <generator>rss generator v0.1</generator>\r\n"

   " <docs>http://localhost</docs>\r\n"

   " <language>ja</language>\r\n"

   " <item>\r\n"

  "</channel>\r\n"

   "</rss>");





 return;

}





補足



  現状では、固定の情報。

  いろいろ変更できるといいな。