Subversion Repositories HomeAutomation

Rev

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


Http_Buffers = {};

function Http_Request(url, callback)
{
  var parsed_url = Http_ParseUrl(url);
  
  var socket_id = Socket_Connect(parsed_url["host"], parsed_url["port"], function(socket_id, data)
  {
    ///FIXME: This is a bit ugly code... also not fully HTTP/1.1 compliant look at http://www.jmarshall.com/easy/http/

    Http_Buffers[socket_id] += data;
    
  }, function(socket_id, state)
  {
    if (state == 1)
    {
      var data = Http_Buffers[socket_id];
      
      delete Http_Buffers[socket_id];
      
      var pos = data.indexOf("\r\n\r\n");

      var header_data = data.substr(0, pos);
      var content_data = data.substr(pos+2);

      var header_lines = header_data.split("\r\n");

      var header = [];
      var result = header_lines[0];

      for (var n = 1; n < header_lines.length; n++)
      {
    var header_parts = header_lines[n].split(":", 2);
    header[header_parts[0]] = header_parts[1].trim(' ');
      }

      callback(socket_id, result, header, content_data);
    }
  });
  
  if (socket_id > 0)
  {
      var request = "";
      
      Http_Buffers[socket_id] = "";

      request = "GET " + parsed_url['path'] + " HTTP/1.1\r\n";
      request += "Host: " + parsed_url['host'] + ":" + parsed_url['port'] + "\r\n";
      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";
      request += "Connection: close\r\n";
      request += "\r\n";

      Socket_Send(socket_id, request);
  }
  else
  {
    Log("Could not connect to " + url + "\n");
  }
  
  return socket_id;
}

function Http_ParseUrl(url)
{
    var result = {};
    result['port'] = 80;
    result['path'] = "/";

    var firstSlash = url.indexOf('/');
    
    if (firstSlash == -1)
    {
        result['host'] = url;
    }
    else
    {
        result['host'] = url.substr(0, firstSlash);
        result['path'] = url.substr(firstSlash);
    }
    
    var firstColon = result['host'].indexOf(':');
    
    if (firstColon != -1)
    {
        result['port'] = result['host'].substr(firstColon+1);
        result['host'] = result['host'].substr(0, firstColon);
    }

    return result;
}