public async Task <ChangeSetResponse> ServiceApplyChangeSet(ChangeSetRequest changeSet)
        {
            ICRUDOperationsUseCaseFactory factory        = ServiceContainer.CRUDOperationsUseCaseFactory;
            CRUDServiceMethods            serviceMethods = new CRUDServiceMethods(
                (err) => { _OnError(err); return(GetFriendlyErrorMessage(err)); },
                (row) => TrackChangesToEntity(row),
                async() =>
            {
                await ExecuteChangeSet();
            },
                async() =>
            {
                await AfterExecuteChangeSet(changeSet);
            },
                async(subResults) =>
            {
                await AfterChangeSetCommited(changeSet, subResults);
            });

            ICRUDOperationsUseCase uc = factory.Create(this, serviceMethods);

            IResponsePresenter <ChangeSetResponse, ChangeSetResponse> output = ServiceContainer.GetRequiredService <IResponsePresenter <ChangeSetResponse, ChangeSetResponse> >();

            bool res = await uc.Handle(changeSet, output);

            return(output.Response);
        }
 public HttpStatusCode Process(HttpListenerContext context, IResponsePresenter presenter)
 {
     Validate(context);
     var query = context.Request.QueryString;
     var url = query.GetValues("url").Single();
     var content = new byte[0];
     using (var client = new WebClient())
     {
         try
         {
             content = client.DownloadData(url);
         }
         catch (WebException ex)
         {
             var result = HttpStatusCode.BadGateway;
             using (var error = ex.Response.GetResponseStream())
             {
                 if (error != null)
                 {
                     content = new byte[error.Length];
                     error.Read(content, 0, content.Length);
                 }
             }
             context.Response.StatusCode = (int) result;
         }
         context.Response.Headers.Set(HttpResponseHeader.ContentEncoding,
             client.ResponseHeaders.Get("Content-Encoding"));
         context.Response.Headers.Set(HttpResponseHeader.ContentType, client.ResponseHeaders.Get("Content-Type"));
         context.Response.ContentLength64 = content.Length;
         context.Response.OutputStream.Write(content, 0, content.Length);
         context.Response.OutputStream.Close();
         return HttpStatusCode.OK;
     }
 }
 public HttpStatusCode Process(HttpListenerContext context, IResponsePresenter presenter)
 {
     var responseArray = Encoding.UTF8.GetBytes("<HTML><BODY>Helloworld!</BODY></HTML>");
     context.Response.StatusCode = (int) HttpStatusCode.OK;
     context.Response.ContentType = "text/html; charset=utf-8";
     context.Response.ContentLength64 = responseArray.Length;
     context.Response.OutputStream.Write(responseArray, 0, responseArray.Length);
     context.Response.OutputStream.Close();
     return HttpStatusCode.OK;
 }
        public async Task <InvokeResponse> ServiceInvokeMethod(InvokeRequest message)
        {
            IInvokeOperationsUseCaseFactory factory = ServiceContainer.InvokeOperationsUseCaseFactory;
            IInvokeOperationsUseCase        uc      = factory.Create(this, (err) => { _OnError(err); return(GetFriendlyErrorMessage(err)); });
            IResponsePresenter <InvokeResponse, InvokeResponse> output = ServiceContainer.GetRequiredService <IResponsePresenter <InvokeResponse, InvokeResponse> >();

            bool res = await uc.Handle(message, output);

            return(output.Response);
        }
 public HttpStatusCode Process(HttpListenerContext context, IResponsePresenter presenter)
 {
     Validate(context);
     if (ConfigurationManager.AppSettings["DataStorageMode"] == "sqlite")
     {
         _repository = new GuestBookSqliteRepository();
     }
     else
     {
         _repository = new GuestBookXmlRepository();
     }
     string content;
     HttpStatusCode result;
     switch (context.Request.HttpMethod)
     {
         case "GET":
             var guestBook = _repository.List();
             content = presenter.FormatGuestBook(guestBook.Item1, guestBook.Item2);
             result = HttpStatusCode.OK;
             break;
         case "POST":
             var query = context.Request.QueryString;
             var user = query.GetValues("user").First();
             var message = query.GetValues("message").First();
             _repository.AddEntry(user, message);
             content = "";
             result = HttpStatusCode.NoContent;
             break;
         default:
             content = presenter.FormatError(HttpStatusCode.MethodNotAllowed, "Method not allowed...");
             result = HttpStatusCode.MethodNotAllowed;
             break;
     }
     var responseArray = Encoding.UTF8.GetBytes(content);
     context.Response.StatusCode = (int) result;
     context.Response.ContentType = "text/html; charset=utf-8";
     context.Response.ContentLength64 = responseArray.Length;
     context.Response.OutputStream.Write(responseArray, 0, responseArray.Length);
     context.Response.OutputStream.Close();
     return result;
 }