public Result <IUnityNetworkMiddlewareSchema> BuildUnityNetworkClientPipeline( NetworkClientMiddlewareManifests manifest) { var coroutineRunner = ModulesRegister.Get <ICoroutineRunner>(); if (coroutineRunner.IsError) { return(Result <IUnityNetworkMiddlewareSchema> .FromError( $"Unable to get {nameof(coroutineRunner)} at {nameof(UnityNetworkClientPipelineBuilder<T>)}")); } var compositionManifest = manifest.RequestComposition; var requestProcessor = UnityWebRequestProcessorMiddleware <T> .Create(Option <T> .None, coroutineRunner.Value, manifest.RequestProcessor); var statusCodeValidator = StatusCodeValidationMiddleware <T> .Create( ((T)(IUnityNetworkMiddlewareSchema)requestProcessor).ToSome()); var compositionMiddleware = UnityRequestCompositionMiddleware <T> .Create( ((T)(IUnityNetworkMiddlewareSchema)statusCodeValidator).ToSome(), compositionManifest); return(((IUnityNetworkMiddlewareSchema)compositionMiddleware).ToValue()); }
protected override Result <IUnityNetworkMiddlewareSchema> BuildPipeline(NetworkClientMiddlewareManifests manifests) { return(new UnityNetworkClientPipelineBuilder <IUnityNetworkMiddlewareSchema>() .BuildUnityNetworkClientPipeline(manifests)); }