mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-18 05:18:39 +08:00
92 lines
3.4 KiB
TypeScript
92 lines
3.4 KiB
TypeScript
/**
|
|
* iOS specific http client implementation.
|
|
*/
|
|
|
|
import image_module = require("Image/image");
|
|
import promises = require("promises/promises");
|
|
|
|
export class http {
|
|
/**
|
|
* Gets string from url.
|
|
*/
|
|
public static getString(url : string) : promises.Promise {
|
|
var d = new promises.Deferred();
|
|
http.get(url, r => d.resolve(Foundation.NSString.initWithDataEncoding(r, 4).toString()), e => d.reject(e));
|
|
return d.promise();
|
|
}
|
|
|
|
/**
|
|
* Gets JSON from url.
|
|
*/
|
|
public static getJSON(url: string) : promises.Promise {
|
|
var d = new promises.Deferred();
|
|
http.get(url, r => d.resolve(JSON.parse(Foundation.NSString.initWithDataEncoding(r, 4).toString())), e => d.reject(e));
|
|
return d.promise();
|
|
}
|
|
|
|
/**
|
|
* Gets image from url.
|
|
*/
|
|
public static getImage(url: string) : promises.Promise {
|
|
var d = new promises.Deferred();
|
|
http.get(url, r => {
|
|
var image = new image_module.Image();
|
|
image.loadFromData(r);
|
|
d.resolve(image);
|
|
}, e => d.reject(e));
|
|
return d.promise();
|
|
}
|
|
|
|
private static get(url: string, successCallback: (result: any) => void, errorCallback?: (e: Error) => void) {
|
|
try {
|
|
var sessionConfig = Foundation.NSURLSessionConfiguration.defaultSessionConfiguration();
|
|
var queue = Foundation.NSOperationQueue.mainQueue();
|
|
var session = Foundation.NSURLSession.sessionWithConfigurationDelegateDelegateQueue(sessionConfig, null, queue);
|
|
var dataTask = session.dataTaskWithURLCompletionHandler(Foundation.NSURL.URLWithString(url), function (data, response, error) {
|
|
if (error) {
|
|
if (errorCallback) {
|
|
errorCallback(new Error(error.localizedDescription()));
|
|
}
|
|
} else if (successCallback) {
|
|
successCallback(data);
|
|
}
|
|
});
|
|
|
|
dataTask.resume();
|
|
session.finishTasksAndInvalidate();
|
|
} catch (ex) {
|
|
if (errorCallback) {
|
|
errorCallback(ex);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static post(url: string, postData: string, successCallback?: (result: any) => void, errorCallback?: (e: Error) => void) {
|
|
try {
|
|
var sessionConfig = Foundation.NSURLSessionConfiguration.defaultSessionConfiguration();
|
|
var queue = Foundation.NSOperationQueue.mainQueue();
|
|
var session = Foundation.NSURLSession.sessionWithConfigurationDelegateDelegateQueue(sessionConfig, null, queue);
|
|
|
|
var urlRequest = Foundation.NSMutableURLRequest.requestWithURL(Foundation.NSURL.URLWithString(url));
|
|
urlRequest.setHTTPMethod("POST");
|
|
urlRequest.setHTTPBody(Foundation.NSString.initWithString(postData).dataUsingEncoding(4));
|
|
|
|
var dataTask = session.dataTaskWithRequestCompletionHandler(urlRequest, function (data, response, error) {
|
|
if (error) {
|
|
if (errorCallback) {
|
|
errorCallback(new Error(error.localizedDescription()));
|
|
}
|
|
} else if (successCallback) {
|
|
successCallback(data);
|
|
}
|
|
});
|
|
|
|
dataTask.resume();
|
|
} catch (ex) {
|
|
if (errorCallback) {
|
|
errorCallback(ex);
|
|
}
|
|
}
|
|
}
|
|
}
|