2014-02-26 19:12:37 +00:00
|
|
|
/**
|
2014-02-28 17:38:48 +00:00
|
|
|
* @namespace Typertext
|
|
|
|
* @module Json
|
2014-02-26 19:12:37 +00:00
|
|
|
*/
|
|
|
|
module Typertext.Json {
|
2014-02-28 17:38:48 +00:00
|
|
|
import HttpResponse = Typertext.Http.HttpResponse;
|
|
|
|
import HttpResponseStatus = Typertext.Http.HttpResponseStatus;
|
|
|
|
|
2014-02-26 19:12:37 +00:00
|
|
|
export class JsonResponse extends Typertext.GenericResponse<JsonObject> {
|
2014-02-28 17:38:48 +00:00
|
|
|
|
2014-03-12 18:56:11 +00:00
|
|
|
/**
|
|
|
|
* @property parseSuccess
|
|
|
|
* @type {boolean}
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
private parseSuccess:boolean;
|
|
|
|
|
2014-02-28 17:38:48 +00:00
|
|
|
/**
|
|
|
|
* This method handles converting a string into a parsed JSON object
|
|
|
|
*
|
|
|
|
* @param httpResponse
|
|
|
|
* @returns {JsonResponse}
|
|
|
|
*/
|
|
|
|
public static fromHttpResponse(httpResponse:HttpResponse):JsonResponse {
|
2014-03-12 18:56:11 +00:00
|
|
|
try {
|
|
|
|
return new JsonResponse(httpResponse.GetStatus(), httpResponse.GetHeader, httpResponse.GetHttpStatus(), window["JSON"].parse(httpResponse.GetContent()), true);
|
|
|
|
} catch(e) {
|
|
|
|
return new JsonResponse(httpResponse.GetStatus(), httpResponse.GetHeader, httpResponse.GetHttpStatus(), null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method handles creating an unsuccessful JSON response if the content-type is wrong
|
|
|
|
*
|
|
|
|
* @param httpResponse
|
|
|
|
* @returns {JsonResponse}
|
|
|
|
*/
|
|
|
|
public static fromInvalidHttpResponse(httpResponse:HttpResponse):JsonResponse {
|
|
|
|
return new JsonResponse(HttpResponseStatus.responseError, httpResponse.GetHeader, httpResponse.GetHttpStatus());
|
2014-02-26 19:12:37 +00:00
|
|
|
}
|
|
|
|
|
2014-02-28 17:38:48 +00:00
|
|
|
/**
|
|
|
|
* A class that passes around a parsed JSON reponse from the server
|
|
|
|
*
|
|
|
|
* @class JsonResponse
|
|
|
|
* @param {HttpResponseStatus} status
|
|
|
|
* @param {HttpHeaderData} responseHeaders
|
|
|
|
* @param {number} httpResponseCode
|
|
|
|
* @param {JsonObject} responseBody
|
2014-03-12 18:56:11 +00:00
|
|
|
* @param {boolean} parseSuccess
|
2014-02-28 17:38:48 +00:00
|
|
|
*
|
|
|
|
* @author Kegan Myers <kegan@keganmyers.com>
|
|
|
|
* @version 0.3.0
|
|
|
|
*/
|
2014-03-12 18:56:11 +00:00
|
|
|
constructor(status:HttpResponseStatus, responseHeaderGetter?:(input:string)=>string, httpResponseCode?:number, responseBody?:JsonObject, parseSuccess?:boolean) {
|
2014-03-03 18:35:46 +00:00
|
|
|
super(status, responseHeaderGetter, httpResponseCode, responseBody);
|
2014-03-12 18:56:11 +00:00
|
|
|
parseSuccess = !!parseSuccess || false;
|
|
|
|
this.parseSuccess = parseSuccess;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check whether the parsing stage of creating creating the JSON response was successful
|
|
|
|
*
|
|
|
|
* @returns {boolean}
|
|
|
|
*/
|
|
|
|
public GetParseStatus():boolean {
|
|
|
|
return this.parseSuccess;
|
2014-02-26 19:12:37 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|