private async Task <IResponse <TRequestResult> > GetResponse(IObjectLogger logger, IResponseComposer responseComposer) { try { return(await this.Request()); } catch (Exception e) { logger.LogCritical(e); return(responseComposer.Error <TRequestResult>(e)); } }
private async Task <IResponse <TRequestResult> > GetResponse(IResponse <TFrom> parentResult, IObjectLogger logger, IResponseComposer responseComposer) { Debug.Assert(parentResult != null); try { return(this.Request != null ? await this.Request(parentResult.Payload) : throw new InvalidOperationException("Provider is null")); } catch (Exception e) { logger.LogCritical(e); return(responseComposer.Error <TRequestResult>(e)); } }
public override async Task <IResponse <TResult> > GetResult(IObjectLogger logger, IResponseComposer responseComposer) { Debug.Assert(logger != null); try { var requestResult = this.ProcessResponse(logger, await this.GetResponse(logger, responseComposer)); Debug.Assert(requestResult != null); return(await this.TransformFunc(requestResult, responseComposer, logger)); } catch (Exception e) { logger.LogCritical(e); return(responseComposer.Error <TResult>(e)); } }
private static IResponse <TCombineResult> GetCombineResult <TCombineResult>( Func <TFrom, TRequestResult, TCombineResult> combine, IResponse <TFrom> first, IResponse <TRequestResult> second, IResponseComposer composer) { if (!first.Succeeded) { return(composer.From <TCombineResult>(second)); } if (!second.Succeeded) { return(composer.From <TCombineResult>(second)); } try { return(composer.Success(combine(first.Payload, second.Payload))); } catch (Exception ex) { return(composer.Error <TCombineResult>(ex)); } }
public override async Task <IResponse <TResult> > GetResult(IObjectLogger logger, IResponseComposer responseComposer) { Debug.Assert(this.Parent != null); Debug.Assert(this.Request != null); try { var parentResult = await this.Parent.GetResult(logger, responseComposer); if (!parentResult.Succeeded) { return(responseComposer.From <TFrom, TResult>(parentResult)); } var response = this.ProcessResponse(logger, await this.GetResponse(parentResult, logger, responseComposer)); return(await this.TransformFunc(parentResult, response, responseComposer, logger)); } catch (Exception e) { logger.LogCritical(e); return(responseComposer.Error <TResult>(e)); } }