Subversion Repositories HomeAutomation

Rev

Rev 1959 | Details | Compare with Previous | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
1898 runge 1
 
2
Http_Buffers = {};
3
 
4
function Http_Request(url, callback)
5
{
6
  var parsed_url = Http_ParseUrl(url);
2091 runge 7
 
1898 runge 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;
2091 runge 13
 
1898 runge 14
  }, function(socket_id, state)
15
  {
2091 runge 16
    if (state == SOCKET_STATE_DISCONNECTED)
1898 runge 17
    {
18
      var data = Http_Buffers[socket_id];
2091 runge 19
 
1898 runge 20
      delete Http_Buffers[socket_id];
2091 runge 21
 
1898 runge 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
      {
2091 runge 34
        var header_parts = header_lines[n].split(":", 2);
35
        header[header_parts[0]] = header_parts[1].trim(' ');
1898 runge 36
      }
37
 
38
      callback(socket_id, result, header, content_data);
39
    }
40
  });
2091 runge 41
 
1898 runge 42
  if (socket_id > 0)
43
  {
44
      var request = "";
2091 runge 45
 
1898 runge 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
  }
2091 runge 60
 
1898 runge 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('/');
2091 runge 71
 
1898 runge 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
    }
2091 runge 81
 
1898 runge 82
    var firstColon = result['host'].indexOf(':');
2091 runge 83
 
1898 runge 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
}