Пример #1
0
        public async Task <ModifySubscriptionResponse> ModifySubscription(ModifySubscriptionRequest request)
        {
            ModifySubscriptionResponse response = new ModifySubscriptionResponse();

            var subscription = await _subscriptionRepository.FindBy(request.SubscriptionId);

            if (subscription == null)
            {
                throw new SubscriptionDoesNotExistException();
            }

            AddPseudoSkusToSubscription(request.PseudoSkusToAdd, subscription);

            UpdateLineQtys(request.ItemsToUpdate, subscription);

            RemoveItemsFromSubscription(request.ItemsToRemove, subscription);


            ThrowExceptionIfSubscriptionIsInvalid(subscription);

            await _subscriptionRepository.SaveAll();

            //When not using the EF repository, commnit using unit of work
            //_uow.Commit();

            response.Subscription = _mapper.Map <SubscriptionView>(subscription);

            return(response);
        }
Пример #2
0
 /// <summary>
 ///     Updates the existent subscription. The client application can extend/narrow the events for which it receives
 ///     notifications within the frame of one subscription. If event filters are specified, calling this method modifies
 ///     them for the existing subscription. The method also allows to set the subscription expiration time. If other than
 ///     `events` and `expiresIn` parameters are passed in request they will be ignored. If the request body is empty then
 ///     the specified subscription will be just renewed without any event filter change and with expiration time default.
 ///     HTTP Method: put
 ///     Endpoint: /restapi/{apiVersion}/subscription/{subscriptionId}
 ///     Rate Limit Group: Medium
 /// </summary>
 public async Task <SubscriptionInfo> Put(ModifySubscriptionRequest modifySubscriptionRequest,
                                          RestRequestConfig restRequestConfig = null)
 {
     if (subscriptionId == null)
     {
         throw new ArgumentException("Parameter cannot be null", nameof(subscriptionId));
     }
     return(await rc.Put <SubscriptionInfo>(Path(), modifySubscriptionRequest, null, restRequestConfig));
 }
Пример #3
0
        public static LogEntry For(ModifySubscriptionRequest request)
        {
            LogEntry entry = new LogEntry("ModifySubscriptionRequest");

            entry.Add("RequestHeader", For(request.RequestHeader));
            entry.Add("SubscriptionId", For(request.SubscriptionId));
            entry.Add("RequestedPublishingInterval", For(request.RequestedPublishingInterval));
            entry.Add("RequestedLifetimeCount", For(request.RequestedLifetimeCount));
            entry.Add("RequestedMaxKeepAliveCount", For(request.RequestedMaxKeepAliveCount));
            entry.Add("MaxNotificationsPerPublish", For(request.MaxNotificationsPerPublish));
            entry.Add("Priority", For(request.Priority));
            return(entry);
        }
Пример #4
0
        public async Task ModifySubscriptionAsync()
        {
            var response = new ModifySubscriptionResponse();
            var request  = new ModifySubscriptionRequest();
            var channel  = new TestRequestChannel(response);

            var ret = await channel.ModifySubscriptionAsync(request);

            ret
            .Should().BeSameAs(response);

            channel.Request
            .Should().BeSameAs(request);
        }
Пример #5
0
        /// <summary>
        /// Modifies a Subscription.
        /// </summary>
        /// <param name="channel">A instance of <see cref="IRequestChannel"/>.</param>
        /// <param name="request">A <see cref="ModifySubscriptionRequest"/>.</param>
        /// <returns>A <see cref="Task"/> representing the asynchronous operation that returns a <see cref="ModifySubscriptionResponse"/>.</returns>
        public static async Task <ModifySubscriptionResponse> ModifySubscriptionAsync(this IRequestChannel channel, ModifySubscriptionRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            return((ModifySubscriptionResponse)await channel.RequestAsync(request).ConfigureAwait(false));
        }
Пример #6
0
 /// <summary>
 ///     Updates the existent subscription. The client application can extend/narrow the events for which it receives
 ///     notifications within the frame of one subscription. If event filters are specified, calling this method modifies
 ///     them for the existing subscription. The method also allows to set the subscription expiration time. If other than
 ///     `events` and `expiresIn` parameters are passed in request they will be ignored. If the request body is empty then
 ///     the specified subscription will be just renewed without any event filter change and with expiration time default.
 ///     HTTP Method: put
 ///     Endpoint: /restapi/{apiVersion}/subscription/{subscriptionId}
 ///     Rate Limit Group: Medium
 /// </summary>
 public async Task <SubscriptionInfo> Put(ModifySubscriptionRequest modifySubscriptionRequest,
                                          RestRequestConfig restRequestConfig = null)
 {
     return(await rc.Put <SubscriptionInfo>(Path(), modifySubscriptionRequest, null, restRequestConfig));
 }
Пример #7
0
        /// <summary>
        /// Begins an asynchronous invocation of the ModifySubscription service.
        /// </summary>
        public IAsyncResult BeginModifySubscription(
            RequestHeader requestHeader,
            uint          subscriptionId,
            double        requestedPublishingInterval,
            uint          requestedLifetimeCount,
            uint          requestedMaxKeepAliveCount,
            uint          maxNotificationsPerPublish,
            byte          priority,
            AsyncCallback callback,
            object        asyncState)
        {
            ModifySubscriptionRequest request = new ModifySubscriptionRequest();

            request.RequestHeader               = requestHeader;
            request.SubscriptionId              = subscriptionId;
            request.RequestedPublishingInterval = requestedPublishingInterval;
            request.RequestedLifetimeCount      = requestedLifetimeCount;
            request.RequestedMaxKeepAliveCount  = requestedMaxKeepAliveCount;
            request.MaxNotificationsPerPublish  = maxNotificationsPerPublish;
            request.Priority                    = priority;

            UpdateRequestHeader(request, requestHeader == null, "ModifySubscription");

            if (UseTransportChannel)
            {
                return TransportChannel.BeginSendRequest(request, callback, asyncState);
            }

            return InnerChannel.BeginModifySubscription(new ModifySubscriptionMessage(request), callback, asyncState);
        }
Пример #8
0
        /// <summary>
        /// Invokes the ModifySubscription service.
        /// </summary>
        public virtual ResponseHeader ModifySubscription(
            RequestHeader requestHeader,
            uint          subscriptionId,
            double        requestedPublishingInterval,
            uint          requestedLifetimeCount,
            uint          requestedMaxKeepAliveCount,
            uint          maxNotificationsPerPublish,
            byte          priority,
            out double    revisedPublishingInterval,
            out uint      revisedLifetimeCount,
            out uint      revisedMaxKeepAliveCount)
        {
            ModifySubscriptionRequest request = new ModifySubscriptionRequest();
            ModifySubscriptionResponse response = null;

            request.RequestHeader               = requestHeader;
            request.SubscriptionId              = subscriptionId;
            request.RequestedPublishingInterval = requestedPublishingInterval;
            request.RequestedLifetimeCount      = requestedLifetimeCount;
            request.RequestedMaxKeepAliveCount  = requestedMaxKeepAliveCount;
            request.MaxNotificationsPerPublish  = maxNotificationsPerPublish;
            request.Priority                    = priority;

            UpdateRequestHeader(request, requestHeader == null, "ModifySubscription");

            try
            {
                if (UseTransportChannel)
                {
                    IServiceResponse genericResponse = TransportChannel.SendRequest(request);

                    if (genericResponse == null)
                    {
                        throw new ServiceResultException(StatusCodes.BadUnknownResponse);
                    }

                    ValidateResponse(genericResponse.ResponseHeader);
                    response = (ModifySubscriptionResponse)genericResponse;
                }
                else
                {
                    ModifySubscriptionResponseMessage responseMessage = InnerChannel.ModifySubscription(new ModifySubscriptionMessage(request));

                    if (responseMessage == null || responseMessage.ModifySubscriptionResponse == null)
                    {
                        throw new ServiceResultException(StatusCodes.BadUnknownResponse);
                    }

                    response = responseMessage.ModifySubscriptionResponse;
                    ValidateResponse(response.ResponseHeader);
                }

                revisedPublishingInterval = response.RevisedPublishingInterval;
                revisedLifetimeCount      = response.RevisedLifetimeCount;
                revisedMaxKeepAliveCount  = response.RevisedMaxKeepAliveCount;
            }
            finally
            {
                RequestCompleted(request, response, "ModifySubscription");
            }

            return response.ResponseHeader;
        }
Пример #9
0
 /// <summary>
 /// Initializes the message with the body.
 /// </summary>
 public ModifySubscriptionMessage(ModifySubscriptionRequest ModifySubscriptionRequest)
 {
     this.ModifySubscriptionRequest = ModifySubscriptionRequest;
 }