Upstream version 9.37.197.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Tools / GardeningServer / scripts / net.js
1 /*
2  * Copyright (C) 2011 Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 var net = net || {};
27
28 (function () {
29
30 net.get = function(url)
31 {
32     return net.ajax({
33         url: url
34     });
35 };
36
37 net.json = function(url)
38 {
39     return net.ajax({
40         url: url,
41         parse: function(xhr) {
42             return JSON.parse(xhr.responseText);
43         }
44     });
45 };
46
47 net.xml = function(url)
48 {
49     return net.ajax({
50         url: url,
51         parse: function(xhr) {
52             return xhr.responseXML;
53         }
54     });
55 };
56
57 net.ajax = function(options)
58 {
59     return new Promise(function(resolve, reject) {
60         var xhr = new XMLHttpRequest();
61         var method = options.type || 'GET';
62         var async = true;
63         xhr.open(method, options.url, async);
64         xhr.onload = function() {
65             if (xhr.status == 200) {
66                 if (options.parse)
67                     resolve(options.parse(xhr));
68                 else
69                     resolve(xhr.responseText);
70             }
71             else if (xhr.status != 200)
72                 reject(Error(xhr.statusText));
73         };
74         xhr.onerror = function(error) {
75             reject(error);
76         };
77         var data = options.data || null;
78         if (data)
79             xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
80         xhr.send(data);
81     });
82 };
83
84 net.post = function(url, data)
85 {
86     return net.ajax({
87         url: url,
88         type: 'POST',
89         data: data,
90     });
91
92 };
93
94 net.probe = function(url)
95 {
96     return net.ajax({
97         url: url,
98         type: 'HEAD',
99     });
100 };
101
102 // We use XMLHttpRequest and CORS to fetch JSONP rather than using script tags.
103 // That's better for security and performance, but we need the server to cooperate
104 // by setting CORS headers.
105 net.jsonp = function(url)
106 {
107     return net.ajax({
108         url: url,
109     }).then(function(jsonp) {
110         return base.parseJSONP(jsonp);
111     }).catch(function(error) {
112         return {};
113     });
114 };
115
116 })();