예제 #1
0
        public static void Renew(SubscriptionManager manager)
        {
            var request = new RenewRequestMessage(manager.Identifier); // Request the default expiration extension from the service
            var channel = ChannelFactory <ISubscriptionManager> .CreateChannel(new BasicHttpBinding(), manager.EndpointAddress.ToEndpointAddress());

            var response = channel.Renew(request);

            Console.WriteLine("Status for {0} now expires at {1}", manager.Identifier.Value, response.Body.Expires.Value);
        }
예제 #2
0
        /// <summary>
        /// Operation to update the expiration for a subscription. The subscriber sends a request to the subscription manager
        /// and if the subscription manager accepts a request to renew a subscription the new expiration details will be returned.
        /// </summary>
        /// <param name="request">The <see cref="RenewRequestMessage">request message</see> containing the renewal request details.</param>
        /// <returns>The <see cref="RenewResponseMessage">RenewResponseMessage</see> containing the new subscription expiration details.</returns>
        public RenewResponseMessage Renew(RenewRequestMessage request)
        {
            Guid id = Subscribers.Keys.First();

            request.Identifier.Value.TryGetGuid(out id);

            var exists = Subscribers.ContainsKey(id);

            if (!exists)
            {
                return(new RenewResponseMessage());
            }

            Subscribers[id] = new Tuple <Uri, DateTime>(Subscribers[id].Item1, DateTime.UtcNow.AddDays(5));

            return(new RenewResponseMessage(new Expires(Subscribers[id].Item2)));
        }