Ready for testing
This commit is contained in:
parent
4df82a0507
commit
dc98b01eba
14
build/typertext.d.ts
vendored
14
build/typertext.d.ts
vendored
|
@ -140,22 +140,22 @@ declare module Typertext.Json {
|
|||
}
|
||||
}
|
||||
declare module Typertext.Transport {
|
||||
interface GenericTransport {
|
||||
RawRequest(method: Http.HttpMethod, request: Http.HttpUrl, postData: Http.HttpPostData, callback: Http.HttpResponseHandler): void;
|
||||
class GenericTransport {
|
||||
constructor(method: Http.HttpMethod, request: Http.HttpUrl, postData: Http.HttpPostData, callback: Http.HttpResponseHandler);
|
||||
}
|
||||
}
|
||||
declare module Typertext.Transport {
|
||||
class TransportChooser {
|
||||
static GetTransport(method: Http.HttpMethod, request: Http.HttpUrl): GenericTransport;
|
||||
static GetTransport(method: Http.HttpMethod, request: Http.HttpUrl, postData: Http.HttpPostData, callback: Http.HttpResponseHandler): GenericTransport;
|
||||
}
|
||||
}
|
||||
declare module Typertext.Transport {
|
||||
class XDR implements GenericTransport {
|
||||
public RawRequest(method: Http.HttpMethod, request: Http.HttpUrl, postData?: Http.HttpPostData, callback?: Http.HttpResponseHandler): void;
|
||||
class XDR extends GenericTransport {
|
||||
constructor(method: Http.HttpMethod, request: Http.HttpUrl, postData?: Http.HttpPostData, callback?: Http.HttpResponseHandler);
|
||||
}
|
||||
}
|
||||
declare module Typertext.Transport {
|
||||
class XHR implements GenericTransport {
|
||||
public RawRequest(method: Http.HttpMethod, request: Http.HttpUrl, postData?: Http.HttpPostData, callback?: Http.HttpResponseHandler): void;
|
||||
class XHR extends GenericTransport {
|
||||
constructor(method: Http.HttpMethod, request: Http.HttpUrl, postData?: Http.HttpPostData, callback?: Http.HttpResponseHandler);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -117,7 +117,7 @@ var Typertext;
|
|||
if (typeof postData === "undefined") { postData = {}; }
|
||||
if (typeof callback === "undefined") { callback = function (c) {
|
||||
}; }
|
||||
Typertext.Transport.TransportChooser.GetTransport(method, request).RawRequest(method, request, postData, callback);
|
||||
Typertext.Transport.TransportChooser.GetTransport(method, request, postData, callback);
|
||||
};
|
||||
return HttpRequest;
|
||||
})();
|
||||
|
@ -354,6 +354,12 @@ var Typertext;
|
|||
var Typertext;
|
||||
(function (Typertext) {
|
||||
(function (Transport) {
|
||||
var GenericTransport = (function () {
|
||||
function GenericTransport(method, request, postData, callback) {
|
||||
}
|
||||
return GenericTransport;
|
||||
})();
|
||||
Transport.GenericTransport = GenericTransport;
|
||||
})(Typertext.Transport || (Typertext.Transport = {}));
|
||||
var Transport = Typertext.Transport;
|
||||
})(Typertext || (Typertext = {}));
|
||||
|
@ -363,15 +369,15 @@ var Typertext;
|
|||
var TransportChooser = (function () {
|
||||
function TransportChooser() {
|
||||
}
|
||||
TransportChooser.GetTransport = function (method, request) {
|
||||
TransportChooser.GetTransport = function (method, request, postData, callback) {
|
||||
var ieLte9 = false;
|
||||
var isXdomain = false;
|
||||
var isXprotocol = false;
|
||||
|
||||
if (!ieLte9) {
|
||||
return new Typertext.Transport.XDR();
|
||||
return new Typertext.Transport.XDR(method, request, postData, callback);
|
||||
} else if (isXdomain && !isXprotocol) {
|
||||
return new Typertext.Transport.XHR();
|
||||
return new Typertext.Transport.XHR(method, request, postData, callback);
|
||||
}
|
||||
|
||||
throw {};
|
||||
|
@ -385,16 +391,55 @@ var Typertext;
|
|||
var Typertext;
|
||||
(function (Typertext) {
|
||||
(function (Transport) {
|
||||
var XDR = (function () {
|
||||
function XDR() {
|
||||
}
|
||||
XDR.prototype.RawRequest = function (method, request, postData, callback) {
|
||||
var HttpMethod = Typertext.Http.HttpMethod;
|
||||
var HttpUrl = Typertext.Http.HttpUrl;
|
||||
|
||||
var HttpResponseStatus = Typertext.Http.HttpResponseStatus;
|
||||
var HttpResponse = Typertext.Http.HttpResponse;
|
||||
|
||||
var XDR = (function (_super) {
|
||||
__extends(XDR, _super);
|
||||
function XDR(method, request, postData, callback) {
|
||||
if (typeof postData === "undefined") { postData = {}; }
|
||||
if (typeof callback === "undefined") { callback = function (c) {
|
||||
return null;
|
||||
}; }
|
||||
};
|
||||
_super.call(this, method, request, postData, callback);
|
||||
|
||||
var xdr = new XDomainRequest();
|
||||
|
||||
var getHeader = function (name) {
|
||||
if (name.toLowerCase() === "content-type") {
|
||||
return xdr.contentType;
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
|
||||
xdr.ontimeout = function () {
|
||||
callback(new HttpResponse(5 /* timeout */, function (i) {
|
||||
return "";
|
||||
}, -1, ""));
|
||||
};
|
||||
|
||||
xdr.onerror = function () {
|
||||
callback(new HttpResponse(4 /* unknownError */, getHeader, -1, xdr.responseText));
|
||||
};
|
||||
|
||||
xdr.onload = function () {
|
||||
callback(new HttpResponse(0 /* success */, getHeader, 200, xdr.responseText));
|
||||
};
|
||||
|
||||
xdr.open(HttpMethod[method], request.ToString());
|
||||
|
||||
if (method == 0 /* GET */) {
|
||||
xdr.send();
|
||||
return;
|
||||
}
|
||||
|
||||
xdr.send(HttpUrl.UrlEncodeObject(postData));
|
||||
}
|
||||
return XDR;
|
||||
})();
|
||||
})(Typertext.Transport.GenericTransport);
|
||||
Transport.XDR = XDR;
|
||||
})(Typertext.Transport || (Typertext.Transport = {}));
|
||||
var Transport = Typertext.Transport;
|
||||
|
@ -408,16 +453,14 @@ var Typertext;
|
|||
var HttpResponseStatus = Typertext.Http.HttpResponseStatus;
|
||||
var HttpResponse = Typertext.Http.HttpResponse;
|
||||
|
||||
var XHR = (function () {
|
||||
function XHR() {
|
||||
}
|
||||
XHR.prototype.RawRequest = function (method, request, postData, callback) {
|
||||
var XHR = (function (_super) {
|
||||
__extends(XHR, _super);
|
||||
function XHR(method, request, postData, callback) {
|
||||
if (typeof postData === "undefined") { postData = {}; }
|
||||
if (typeof callback === "undefined") { callback = function (c) {
|
||||
return null;
|
||||
}; }
|
||||
var noop = function (i) {
|
||||
return "";
|
||||
};
|
||||
_super.call(this, method, request, postData, callback);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
|
@ -440,7 +483,9 @@ var Typertext;
|
|||
};
|
||||
|
||||
xhr.ontimeout = function () {
|
||||
callback(new HttpResponse(5 /* timeout */, noop, -1, ""));
|
||||
callback(new HttpResponse(5 /* timeout */, function (i) {
|
||||
return "";
|
||||
}, -1, ""));
|
||||
};
|
||||
|
||||
xhr.open(HttpMethod[method], request.ToString(), true);
|
||||
|
@ -453,9 +498,9 @@ var Typertext;
|
|||
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||
|
||||
xhr.send(HttpUrl.UrlEncodeObject(postData));
|
||||
};
|
||||
}
|
||||
return XHR;
|
||||
})();
|
||||
})(Typertext.Transport.GenericTransport);
|
||||
Transport.XHR = XHR;
|
||||
})(Typertext.Transport || (Typertext.Transport = {}));
|
||||
var Transport = Typertext.Transport;
|
||||
|
|
File diff suppressed because one or more lines are too long
2
build/typertext.min.js
vendored
2
build/typertext.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -52,7 +52,7 @@ module Typertext.Http {
|
|||
*/
|
||||
public RawRequest(method:HttpMethod, request:HttpUrl, postData:HttpPostData = {}, callback:HttpResponseHandler = (c)=> {
|
||||
}):void {
|
||||
Typertext.Transport.TransportChooser.GetTransport(method, request).RawRequest(method, request, postData, callback);
|
||||
Typertext.Transport.TransportChooser.Transport(method, request, postData, callback);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,10 +1,7 @@
|
|||
module Typertext.Transport {
|
||||
import HttpMethod = Typertext.Http.HttpMethod;
|
||||
import HttpUrl = Typertext.Http.HttpUrl;
|
||||
import HttpPostData = Typertext.Http.HttpPostData;
|
||||
import HttpResponseHandler = Typertext.Http.HttpResponseHandler;
|
||||
export class GenericTransport {
|
||||
constructor(method:Typertext.Http.HttpMethod, request:Typertext.Http.HttpUrl, postData:Typertext.Http.HttpPostData, callback:Typertext.Http.HttpResponseHandler) {
|
||||
|
||||
export interface GenericTransport {
|
||||
RawRequest(method:HttpMethod, request:HttpUrl, postData:HttpPostData, callback:HttpResponseHandler):void;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,14 +1,14 @@
|
|||
module Typertext.Transport {
|
||||
export class TransportChooser {
|
||||
static GetTransport(method:Typertext.Http.HttpMethod, request:Typertext.Http.HttpUrl):GenericTransport {
|
||||
static Transport(method:Typertext.Http.HttpMethod, request:Typertext.Http.HttpUrl, postData:Typertext.Http.HttpPostData, callback:Typertext.Http.HttpResponseHandler):GenericTransport {
|
||||
var ieLte9 = false;
|
||||
var isXdomain = false;
|
||||
var isXprotocol = false;
|
||||
|
||||
if (!ieLte9) {
|
||||
return new XDR();
|
||||
return new XDR(method, request, postData, callback);
|
||||
} else if (isXdomain && !isXprotocol) {
|
||||
return new XHR();
|
||||
return new XHR(method, request, postData, callback);
|
||||
}
|
||||
|
||||
throw {};
|
||||
|
|
|
@ -3,11 +3,51 @@ module Typertext.Transport {
|
|||
import HttpUrl = Typertext.Http.HttpUrl;
|
||||
import HttpPostData = Typertext.Http.HttpPostData;
|
||||
import HttpResponseHandler = Typertext.Http.HttpResponseHandler;
|
||||
import HttpResponseStatus = Typertext.Http.HttpResponseStatus;
|
||||
import HttpResponse = Typertext.Http.HttpResponse;
|
||||
|
||||
export class XDR implements GenericTransport {
|
||||
RawRequest(method:HttpMethod, request:HttpUrl, postData:HttpPostData = {}, callback:HttpResponseHandler = (c)=> {
|
||||
}):void {
|
||||
export class XDR extends GenericTransport {
|
||||
constructor(method:HttpMethod, request:HttpUrl, postData:HttpPostData = {}, callback:HttpResponseHandler = (c)=> null) {
|
||||
super(method, request, postData, callback);
|
||||
|
||||
//Create a XDR
|
||||
var xdr = new XDomainRequest();
|
||||
|
||||
//and an interface to get the content type of the response
|
||||
var getHeader = (name:string):string => {
|
||||
if (name.toLowerCase() === "content-type") {
|
||||
return xdr.contentType;
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
|
||||
//No handle timeouts,
|
||||
xdr.ontimeout = () => {
|
||||
callback(new HttpResponse(HttpResponseStatus.timeout, (i:string)=>"", -1, ""));
|
||||
};
|
||||
|
||||
//all errors (because XDR sucks)
|
||||
xdr.onerror = () => {
|
||||
callback(new HttpResponse(HttpResponseStatus.unknownError, getHeader, -1, xdr.responseText));
|
||||
};
|
||||
|
||||
//and success.
|
||||
xdr.onload = () => {
|
||||
callback(new HttpResponse(HttpResponseStatus.success, getHeader, 200, xdr.responseText));
|
||||
};
|
||||
|
||||
//Finally, open the request
|
||||
xdr.open(HttpMethod[method], request.ToString());
|
||||
|
||||
//and either send
|
||||
if (method == HttpMethod.GET) {
|
||||
//a get request without data,
|
||||
xdr.send();
|
||||
return;
|
||||
}
|
||||
|
||||
//or send the post-data to the server (as text/plain, because XDR sucks)
|
||||
xdr.send(HttpUrl.UrlEncodeObject(postData));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -6,12 +6,9 @@ module Typertext.Transport {
|
|||
import HttpResponseStatus = Typertext.Http.HttpResponseStatus;
|
||||
import HttpResponse = Typertext.Http.HttpResponse;
|
||||
|
||||
export class XHR implements GenericTransport {
|
||||
RawRequest(method:HttpMethod, request:HttpUrl, postData:HttpPostData = {}, callback:HttpResponseHandler = (c)=> {
|
||||
}):void {
|
||||
var noop = (i:string)=>{
|
||||
return "";
|
||||
};
|
||||
export class XHR extends GenericTransport {
|
||||
constructor(method:HttpMethod, request:HttpUrl, postData:HttpPostData = {}, callback:HttpResponseHandler = (c)=> null) {
|
||||
super(method, request, postData, callback);
|
||||
|
||||
//Create a XHR
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
@ -45,7 +42,7 @@ module Typertext.Transport {
|
|||
//Or if it times out
|
||||
xhr.ontimeout = () => {
|
||||
//And make a big deal of the failing
|
||||
callback(new HttpResponse(HttpResponseStatus.timeout, noop, -1, ""));
|
||||
callback(new HttpResponse(HttpResponseStatus.timeout, (i:string)=>"", -1, ""));
|
||||
};
|
||||
|
||||
//Now connect
|
||||
|
|
Reference in a new issue