readme update + fixes

This commit is contained in:
Vladimir Enchev
2014-04-24 12:10:44 +03:00
parent e9c82ebedc
commit 13508e84fa
3 changed files with 66 additions and 16 deletions

View File

@ -1,6 +1,67 @@
Sample code: Sample code:
```js ```js
var http = require("net"); var http = require("net");
// Universal request method. You can use HttpRequestOptions to set varios properties, HttpHeader to get/set desired headers, HttpResponse to get status code, headers and content and
// HttpContent to get/set body for request/response:
interface HttpRequestOptions {
url: string;
method: string;
headers?: HttpHeader[];
content?: HttpContent;
}
interface HttpHeader {
name: string;
value: string;
}
interface HttpResponse {
statusCode: number;
headers: HttpHeader[];
content?: HttpContent;
}
interface HttpContent {
toString: () => string;
toJSON: () => any;
toImage: () => image_module.Image;
}
// Get request
http.request({
url: "http://ip.jsontest.com/",
method: "GET",
headers: [{ name: "Content-Type", value: "application/json" }]
}).then(function (r) {
var status = r.statusCode;
for (var i = 0, l = r.headers.length; i < l; i++) {
var header = r.headers[i];
}
var result = r.content.toJSON();
}).fail(function (e) { });
// Post request
http.request({
url: "http://posttestserver.com/post.php?dump&html&dir=test",
method: "POST",
headers: [{ name: "Content-Type", value: "application/x-www-form-urlencoded" }],
content: "MyVariableOne=ValueOne&MyVariableTwo=ValueTwo"
}).then(function (r) {
log("Status code:" + r.statusCode);
for (var i = 0, l = r.headers.length; i < l; i++) {
var header = r.headers[i];
log(header.name + ":" + header.value);
}
log("Content:" + r.content.toString())
}).fail(function (e) { log(e) });
http.getString("http://www.reddit.com/").then(function(result) { http.getString("http://www.reddit.com/").then(function(result) {
// Result is string! // Result is string!
@ -14,16 +75,4 @@
// Result is tk.ui.Image! // Result is tk.ui.Image!
}).fail(function(e) { console.log("Error:" + e.message); }); }).fail(function(e) { console.log("Error:" + e.message); });
http.request({ url: "http://www.reddit.com/r/aww.json?limit=10", method: "GET" }).then(function(r) {
console.log("Status code:" + r.statusCode);
for (var i = 0, l = r.headers.length; i < l; i++) {
var header = r.headers[i];
console.log(header.name + ":" + header.value);
}
console.log("Content:" + r.content.toString()); // You can use also toJSON() and toImage() to convert the content.
}).fail(function(e) { console.log("Error:" + e.message); });
``` ```

View File

@ -10,7 +10,7 @@ export interface HttpRequestOptions {
url: string; url: string;
method: string; method: string;
headers?: HttpHeader[]; headers?: HttpHeader[];
content?: HttpContent; content?: any;
} }
export interface HttpHeader { export interface HttpHeader {

View File

@ -27,8 +27,9 @@ export function request(options: http.HttpRequestOptions): promises.Promise<http
} }
} }
var content = options.content ? options.content.toString() : ""; if (typeof options.content == "string") {
urlRequest.setHTTPBody(Foundation.NSString.initWithString(content).dataUsingEncoding(4)); urlRequest.setHTTPBody(Foundation.NSString.initWithString(options.content).dataUsingEncoding(4));
}
var dataTask = session.dataTaskWithRequestCompletionHandler(urlRequest, var dataTask = session.dataTaskWithRequestCompletionHandler(urlRequest,
function (data, response, error) { function (data, response, error) {
@ -52,7 +53,7 @@ export function request(options: http.HttpRequestOptions): promises.Promise<http
toJSON: () => { return JSON.parse(NSDataToString(data)); }, toJSON: () => { return JSON.parse(NSDataToString(data)); },
toImage: () => { return image.Image.imageFromData(data); } toImage: () => { return image.Image.imageFromData(data); }
}, },
statusCode: response.statusCode, statusCode: response.statusCode(),
headers: headers headers: headers
}); });
} }