public BaseRequestProcessor SetRequestProcessor <TBaseRequest, TBaseResponse, TResponse>( ICustomRequestProcessor <TBaseRequest, TBaseResponse, TResponse> processor) where TBaseRequest : BaseBotRequest <JToken> where TBaseResponse : BaseBotResponse <TResponse> { if (processor == null) { return(this); } _requestProcessors.AddOrUpdate(processor.RequestType, str => ProcessFunc(str, processor), (type, func) => (str => ProcessFunc(str, processor))); return(this); }
/// <summary> /// /// </summary> /// <param name="authService">Provide events requests auth</param> /// <param name="validationRequestProcessor">For events validation request (events, commands, actions)</param> /// <param name="localizationService">Service for setting locale app</param> protected BaseRequestProcessor(IBotAuthService authService, ICustomRequestProcessor <BaseUrlValidationBotRequest <JToken>, BaseUrlValidationBotResponse <UrlValidationBotResponse>, UrlValidationBotResponse> validationRequestProcessor, ILocalizationService localizationService) { _authService = authService; _localizationService = localizationService; _requestProcessors = new ConcurrentDictionary <BotRequestType, Func <string, Task <object> > >( new List <KeyValuePair <BotRequestType, Func <string, Task <object> > > > { new KeyValuePair <BotRequestType, Func <string, Task <object> > >(validationRequestProcessor.RequestType, str => ProcessFunc(str, validationRequestProcessor)) }); }
public TestRequestProcessor(IBotAuthService authService, ICustomRequestProcessor <BaseUrlValidationBotRequest <JToken>, BaseUrlValidationBotResponse <UrlValidationBotResponse>, UrlValidationBotResponse> validationRequestProcessor, ILocalizationService localizationService) : base(authService, validationRequestProcessor, localizationService) { }
private static async Task <object> ProcessFunc <TBaseRequest, TBaseResponse, TResponse>(string str, ICustomRequestProcessor <TBaseRequest, TBaseResponse, TResponse> processor) where TBaseRequest : BaseBotRequest <JToken> where TBaseResponse : BaseBotResponse <TResponse> { return(await processor.ProcessAsync(JsonConvert.DeserializeObject <TBaseRequest>(str)).ConfigureAwait(false)); }