コード例 #1
0
 private void AddFavouriteRequest(MyWebRequest req)
 {
     int id = int.Parse(req.Parameters["id"].Split("#".ToCharArray(), 2)[0]);
     var res = new FavouriteAdd(id).Execute(_device.Proxy.SessionState.session, TypeResult.Xml);
     var resp = req.GetResponse();
     resp.AddHeader(HttpHeader.ContentType, WebServer.GetMime(".json").ToString());
     resp.AddHeader(HttpHeader.ContentLength, res.Length.ToString());
     resp.SendHeaders();
     res.CopyTo(resp.GetStream());
 }
コード例 #2
0
 private void StopRequest(MyWebRequest req)
 {
     if (!req.Parameters.ContainsKey("id"))
     {
         _device.Web.Send404(req);
         return;
     }
     Stop(req.Parameters["id"]);
     req.GetResponse().SendText("OK");
 }
コード例 #3
0
ファイル: ContentProvider.cs プロジェクト: northspb/p2pproxy
        public void SendResponse(MyWebRequest req)
        {
            string res;
            try
            {
                res = GetPlaylist(req);
            }
            catch (Exception ex)
            {
                res = ex.Message;
            }

            MyWebResponse resp = req.GetResponse();
            resp.SendText(res);
        }
コード例 #4
0
 private void Request(MyWebRequest req)
 {
     if (!req.Headers.ContainsKey("id"))
     {
         _server.Send404(req);
         return;
     }
     TcpClient client = new TcpClient("127.0.0.1", AceStream31.WebASPort);
     var stream = client.GetStream();
     Uri uri = new Uri(Acestream.Play(req.Headers["id"]));
     var sendreq = Encoding.UTF8.GetBytes(string.Format("GET {0}{1}\r\nHost: {2}:{3}\r\nConnection: Keep-Alive\r\n\r\n", uri.PathAndQuery, uri.Host, uri.Port));
     stream.Write(sendreq, 0, sendreq.Length);
     var resp = req.GetResponse();
     resp.AddHeader("Content-Type", "application/octet-stream");
     resp.AddHeader("Cache-control", "no-cache");
     resp.SendHeaders();
     stream.CopyTo(resp.GetStream());
 }
コード例 #5
0
        private void SendHead(MyWebRequest obj)
        {
            var info =
                _device.UpnpSettings.Profile.VoD.Info.FirstOrDefault(i => i.FileExt.Equals(".ts", StringComparison.OrdinalIgnoreCase)) ??
                _device.UpnpSettings.Profile.VoD.Info[0];
            var resp = obj.GetResponse();
            resp.AddHeader(HttpHeader.ContentType, WebServer.GetMime(".ts").ToString());
            if (_device.UpnpSettings.Profile.Live.SendContentLength)
                resp.AddHeader(HttpHeader.ContentLength, "50000000000");
            resp.AddHeader(HttpHeader.AcceptRanges, "none");
            resp.AddHeader(HttpHeader.Date, DateTime.Now.ToString("r"));
            resp.AddHeader(HttpHeader.Server, String.Format("{0}/{1}.{2} UPnP/1.1 TestDlna/{3}", Environment.OSVersion.Platform, Environment.OSVersion.Version.Major, Environment.OSVersion.Version.Minor, _device.ModelNumber));
            resp.AddHeader("Cache-control", "no-cache");
            resp.AddHeader("contentFeatures.dlna.org", info.DlnaType + info.Feature);
            resp.AddHeader("transferMode.dlna.org", "Streaming");
            resp.AddHeader("realTimeInfo.dlna.org", "DLNA.ORG_TLAG=*");
            resp.SendHeaders();

        }
コード例 #6
0
 private void GetChannelsRequest(MyWebRequest req)
 {
     var resp = req.GetResponse();
     resp.AddHeader(HttpHeader.ContentType, WebServer.GetMime(".xml").ToString());
     var res = new ArcList().Execute(_device.Proxy.SessionState.session, TypeResult.Xml);
     XDocument xd = XDocument.Load(res);
     var xchs = xd.Root.Element("channels").Elements().ToArray();
     foreach (var xch in xchs)
     {
         if (_device.Filter.Check("ttv").Find("ch" + xch.Attribute("id").Value).Check())
             xch.Remove();
     }
     MemoryStream ms = new MemoryStream();
     xd.Save(ms);
     ms.Position = 0;
     resp.AddHeader(HttpHeader.ContentLength, ms.Length.ToString());
     resp.SendHeaders();
     ms.CopyTo(resp.GetStream());
 }
コード例 #7
0
 private void AddRequest(MyWebRequest req)
 {
     if (!req.Parameters.ContainsKey("channel_id"))
     {
         _device.Web.Send404(req);
         return;
     }
     Channel ch = _device.ChannelsProvider.GetChannels().FirstOrDefault(channel => channel.id == int.Parse(req.Parameters["channel_id"]));
     if (ch == null)
     {
         _device.Web.Send404(req);
         return;
     }
     DateTime start = !req.Parameters.ContainsKey("start") ? DateTime.Now : ParseDateTime(req.Parameters["start"]);
     DateTime end = !req.Parameters.ContainsKey("end") ? DateTime.Today.AddDays(1).AddTicks(-1) : ParseDateTime(req.Parameters["end"]);
     Add(ch, start, end, req.Parameters.ContainsKey("name") ? req.Parameters["name"] : string.Empty);
     req.GetResponse().SendText("OK");
     
 }
コード例 #8
0
 private void SendFile(string url, MyWebRequest req, string ext)
 {
     
     var info =
         _device.UpnpSettings.Profile.Live.Info.FirstOrDefault(i => i.FileExt.Equals(ext, StringComparison.OrdinalIgnoreCase)) ??
         _device.UpnpSettings.Profile.Live.Info[0];
     var resp = req.GetResponse();
     var mime = WebServer.GetMime(ext) ?? WebServer.GetMime(".ts");
     resp.AddHeader(HttpHeader.ContentType, mime.ToString());
     resp.AddHeader("Cache-control", "no-cache");
     resp.AddHeader("contentFeatures.dlna.org", info.DlnaType + info.Feature);
     resp.AddHeader("transferMode.dlna.org", "Streaming");
     resp.AddHeader("realTimeInfo.dlna.org", "DLNA.ORG_TLAG=*");
     resp.SendFile(url);
 }
コード例 #9
0
        public override void Play(MyWebRequest req)
        {

            if (!req.Parameters.ContainsKey("id"))
                return;
            var plugpath = GetPluginFromPath(req.Url);
            var plugin = _plugins.FirstOrDefault(p => plugpath == p.Id);
            if (plugin != null)
            {
                
                var content = plugin.GetContent(req.Parameters);
                if (content == null || content is IPluginContainer)
                    return;
                var source = content.GetSourceUrl();

                if (source.Type == SourceType.ContentId || source.Type == SourceType.Torrent)
                {
                    var ts = GetContentUrl(source, req);
                    string url = ts.GetPlayTask().Result;
                    if (ts == null || string.IsNullOrEmpty(url))
                    {
                        ts.Disconnect();
                        req.GetResponse().SendText("File Not Found");
                        return;
                    }
                    TorrentStream ts1 = new TorrentStream(req.Client);
                    ts1.Connect();
                    var resp = ts1.ReadTorrent(source.Url, (TTVApi.SourceType) (byte) source.Type);
                    string file = resp.Files[req.Parameters.ContainsKey("index") ? int.Parse(req.Parameters["index"]) : 0];
                    string ext = Path.GetExtension(file);
                    ts1.Disconnect();
                    if (content.Translation == TranslationType.Broadcast)
                        SendBroadcast(url, req, ext);
                    else if (content.Translation == TranslationType.VoD)
                    {
                        for (int i = 0; i < ts.Owner.Count && ts.Owner.Count > 1; i++)
                            ts.Owner[i].Close();
                        SendFile(url, req, ext);
                    }
                    Thread.Sleep(5712);
                    if (ts.Owner.All(c => !c.Connected))
                    {
                        if (content.Translation == TranslationType.Broadcast && !_device.Proxy.Broadcaster.Contains(url) ||
                            content.Translation == TranslationType.VoD)
                        {
                            ts.Disconnect();
                            _device.Proxy.RemoveFromTsPoos(ts);
                        }
                    }
                }
                else if (source.Type == SourceType.File)
                {
                    string ext = Path.GetExtension(source.Url);
                    if (content.Translation == TranslationType.Broadcast)
                        SendBroadcast(source.Url, req, ext);
                    else if (content.Translation == TranslationType.VoD)
                        SendFile(source.Url, req, ext);
                }
            }
        }
コード例 #10
0
 private void IsValidated(MyWebRequest request, [UpnpServiceArgument("A_ARG_TYPE_DeviceID")][AliasAttribute("DeviceID")] string DeviceID)
 {
     MyWebResponse response = request.GetResponse();
     response.SendSoapHeadersBody("1");
 }
コード例 #11
0
        private void GetCurrentConnectionInfo(MyWebRequest request,
            [AliasAttribute("ConnectionID")][UpnpServiceArgument("A_ARG_TYPE_ConnectionID")] string ConnectionID)
        {
            if (ConnectionID != "0")
                throw new SoapException(402, "Invalid Args");

            MyWebResponse response = request.GetResponse();
            response.SendSoapHeadersBody("-1", "-1", string.Empty, string.Empty, "-1", "Output", "OK");
        }
コード例 #12
0
 private void GetProtocolInfo(MyWebRequest request)
 {
     MyWebResponse response = request.GetResponse();
     response.SendSoapHeadersBody(sourceProtocolInfo, string.Empty);
 }
コード例 #13
0
 private void HttpRequest(MyWebRequest req)
 {
     string[] url = req.Url.Split("/".ToCharArray(), 2, StringSplitOptions.RemoveEmptyEntries);
     var plugin = _plugins.FirstOrDefault(proxy => proxy.Id == url[0]);
     if (plugin == null)
     {
         _device.Web.Send404(req);
         return;
     }
     var res = plugin.HttpRequest(url[1], req.Parameters);
     var resp = req.GetResponse();
     foreach (var header in res.Headers)
         resp.AddHeader(header.Key, header.Value);
     resp.SendHeaders(res.ResultState);
     res.GetStream().CopyTo(resp.GetStream());
 }
コード例 #14
0
 private void GetSearchCapabilities(MyWebRequest request)
 {
     MyWebResponse response = request.GetResponse();
     response.SendSoapHeadersBody("");
 }
コード例 #15
0
        private void X_GetFeatureList(MyWebRequest request)
        {
            StringBuilder sb = new StringBuilder();

            using (XmlWriter writer = XmlWriter.Create(sb, new XmlWriterSettings() { OmitXmlDeclaration = true }))
            {
                writer.WriteStartElement("Features", "urn:schemas-upnp-org:av:avs");
                writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");
                writer.WriteAttributeString("xsi", "schemaLocation", null, "urn:schemas-upnp-org:av:avs http://www.upnp.org/schemas/av/avs.xsd");

                writer.WriteStartElement("Feature");
                writer.WriteAttributeString("name", "samsung.com_BASICVIEW");
                writer.WriteAttributeString("version", "1");

                writer.WriteStartElement("container");
                writer.WriteAttributeString("id", "0");
                writer.WriteAttributeString("type", "object.item.videoItem");
                writer.WriteEndElement();

                writer.WriteEndElement();

                writer.WriteEndElement();
            }
            MyWebResponse response = request.GetResponse();
            response.SendSoapHeadersBody(sb.ToString());

        }
コード例 #16
0
ファイル: UpnpService.cs プロジェクト: northspb/p2pproxy
 private void SendDescription(MyWebRequest req)
 {
     var resp = req.GetResponse();
     resp.AddHeader(HttpHeader.ContentLength, descArray.Length.ToString());
     resp.AddHeader(HttpHeader.ContentType, "text/xml; charset=\"utf-8\"");
     resp.SendHeaders();
     var stream = new MemoryStream(descArray);
     stream.CopyTo(resp.GetStream());
 }
コード例 #17
0
 private void AllRequest(MyWebRequest obj)
 {
     obj.GetResponse().SendText(GetXml(_device.Records.GetRecords()).ToString());
 }
コード例 #18
0
 public override void Play(MyWebRequest req)
 {
     string id = req.Parameters["id"].Split("#".ToCharArray(), 2)[0];
     Records rec = _device.Records[id];
     req.GetResponse().SendFile(rec.Path.LocalPath);
 }
コード例 #19
0
 private void SendBroadcast(string url, MyWebRequest req, string ext)
 {
     var broadcast = _device.Proxy.Broadcaster.GetStream(url, req.Parameters, req.Client);
     try
     {
         SendHeaders(req, ext);
         broadcast.CopyTo(req.GetResponse().GetStream());
     } finally
     {
         broadcast.Close();
     }
     //string broadcast = _device.Proxy.FindBroadcastUrl(url);
     //if (string.IsNullOrEmpty(broadcast))
     //    broadcast = _device.Proxy.StartBroadcastStream(url, req.Parameters.ContainsKey("transcode") ? req.Parameters["transcode"] : "");
     //_device.Proxy.AddVlcBroadcastClient(broadcast, req.Client);
     //req.GetResponse().SendBroadcast(broadcast, request => SendHeaders(request, ext));
     //_device.Proxy.StopBroadcast(broadcast, url);
 }
コード例 #20
0
 private void GetSortCapabilities(MyWebRequest request)
 {
     MyWebResponse response = request.GetResponse();
     response.SendSoapHeadersBody("dc:title,dc:date");
 }
コード例 #21
0
 private void SendHeaders(MyWebRequest req, string ext)
 {
     var info =
         _device.UpnpSettings.Profile.Live.Info.FirstOrDefault(i => i.FileExt.Equals(ext, StringComparison.OrdinalIgnoreCase)) ??
         _device.UpnpSettings.Profile.Live.Info[0];
     var resp = req.GetResponse();
     resp.AddHeader(HttpHeader.ContentType, WebServer.GetMime(".ts").ToString());
     if (!resp.HeaderContains(HttpHeader.ContentLength) && _device.UpnpSettings.Profile.Live.SendContentLength)
         resp.AddHeader(HttpHeader.ContentLength, "2500000000");
     if (!resp.HeaderContains(HttpHeader.AcceptRanges))
         resp.AddHeader(HttpHeader.AcceptRanges, "none");
     resp.AddHeader("Cache-control", "no-cache");
     resp.AddHeader("contentFeatures.dlna.org", info.DlnaType + info.Feature);
     resp.AddHeader("transferMode.dlna.org", "Streaming");
     resp.AddHeader("realTimeInfo.dlna.org", "DLNA.ORG_TLAG=*");
     resp.SendHeaders();
 }
コード例 #22
0
 private void GetSystemUpdateID(MyWebRequest request)
 {
     MyWebResponse response = request.GetResponse();
     response.SendSoapHeadersBody("0");
 }
コード例 #23
0
ファイル: UpnpService.cs プロジェクト: northspb/p2pproxy
 private void ProceedEventUnsub(MyWebRequest req)
 {
     req.GetResponse().SendHeaders();
 }
コード例 #24
0
ファイル: UpnpService.cs プロジェクト: northspb/p2pproxy
        private void GetDescription(MyWebRequest request)
        {
            MyWebResponse response = request.GetResponse();
            response.AddHeader(HttpHeader.ContentLength, this.descArray.Length.ToString());
            response.AddHeader(HttpHeader.ContentType, "text/xml; charset=\"utf-8\"");

            using (MemoryStream stream = new MemoryStream(this.descArray))
            {
                response.SendHeaders();

                stream.CopyTo(response.GetStream());
            }
        }
コード例 #25
0
 private void GetCurrentConnectionIDs(MyWebRequest request)
 {
     MyWebResponse response = request.GetResponse();
     response.SendSoapHeadersBody("0");
 }
コード例 #26
0
        //private void NewPlay(MyWebRequest req, TranslationStream url)
        //{
        //    string cid = url.Source;
        //    if (url.Type != SourceType.ContentId)
        //    {
        //        TorrentStream ts1 = new TorrentStream(req.Client);
        //        ts1.Connect();
        //        var respData = ts1.ReadTorrent(url.Source, url.Type);
        //        cid = ts1.GetContentId(respData);
        //    }
        //    var stream = _device.Proxy.GetStreamFromCID(cid, req.Parameters);
        //    var resp = req.GetResponse();
        //    //resp.AddHeader("Transfer-Encoding", "chunked");
        //    //resp.AddHeader("Content-Type", "video/mp2t");
        //    //resp.SendHeaders();
        //    //req.GetResponse().AddHeader("Transfer-Encoding", "chunked");
        //    SendHead(req);
        //    try
        //    {
        //        stream.CopyTo(req.GetResponse().GetStream());
        //    }
        //    catch
        //    {
        //        stream.Close();
        //    }
        //}

        public override void Play(MyWebRequest req)
        {
            int id = int.Parse(req.Parameters["id"].Split("#".ToCharArray(), 2)[0]);
            if (_device.Proxy.SessionState == null)
                throw new Exception("Необходима авторизация");
            var url = new TranslationStream(id).Run(_device.Proxy.SessionState.session);
            if (!url.IsSuccess)
            {
                if (url.Error == ApiError.incorrect)
                {
                    while (!_device.Proxy.Login() && _device.Proxy.SessionState.Error == ApiError.noconnect)
                    {
                        P2pProxyApp.Log.Write("Попыдка авторизации", TypeMessage.Info);
                    }
                    if (!_device.Proxy.SessionState.IsSuccess)
                        throw new Exception("No authorized");
                    Play(req);
                    return;
                }
                throw new Exception(url.error.ToString());
            }

            var ts = _device.Proxy.GetTsClient(url.Source);
            Task<string> waiter;
            if (ts == null)
            {
                if (!req.Client.Connected)
                    return;
                ts = new TorrentStream(req.Client);
                ts.Connect();
                waiter = ts.Play(url.Source, url.Type);

                if (waiter != null)
                    _device.Proxy.AddToTsPool(ts);
            }
            else
            {
                waiter = ts.GetPlayTask();
                ts.Owner.Add(req.Client);
            }

            if (waiter != null && !waiter.IsCompleted)
                waiter.Wait();
            else if (waiter == null)
                throw new FileNotFoundException();

            if (string.IsNullOrEmpty(waiter.Result))
            {
                _device.Proxy.RemoveFromTsPoos(ts);
                req.GetResponse().SendText("AceStream TimeOut");
                return;
            }
            string aceurl = waiter.Result;
            string file = string.Empty;
            try
            {
                Uri aceuri = new Uri(aceurl);

                var broadcast = _device.Proxy.Broadcaster.GetStream(aceurl, req.Parameters, req.Client);
                
                //file = _device.Proxy.FindBroadcastUrl(aceurl);
                //if (string.IsNullOrEmpty(file))
                //    file = _device.Proxy.StartBroadcastStream(aceurl,
                //        req.Parameters.ContainsKey("transcode") ? req.Parameters["transcode"] : "");

                //_device.Proxy.AddVlcBroadcastClient(file, req.Client);
                SendHead(req);
                try
                {
                    broadcast.CopyTo(req.GetResponse().GetStream());
                    //req.GetResponse().SendBroadcast(file);
                }
                catch
                {
                    
                }
                finally
                {
                    broadcast.Close();
                    req.Client.Close();
                    //if (req.Client.Connected)
                    //    req.Client.Close();
                    if (!_device.Proxy.Broadcaster.Contains(aceurl))
                    {
                        ts.Disconnect();
                        _device.Proxy.RemoveFromTsPoos(ts);
                    }
                }
                //if (_device.UpnpSettings.Profile.Live.SendHead)
                //    req.GetResponse().SendBroadcast(file, SendHead);
                //else
                //    req.GetResponse().SendBroadcast(file);
                
                //if (_device.Proxy.StopBroadcast(file, aceurl))
                //{
                //    ts.Disconnect();
                //    _device.Proxy.RemoveFromTsPoos(ts);
                //}
            }
            catch (Exception ex)
            {
                
                P2pProxyApp.Log.Write(ex.Message, TypeMessage.Error);
                ts.Disconnect();
                _device.Proxy.RemoveFromTsPoos(ts);
                _device.Proxy.Broadcaster.StopBroadcast(aceurl);
            }
        }
コード例 #27
0
        //private void PlayNew(MyWebRequest req, ArcStream url)
        //{
        //    string cid = url.source;
        //    if (url.Type != SourceType.ContentId)
        //    {
        //        TorrentStream ts1 = new TorrentStream(req.Client);
        //        ts1.Connect();
        //        var respData = ts1.ReadTorrent(url.source, url.Type);
        //        cid = ts1.GetContentId(respData);
        //    }
        //    var stream = _device.Proxy.Broadcaster.GetSource(cid);
        //    req.GetResponse().SendFile(stream);
        //}

        public override void Play(MyWebRequest req)
        {
            locker.isSet = true;
            int id = int.Parse(req.Parameters["id"].Split("#".ToCharArray(), 2)[0]);
            var url = new ArcStream(id).Run(_device.Proxy.SessionState.session);
            if (!url.IsSuccess)
            {
                while (!_device.Proxy.Login() && _device.Proxy.SessionState.Error == ApiError.noconnect)
                {

                }
                if (!_device.Proxy.SessionState.IsSuccess)
                    throw new Exception("No authorized");
                Play(req);
                return;
            }
            var ts = _device.Proxy.GetTsClient(url.source);
            Task<string> waiter;
            
            try
            {
                if (ts == null)
                {
                    if (!req.Client.Connected)
                        return;
                    ts = new TorrentStream(req.Client);
                    ts.Connect();
                    waiter = ts.Play(url.source, url.Type);

                    if (waiter != null)
                        _device.Proxy.AddToTsPool(ts);
                }
                else
                {
                    waiter = ts.GetPlayTask();
                    ts.Owner[0].Close();
                    ts.Owner.Add(req.Client);
                    ts.Owner.RemoveAt(0);
                
                }
                locker.isSet = false;
                if (waiter != null && !waiter.IsCompleted)
                    waiter.Wait();
                else if (waiter == null)
                    throw new FileNotFoundException();

                if (string.IsNullOrEmpty(waiter.Result))
                {
                    _device.Proxy.RemoveFromTsPoos(ts);
                }
                while (plaing) Thread.Sleep(256);
                plaing = true;
                req.GetResponse().SendFile(waiter.Result);
                plaing = false;
                do Thread.Sleep(512);
                while (locker.isSet); 
                if (ts.Owner.All(c => !c.Connected))
                {
                        
                    ts.Disconnect();
                    _device.Proxy.RemoveFromTsPoos(ts);
                    //GC.Collect();
                }
                
            }
            catch (Exception ex)
            {
                P2pProxyApp.Log.Write(ex.Message, TypeMessage.Error);
                ts.Disconnect();
                _device.Proxy.RemoveFromTsPoos(ts);
                plaing = false;
            }
            
        }
コード例 #28
0
ファイル: UpnpService.cs プロジェクト: northspb/p2pproxy
        private void ProceedEventSub(MyWebRequest req)
        {
            uint timeout = uint.Parse(req.Headers["TIMEOUT"].Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries).Last());

            string sid;
            if (req.Headers.ContainsKey("SID"))
            {
                sid = req.Headers["SID"];
            }
            else
            {
                sid = "uuid:" + Guid.NewGuid();
                string callback = req.Headers["CALLBACK"];
                int startIdx = callback.IndexOf('<') + 1;
                int endIdx = callback.IndexOf('>', startIdx);
                Uri uri = new Uri(callback.Substring(startIdx, endIdx - startIdx));

                new SendEventDel(SendEvent).BeginInvoke(sid, uri, null, null);
            }

            var resp = req.GetResponse();
            resp.AddHeader(HttpHeader.ContentLength, "0");
            resp.AddHeader("SID", sid);
            resp.AddHeader("TIMEOUT", "Second-" + timeout);

            resp.SendHeaders();
        }
コード例 #29
0
        private void Browse(MyWebRequest request,
            [ObfuscationAttribute][UpnpServiceArgument("A_ARG_TYPE_ObjectID")][AliasAttribute("ObjectID")] string ObjectID,
            [ObfuscationAttribute][UpnpServiceArgument("A_ARG_TYPE_BrowseFlag")][AliasAttribute("BrowseFlag")] string BrowseFlag,
            [ObfuscationAttribute][UpnpServiceArgument("A_ARG_TYPE_Filter")][AliasAttribute("Filter")] string Filter,
            [ObfuscationAttribute][UpnpServiceArgument("A_ARG_TYPE_Index")][AliasAttribute("StartingIndex")] string StartingIndex,
            [ObfuscationAttribute][UpnpServiceArgument("A_ARG_TYPE_Count")][AliasAttribute("RequestedCount")] string RequestedCount,
            [ObfuscationAttribute][UpnpServiceArgument("A_ARG_TYPE_SortCriteria")] [AliasAttribute("SortCriteria")] string SortCriteria)
        {

            string Result = "", NumberReturned = "", TotalMatches = "";
            uint startingIndex, requestedCount;
            BrowseFlag browseFlag;
            
            if (!uint.TryParse(StartingIndex, out startingIndex) || !uint.TryParse(RequestedCount, out requestedCount) ||
                !Enum.TryParse(BrowseFlag, true, out browseFlag))
            {
                if (P2pProxyApp.Debug)
                {
                    Console.WriteLine("Invalid Args");
                }
                throw new SoapException(402, "Invalid Args");
            }
                

            SortCriteria = (SortCriteria == string.Empty) ? "+dc:title" : SortCriteria;
            try
            {
                this.device.ItemManager.Browse(request.Headers, ObjectID, browseFlag, Filter, startingIndex, requestedCount,
                                           SortCriteria, out Result, out NumberReturned, out TotalMatches);
            }
            catch (Exception ex)
            {
                P2pProxyApp.Log.Write(string.Format("Content::Browse({0}) - {1}", ObjectID, ex.Message), TypeMessage.Error);
                return;
            }
            

            MyWebResponse response = request.GetResponse();
            response.SendSoapHeadersBody(Result, NumberReturned, TotalMatches, "0");
        }
コード例 #30
0
 private void RegisterDevice(MyWebRequest request, [UpnpServiceArgument("A_ARG_TYPE_RegistrationReqMsg")][AliasAttribute("RegistrationReqMsg")] string RegistrationReqMsg)
 {
     MyWebResponse response = request.GetResponse();
     response.SendSoapHeadersBody("OK");
 }