public static Response LoadRecSource(Operation baseOperation, RecServiceState state)
        {
            Operation<LoadRecSourceRequest> operation = (Operation<LoadRecSourceRequest>)baseOperation;
            if (!operation.PayloadSet || operation.Payload == null)
                return GetArgumentNotSetError("Payload");
            if (operation.Payload.Name == null)
                return GetArgumentNotSetError("Payload.Name");
            if (operation.Payload.Type == null)
                return GetArgumentNotSetError("Payload.Type");

            if (state.JsonRecSourceTypes.ContainsKey(operation.Payload.Type))
            {
                Type jsonRecSourceType = state.JsonRecSourceTypes[operation.Payload.Type];

                // operation.Payload's static type is LoadRecSourceRequest.
                // Its real type will be something like LoadRecSourceRequest<AverageScoreRecSourceParams> thanks to the custom JsonConverter.
                // A json rec source is expected to have one or more constructors taking types derived from LoadRecSourceRequest.
                Func<ITrainableJsonRecSource> recSourceFactory = () => (ITrainableJsonRecSource)(Activator.CreateInstance(jsonRecSourceType, operation.Payload));

                state.LoadRecSource(recSourceFactory, operation.Payload.Name, operation.Payload.ReplaceExisting);
                return new Response();
            }
            else
            {
                return Response.GetErrorResponse(
                    errorCode: ErrorCodes.InvalidArgument,
                    message: string.Format("{0} is not a valid rec source type.", operation.Payload.Type)
                );
            }
        }
 public static Response ReloadTrainingData(Operation baseOperation, RecServiceState state)
 {
     Operation<ReloadTrainingDataRequest> operation = (Operation<ReloadTrainingDataRequest>)baseOperation;
     ReloadBehavior behavior = (ReloadBehavior)Enum.Parse(typeof(ReloadBehavior), operation.Payload.Mode);
     state.ReloadTrainingData(behavior, operation.Payload.Finalize);
     return new Response();
 }
 public static Response GetRecSourceType(Operation baseOperation, RecServiceState state)
 {
     Operation<GetRecSourceTypeRequest> operation = (Operation<GetRecSourceTypeRequest>)baseOperation;
     string recSourceType = state.GetRecSourceType(operation.Payload.RecSourceName);
     return new Response<GetRecSourceTypeResponse>()
     {
         Body = new GetRecSourceTypeResponse(recSourceType)
     };
 }
        public static Response UnloadRecSource(Operation baseOperation, RecServiceState state)
        {
            Operation<UnloadRecSourceRequest> operation = (Operation<UnloadRecSourceRequest>)baseOperation;
            operation.Payload.AssertArgumentNotNull("Payload");
            operation.Payload.Name.AssertArgumentNotNull("Payload.Name");
            state.UnloadRecSource(operation.Payload.Name);

            return new Response();
        }
Example #5
0
        public static async Task <Response> GetMalRecsAsync(Operation baseOperation, RecServiceState state, CancellationToken cancellationToken)
        {
            Operation <GetMalRecsRequest> operation = (Operation <GetMalRecsRequest>)baseOperation;

            return(new Response <GetMalRecsResponse>()
            {
                Body = await state.GetMalRecsAsync(operation.Payload, cancellationToken).ConfigureAwait(false)
            });
        }
Example #6
0
        public static Response Ping(Operation baseOperation, RecServiceState state)
        {
            Operation<PingRequest> operation = (Operation<PingRequest>)(baseOperation);
            if (!operation.PayloadSet || operation.Payload == null)
                return GetArgumentNotSetError("Payload");
            if (operation.Payload.PingMessage == null)
                return GetArgumentNotSetError("Payload.PingMessage");

            return new Response<PingResponse>()
            {
                Body = new PingResponse()
                {
                    OriginalMessage = operation.Payload.PingMessage,
                    ResponseMessage = string.Format("Your message was \"{0}\".", operation.Payload.PingMessage)
                }
            };
        }
Example #7
0
        public static Task <Response> PingAsync(Operation baseOperation, RecServiceState state, CancellationToken cancellationToken)
        {
            Operation <PingRequest> operation = (Operation <PingRequest>)(baseOperation);

            if (!operation.PayloadSet || operation.Payload == null)
            {
                return(Task.FromResult(GetArgumentNotSetError("Payload")));
            }
            if (operation.Payload.PingMessage == null)
            {
                return(Task.FromResult(GetArgumentNotSetError("Payload.PingMessage")));
            }

            return(Task.FromResult <Response>(new Response <PingResponse>()
            {
                Body = new PingResponse()
                {
                    OriginalMessage = operation.Payload.PingMessage,
                    ResponseMessage = string.Format("Your message was \"{0}\".", operation.Payload.PingMessage)
                }
            }));
        }
        public static async Task <Response> GetRecSourceTypeAsync(Operation baseOperation, RecServiceState state, CancellationToken cancellationToken)
        {
            Operation <GetRecSourceTypeRequest> operation = (Operation <GetRecSourceTypeRequest>)baseOperation;
            string recSourceType = await state.GetRecSourceTypeAsync(operation.Payload.RecSourceName, cancellationToken).ConfigureAwait(false);

            return(new Response <GetRecSourceTypeResponse>()
            {
                Body = new GetRecSourceTypeResponse(recSourceType)
            });
        }
Example #9
0
        public static async Task <Response> ReloadTrainingDataAsync(Operation baseOperation, RecServiceState state, CancellationToken cancellationToken)
        {
            Operation <ReloadTrainingDataRequest> operation = (Operation <ReloadTrainingDataRequest>)baseOperation;
            ReloadBehavior behavior = (ReloadBehavior)Enum.Parse(typeof(ReloadBehavior), operation.Payload.Mode);
            await state.ReloadTrainingDataAsync(behavior, operation.Payload.Finalize, cancellationToken);

            return(new Response());
        }
        public static async Task <Response> UnloadRecSourceAsync(Operation baseOperation, RecServiceState state, CancellationToken cancellationToken)
        {
            Operation <UnloadRecSourceRequest> operation = (Operation <UnloadRecSourceRequest>)baseOperation;

            operation.Payload.AssertArgumentNotNull("Payload");
            operation.Payload.Name.AssertArgumentNotNull("Payload.Name");
            await state.UnloadRecSourceAsync(operation.Payload.Name, cancellationToken).ConfigureAwait(false);

            return(new Response());
        }
        public static async Task <Response> FinalizeRecSourcesAsync(Operation baseOperation, RecServiceState state, CancellationToken cancellationToken)
        {
            Operation <FinalizeRecSourcesRequest> operation = (Operation <FinalizeRecSourcesRequest>)baseOperation;
            await state.FinalizeRecSourcesAsync(cancellationToken);

            return(new Response());
        }
 public static Response FinalizeRecSources(Operation baseOperation, RecServiceState state)
 {
     Operation<FinalizeRecSourcesRequest> operation = (Operation<FinalizeRecSourcesRequest>)baseOperation;
     state.FinalizeRecSources();
     return new Response();
 }
 public static Response GetMalRecs(Operation baseOperation, RecServiceState state)
 {
     Operation<GetMalRecsRequest> operation = (Operation<GetMalRecsRequest>)baseOperation;
     return new Response<GetMalRecsResponse>() { Body = state.GetMalRecs(operation.Payload) };
 }
Example #14
0
        public static async Task <Response> LoadRecSourceAsync(Operation baseOperation, RecServiceState state, CancellationToken cancellationToken)
        {
            Operation <LoadRecSourceRequest> operation = (Operation <LoadRecSourceRequest>)baseOperation;

            if (!operation.PayloadSet || operation.Payload == null)
            {
                return(GetArgumentNotSetError("Payload"));
            }
            if (operation.Payload.Name == null)
            {
                return(GetArgumentNotSetError("Payload.Name"));
            }
            if (operation.Payload.Type == null)
            {
                return(GetArgumentNotSetError("Payload.Type"));
            }

            try
            {
                await state.LoadRecSourceAsync(operation.Payload, cancellationToken).ConfigureAwait(false);

                return(new Response());
            }
            catch (KeyNotFoundException)
            {
                return(Response.GetErrorResponse(
                           errorCode: ErrorCodes.InvalidArgument,
                           message: string.Format("{0} is not a valid rec source type.", operation.Payload.Type)
                           ));
            }
        }