Beispiel #1
0
        public async Task <IGenaSubscription> Subscribe(GenaSubscriptionRequest request)
        {
            Uri address = new Uri(request.BaseAddress, request.PublisherPath);
            HttpRequestMessage httpRequest = new HttpRequestMessage(new HttpMethod("SUBSCRIBE"), address);

            httpRequest.Headers.Clear();

            httpRequest.Headers.Add("HOST", address.Authority);
            httpRequest.Headers.Add("CONNECTION", (string)null);
            httpRequest.Headers.Add("NT", "upnp:event");
            httpRequest.Headers.Add("TIMEOUT", "Second-" + request.Timeout);
            httpRequest.Headers.Add("CALLBACK", "<" + request.Callback + ">");

            HttpResponseMessage response = await HttpHandler.SendAsync(httpRequest);

            GenaSubscription subscribtion = new GenaSubscription()
            {
                Id      = response.Headers.GetValues("SID").FirstOrDefault(),
                Address = address
            };

            subscriptions.Add(subscribtion);

            return(subscribtion);
        }
Beispiel #2
0
        public async Task Unsubscribe(IGenaSubscription subscription)
        {
            GenaSubscription sub = subscription as GenaSubscription;

            if (sub == null)
            {
                return;
            }

            HttpRequestMessage httpRequest = new HttpRequestMessage(new HttpMethod("UNSUBSCRIBE"), sub.Address);

            httpRequest.Headers.Clear();

            httpRequest.Headers.Add("HOST", sub.Address.Authority);
            httpRequest.Headers.Add("SID", subscription.Id);

            await HttpHandler.SendAsync(httpRequest);
        }