Source Code for Me (s-c.me)

Allows you to paste souce code to blogs! Adapted for Twitter! Here is Search Form in case you missed your code.
Code:
Selected Language:
Show Linenumbers:
Short link for Twitter:
HTML:

HTML view:

Copy Source | Copy HTML
  1. string FilePath = "www/" + RequestUri;
  2. // Если в папке www не существует данного файла, посылаем ошибку 404
  3. if (!File.Exists(FilePath))
  4. {
  5.     SendError(Client, 404);
  6.     return;
  7. }
  8. // Получаем расширение файла из строки запроса
  9. string Extension = RequestUri.Substring(RequestUri.LastIndexOf('.'));
  10. // Тип содержимого
  11. string ContentType = "";
  12. // Пытаемся определить тип содержимого по расширению файла
  13. switch (Extension)
  14. {
  15.     case ".htm":
  16.     case ".html":
  17.         ContentType = "text/html";
  18.         break;
  19.     case ".css":
  20.         ContentType = "text/stylesheet";
  21.         break;
  22.     case ".js":
  23.         ContentType = "text/javascript";
  24.         break;
  25.     case ".jpg":
  26.         ContentType = "image/jpeg";
  27.         break;
  28.     case ".jpeg":
  29.     case ".png":
  30.     case ".gif":
  31.         ContentType = "image/" + Extension.Substring(1);
  32.         break;
  33.     default:
  34.         if (Extension.Length > 1)
  35.         {
  36.             ContentType = "application/" + Extension.Substring(1);
  37.         }
  38.         else
  39.         {
  40.             ContentType = "application/unknown";
  41.         }
  42.         break;
  43. }
  44. // Открываем файл, страхуясь на случай ошибки
  45. FileStream FS;
  46. try
  47. {
  48.     FS = new FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
  49. }
  50. catch (Exception)
  51. {
  52.     // Если случилась ошибка, посылаем клиенту ошибку 500
  53.     SendError(Client, 500);
  54.     return;
  55. }
  56. // Посылаем заголовки
  57. string Headers = "HTTP/1.1 200 OK\nContent-Type: " + ContentType + "\nContent-Length: " + FS.Length + "\n\n";
  58. byte[] HeadersBuffer = Encoding.ASCII.GetBytes(Headers);
  59. Client.GetStream().Write(HeadersBuffer, 0, HeadersBuffer.Length);
  60. // Пока не достигнут конец файла
  61. while (FS.Position < FS.Length)
  62. {
  63.     // Читаем данные из файла
  64.     Count = FS.Read(Buffer, 0, Buffer.Length);
  65.     // И передаем их клиенту
  66.     Client.GetStream().Write(Buffer, 0, Count);
  67. }
  68. // Закроем файл и соединение
  69. FS.Close();
  70. Client.Close();




Based on Manoli.Net's CodeFormatter. Made by Topbot (c) 2008-2018