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); }
/// <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)); }
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); }
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); }
/// <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)); }
/// <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)); }
/// <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); }
/// <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; }
/// <summary> /// Initializes the message with the body. /// </summary> public ModifySubscriptionMessage(ModifySubscriptionRequest ModifySubscriptionRequest) { this.ModifySubscriptionRequest = ModifySubscriptionRequest; }