Subversion Repositories HomeAutomation

Rev

Rev 1898 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed

  1.  
  2. Http_Buffers = {};
  3.  
  4. function Http_Request(url, callback)
  5. {
  6.   var parsed_url = Http_ParseUrl(url);
  7.  
  8.   var socket_id = Socket_Connect(parsed_url["host"], parsed_url["port"], function(socket_id, data)
  9.   {
  10.     ///FIXME: This is a bit ugly code... also not fully HTTP/1.1 compliant look at http://www.jmarshall.com/easy/http/
  11.  
  12.     Http_Buffers[socket_id] += data;
  13.    
  14.   }, function(socket_id, state)
  15.   {
  16.     if (state == SOCKET_STATE_CONNECTED)
  17.     {
  18.       var data = Http_Buffers[socket_id];
  19.      
  20.       delete Http_Buffers[socket_id];
  21.      
  22.       var pos = data.indexOf("\r\n\r\n");
  23.  
  24.       var header_data = data.substr(0, pos);
  25.       var content_data = data.substr(pos+2);
  26.  
  27.       var header_lines = header_data.split("\r\n");
  28.  
  29.       var header = [];
  30.       var result = header_lines[0];
  31.  
  32.       for (var n = 1; n < header_lines.length; n++)
  33.       {
  34.     var header_parts = header_lines[n].split(":", 2);
  35.     header[header_parts[0]] = header_parts[1].trim(' ');
  36.       }
  37.  
  38.       callback(socket_id, result, header, content_data);
  39.     }
  40.   });
  41.  
  42.   if (socket_id > 0)
  43.   {
  44.       var request = "";
  45.      
  46.       Http_Buffers[socket_id] = "";
  47.  
  48.       request = "GET " + parsed_url['path'] + " HTTP/1.1\r\n";
  49.       request += "Host: " + parsed_url['host'] + ":" + parsed_url['port'] + "\r\n";
  50.       request += "User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090730 SUSE/3.5.2-1.1 Firefox/3.5.2\r\n";
  51.       request += "Connection: close\r\n";
  52.       request += "\r\n";
  53.  
  54.       Socket_Send(socket_id, request);
  55.   }
  56.   else
  57.   {
  58.     Log("Could not connect to " + url + "\n");
  59.   }
  60.  
  61.   return socket_id;
  62. }
  63.  
  64. function Http_ParseUrl(url)
  65. {
  66.     var result = {};
  67.     result['port'] = 80;
  68.     result['path'] = "/";
  69.  
  70.     var firstSlash = url.indexOf('/');
  71.    
  72.     if (firstSlash == -1)
  73.     {
  74.         result['host'] = url;
  75.     }
  76.     else
  77.     {
  78.         result['host'] = url.substr(0, firstSlash);
  79.         result['path'] = url.substr(firstSlash);
  80.     }
  81.    
  82.     var firstColon = result['host'].indexOf(':');
  83.    
  84.     if (firstColon != -1)
  85.     {
  86.         result['port'] = result['host'].substr(firstColon+1);
  87.         result['host'] = result['host'].substr(0, firstColon);
  88.     }
  89.  
  90.     return result;
  91. }
  92.