Example #1
0
 private static void CallSafely(Request request, string payload, Response writeResponse, Func<Request, JSONValue, JSONValue> method)
 {
     RestRequestException exception;
     try
     {
         JSONValue value2 = 0;
         if (payload.Trim().Length == 0)
         {
             value2 = new JSONValue();
         }
         else
         {
             try
             {
                 value2 = new JSONParser(request.Payload).Parse();
             }
             catch (JSONParseException)
             {
                 ThrowInvalidJSONException();
             }
         }
         writeResponse.SimpleResponse(HttpStatusCode.Ok, method.Invoke(request, value2).ToString());
     }
     catch (JSONTypeException)
     {
         ThrowInvalidJSONException();
     }
     catch (KeyNotFoundException)
     {
         exception = new RestRequestException {
             HttpStatusCode = HttpStatusCode.BadRequest
         };
         RespondWithException(writeResponse, exception);
     }
     catch (RestRequestException exception2)
     {
         RespondWithException(writeResponse, exception2);
     }
     catch (Exception exception3)
     {
         exception = new RestRequestException {
             HttpStatusCode = HttpStatusCode.InternalServerError,
             RestErrorString = "InternalServerError",
             RestErrorDescription = "Caught exception while fulfilling request: " + exception3
         };
         RespondWithException(writeResponse, exception);
     }
 }
Example #2
0
 private void InvokeDelete(Request request, string payload, Response writeResponse)
 {
     CallSafely(request, payload, writeResponse, new Func<Request, JSONValue, JSONValue>(this, (IntPtr) this.HandleDelete));
 }
Example #3
0
 private static void RespondWithException(Response writeResponse, RestRequestException rre)
 {
     StringBuilder builder = new StringBuilder("{");
     if (rre.RestErrorString != null)
     {
         builder.AppendFormat("\"error\":\"{0}\",", rre.RestErrorString);
     }
     if (rre.RestErrorDescription != null)
     {
         builder.AppendFormat("\"errordescription\":\"{0}\"", rre.RestErrorDescription);
     }
     builder.Append("}");
     writeResponse.SimpleResponse(rre.HttpStatusCode, builder.ToString());
 }