mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-24 18:23:40 +08:00
http refactored to fix circular references
This commit is contained in:
51
net/http_request.android.ts
Normal file
51
net/http_request.android.ts
Normal file
@ -0,0 +1,51 @@
|
||||
/**
|
||||
* Android specific http client implementation.
|
||||
*/
|
||||
import app_module = require("Application/application");
|
||||
import image_module = require("Image/image");
|
||||
import promises = require("promises/promises");
|
||||
import http = require("net/http_request");
|
||||
|
||||
// TODO: Replace with similar to iOS implementation!
|
||||
export function request(options: http.HttpRequestOptions): promises.Promise<http.HttpResponse> {
|
||||
var d = promises.defer<http.HttpResponse>();
|
||||
|
||||
try {
|
||||
var headers = new com.koushikdutta.async.http.libcore.RawHeaders();
|
||||
|
||||
if (options.headers && options.headers.length) {
|
||||
for (var i = 0, l = options.headers.length; i < l; i++) {
|
||||
var header = options.headers[i];
|
||||
headers.add(header.name, header.value)
|
||||
}
|
||||
}
|
||||
|
||||
var isImage = options.url.match(/\.(jpeg|jpg|gif|png)$/i) != null;
|
||||
|
||||
var context = app_module.Application.current.android.context;
|
||||
var request = com.koushikdutta.ion.Ion.with(context, options.url);
|
||||
|
||||
request = isImage ? request.asBitmap() : request.asString();
|
||||
|
||||
request.setCallback(new com.koushikdutta.async.future.FutureCallback({
|
||||
onCompleted: function (error, data) {
|
||||
if (error) {
|
||||
d.reject(error);
|
||||
} else {
|
||||
d.resolve({
|
||||
content: {
|
||||
toString: () => { return data },
|
||||
toJSON: () => { return JSON.parse(data) },
|
||||
toImage: () => { return image_module.Image.imageFromNativeBitmap(data); }
|
||||
},
|
||||
statusCode: 0,
|
||||
headers: []
|
||||
});
|
||||
}
|
||||
}
|
||||
}));
|
||||
} catch (ex) {
|
||||
d.reject(ex);
|
||||
}
|
||||
return d.promise();
|
||||
}
|
Reference in New Issue
Block a user