This repository has been archived on 2019-05-14. You can view files and clone it, but cannot push or open issues or pull requests.
Typertext/lib/Typertext/Json/JsonResponse.ts

70 lines
2.6 KiB
TypeScript
Raw Normal View History

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) {
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
}
}
}