/// <summary> /// Writes the result directly into the response stream, e.g. for a classic ASP.NET response /// </summary> /// <param name="response">A standard HttpResponse object</param> /// <param name="result">An IBackloadResult object</param> public static void Write(HttpResponse response, IBackloadResult result) { response.StatusCode = (int)result.HttpStatusCode; if ((int)result.HttpStatusCode < 300) { // Write result to the response (Json or file data, default: Json response) if (result.RequestType == RequestType.Default) { // Json response (We use the systems JavaScriptSerializer, you can also use Newtonsoft.Json) IFileStatusResult status = (IFileStatusResult)result; var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); if ((status.ClientStatus != null) && (result.Exception == null)) { response.Write(serializer.Serialize(status.ClientStatus)); } } else { // file data (byte array) response IFileDataResult data = (IFileDataResult)result; if ((data.FileData != null) && (result.Exception == null)) { response.BinaryWrite(data.FileData); } } } }
/// <summary> /// Creates the Json output for the files handled in this request /// </summary> /// <param name="result">A IFileStatusResult object with client plugin specfic data.</param> /// <returns>JsonResult instance or a http HttpStatusCodeResult to send an http status</returns> public static ActionResult Create(IFileStatusResult result) { // Create Json result from the returned client plugin specific file metadata. if ((result.ClientStatus != null) && (result.Exception == null)) return new JsonResult() { Data = result.ClientStatus, ContentType = result.ContentType, ContentEncoding = System.Text.Encoding.UTF8, MaxJsonLength = Int32.MaxValue, RecursionLimit = null, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; // A HttpStatusCodeResult result is returned on errors or if files not have been modified (304) return new HttpStatusCodeResult(result.HttpStatusCode); }
// DELETE api/<controller>?fileName=[name] public async Task <IClientPluginResultCore> Delete(string fileName) { try { IFileHandler handler = GetHandler(); // Call the DELETE execution method and get the result IFileStatus status = await handler.Services.DELETE.Execute(); // Create plugin specific result IFileStatusResult result = handler.Services.Core.CreatePluginResult(); // return Json return(result.ClientStatus); } catch { HttpContext.Current.Response.StatusCode = 500; } return(null); }
/// <summary> /// Creates the Json output for the files handled in this request /// </summary> /// <param name="result">A IFileStatusResult object with client plugin specfic data.</param> /// <returns>JsonResult instance or a http HttpStatusCodeResult to send an http status</returns> public static ActionResult Create(IFileStatusResult result) { // Create Json result from the returned client plugin specific file metadata. if ((result.ClientStatus != null) && (result.Exception == null)) { return new JsonResult() { Data = result.ClientStatus, ContentType = result.ContentType, ContentEncoding = System.Text.Encoding.UTF8, MaxJsonLength = Int32.MaxValue, RecursionLimit = null, JsonRequestBehavior = JsonRequestBehavior.AllowGet } } ; // A HttpStatusCodeResult result is returned on errors or if files not have been modified (304) return(new HttpStatusCodeResult(result.HttpStatusCode)); }