public override string GetPlaylist(MyWebRequest req) { int channel_id = 0; if (req.Parameters.ContainsKey("id")) channel_id = int.Parse(req.Parameters["id"]); return GetEpg.XRun(this._device.Proxy.SessionState.session, channel_id).ToString(); }
public void SendResponse(MyWebRequest req) { string text; try { text = this.GetPlaylist(req); } catch (Exception ex) { text = ex.Message; } req.GetResponse().SendText(text); }
private void AddFavouriteRequest(MyWebRequest req) { FavouriteAdd favouriteAdd = FavouriteAdd.Run(this._device.Proxy.SessionState.session, int.Parse(req.Parameters["id"].Split("#".ToCharArray(), 2)[0])); MyWebResponse response = req.GetResponse(); int num1 = 1; string str1 = this._device.Web.GetMime(".xml").ToString(); string charset1 = "utf-8"; response.AddHeader((HttpHeader)num1, str1, charset1); byte[] bytes = Encoding.UTF8.GetBytes(favouriteAdd.GetXState()); int num2 = 0; string str2 = bytes.Length.ToString(); string charset2 = "utf-8"; response.AddHeader((HttpHeader)num2, str2, charset2); int code = 200; response.SendHeaders(code); response.GetStream().Write(bytes, 0, bytes.Length); }
private void LoginRequest(MyWebRequest obj) { this.Proxy.Login(); MyWebResponse response = obj.GetResponse(); byte[] bytes = Encoding.UTF8.GetBytes(this.Proxy.SessionState.ToString()); int num1 = 1; string str1 = "text/xml"; string charset1 = "utf-8"; response.AddHeader((HttpHeader)num1, str1, charset1); int num2 = 0; string str2 = bytes.Length.ToString(); string charset2 = "utf-8"; response.AddHeader((HttpHeader)num2, str2, charset2); int code = 200; response.SendHeaders(code); response.GetStream().Write(bytes, 0, bytes.Length); }
private void ScreenRequest(MyWebRequest myWebRequest) { if (!myWebRequest.Parameters.ContainsKey("id")) { this._device.Web.Send404(myWebRequest); } else { byte[] bytes = Encoding.UTF8.GetBytes(TranslationScreen.XRun(this._device.Proxy.SessionState.session, int.Parse(myWebRequest.Parameters["id"])).ToString()); MyWebResponse response = myWebRequest.GetResponse(); int num1 = 1; string str1 = this._device.Web.GetMime(".xml").ToString(); string charset1 = "utf-8"; response.AddHeader((HttpHeader)num1, str1, charset1); int num2 = 0; string str2 = bytes.Length.ToString(); string charset2 = "utf-8"; response.AddHeader((HttpHeader)num2, str2, charset2); int code = 200; response.SendHeaders(code); response.GetStream().Write(bytes, 0, bytes.Length); } }
public override void Play(MyWebRequest req) { throw new NotImplementedException(); }
public override void Play(MyWebRequest req) { GetStream getStream = GetStream.Run(this._device.Proxy.SessionState.session, int.Parse(req.Parameters["id"].Split("#".ToCharArray(), 2)[0])); if (!getStream.IsSuccess()) { if (getStream.error != ApiError.incorrect) throw new Exception(getStream.error.ToString()); while (!this._device.Proxy.Login() && this._device.Proxy.SessionState.error == ApiError.noconnect) TtvProxy.Log.WriteInfo("Попыдка авторизации на torrent-tv.ru"); if (!this._device.Proxy.SessionState.IsSuccess()) throw new Exception("No authorized"); this.Play(req); } else { TorrentStream ts = this._device.Proxy.GetTsClient(getStream.source); Task<string> task; if (ts == null) { if (!req.Client.Connected) return; ts = new TorrentStream(req.Client); ts.Connect(); task = ts.Play(getStream.source, getStream.type, 0); if (task != null) this._device.Proxy.AddToTsPool(ts); } else { task = ts.GetPlayTask(); ts.Owner.Add(req.Client); } if (task != null && !task.IsCompleted) task.Wait(); else if (task == null) throw new FileNotFoundException(); if (string.IsNullOrEmpty(task.Result)) { this._device.Proxy.RemoveFromTsPoos(ts); req.GetResponse().SendText("AceStream TimeOut"); } else { string result = task.Result; string str = string.Empty; try { str = this._device.Proxy.FindBroadcastUrl(result); if (string.IsNullOrEmpty(str)) str = this._device.Proxy.StartBroadcastStream(result, (string)null); this._device.Proxy.AddVlcBroadcastClient(str, req.Client); req.GetResponse().SendStream(str, (Action<MyWebRequest>)null); if (req.Client.Connected) req.Client.Close(); if (!this._device.Proxy.StopBroadcast(str, result)) return; ts.Disconnect(true); this._device.Proxy.RemoveFromTsPoos(ts); } catch (Exception ex) { TtvProxy.Log.WriteError(ex.Message); ts.Disconnect(true); this._device.Proxy.RemoveFromTsPoos(ts); this._device.Proxy.StopBroadcast(str, result); } } } }
public override string GetPlaylist(MyWebRequest req) { if (!req.Parameters.ContainsKey("type")) return AllTranslation.XRun(this._device.Proxy.SessionState.session, req.Parameters.ContainsKey("filter") ? req.Parameters["filter"] : "all").ToString(); try { this.UpdateTranslations(req.Parameters); } catch (Exception ex) { return ex.Message; } Playlist playlist = Playlist.CreatePlaylist(req.Parameters["type"], Playlist.ContentType.Channel); List<Channel> list = req.Parameters.ContainsKey("group") ? Enumerable.ToList<Channel>(Enumerable.Where<Channel>((IEnumerable<Channel>)this._apires.channels, (Func<Channel, bool>)(channel => channel.group == req.Parameters["group"]))) : this._apires.channels; if (req.Parameters.ContainsKey("sort")) { string str = req.Parameters["sort"]; if (!(str == "group")) { if (!(str == "-group")) { if (!(str == "title")) { if (!(str == "-title")) { if (!(str == "id")) { if (str == "-id") list = Enumerable.ToList<Channel>((IEnumerable<Channel>)Enumerable.OrderByDescending<Channel, string>((IEnumerable<Channel>)list, (Func<Channel, string>)(channel => channel.id))); } else list = Enumerable.ToList<Channel>((IEnumerable<Channel>)Enumerable.OrderBy<Channel, string>((IEnumerable<Channel>)list, (Func<Channel, string>)(channel => channel.id))); } else list = Enumerable.ToList<Channel>((IEnumerable<Channel>)Enumerable.OrderByDescending<Channel, string>((IEnumerable<Channel>)list, (Func<Channel, string>)(channel => channel.name))); } else list = Enumerable.ToList<Channel>((IEnumerable<Channel>)Enumerable.OrderBy<Channel, string>((IEnumerable<Channel>)list, (Func<Channel, string>)(channel => channel.name))); } else list = Enumerable.ToList<Channel>((IEnumerable<Channel>)Enumerable.OrderByDescending<Channel, string>((IEnumerable<Channel>)list, (Func<Channel, string>)(channel => channel.group))); } else list = Enumerable.ToList<Channel>((IEnumerable<Channel>)Enumerable.OrderBy<Channel, string>((IEnumerable<Channel>)list, (Func<Channel, string>)(channel => channel.group))); } foreach (Channel channel in list) playlist.AddLine((object)channel, req.Headers["host"], false, req.Parameters.ContainsKey("transcode") ? "&transcode=" + req.Parameters["transcode"] : ""); return playlist.ToString(); }
public static MyWebRequest Create(TcpClient client) { MyWebRequest myWebRequest = new MyWebRequest() { headers = new Dictionary<string, string>((IEqualityComparer<string>)StringComparer.OrdinalIgnoreCase), urlParams = new Dictionary<string, string>((IEqualityComparer<string>)StringComparer.OrdinalIgnoreCase), Client = client, stream = client.GetStream(), QueryString = string.Empty }; StringBuilder stringBuilder = new StringBuilder(128); bool flag1 = false; bool flag2 = true; int num1; while ((num1 = myWebRequest.stream.ReadByte()) >= 0) { if (num1 == 10 & flag1) { string str1 = stringBuilder.ToString(0, stringBuilder.Length - 1); if (!(str1 == string.Empty)) { stringBuilder.Clear(); if (flag2) { string[] strArray1 = str1.Split(new char[1] { ' ' }, 2, StringSplitOptions.RemoveEmptyEntries); myWebRequest.method = (HttpMethod)Enum.Parse(typeof(HttpMethod), strArray1[0], true); int length = strArray1[1].LastIndexOf(' '); myWebRequest.version = strArray1[1].Substring(length + 1); string[] strArray2 = HttpUtility.UrlDecode(strArray1[1].Substring(0, length)).Split(new char[1] { '?' }, 2, StringSplitOptions.RemoveEmptyEntries); myWebRequest.url = strArray2[0]; if (strArray2.Length > 1) myWebRequest.QueryString = strArray2[1]; if (strArray2.Length == 2) { string str2 = strArray2[1]; char[] separator1 = new char[1] { '&' }; int num2 = 1; foreach (string str3 in str2.Split(separator1, (StringSplitOptions)num2)) { char[] separator2 = new char[1] { '=' }; int count = 2; int num3 = 1; string[] strArray3 = str3.Split(separator2, count, (StringSplitOptions)num3); myWebRequest.urlParams[strArray3[0]] = strArray3.Length == 2 ? strArray3[1] : string.Empty; } } flag2 = false; } else { string[] strArray = str1.Split(new char[1] { ':' }, 2, StringSplitOptions.RemoveEmptyEntries); myWebRequest.headers[strArray[0].Trim()] = strArray.Length > 1 ? strArray[1].Trim() : string.Empty; } flag1 = false; } else break; } else if (num1 == 13) { stringBuilder.Append((char)num1); flag1 = true; } else { stringBuilder.Append((char)num1); flag1 = false; } } return myWebRequest; }
public void SendFile(MyWebRequest req, string fpath) { if (!System.IO.File.Exists(fpath)) this.Send404(req); FileStream fileStream = System.IO.File.OpenRead(fpath); MyWebResponse response = req.GetResponse(); response.AddHeader(HttpHeader.ContentType, this._mimes[Path.GetExtension(fpath)].ToString(), "utf-8"); response.AddHeader(HttpHeader.ContentLength, fileStream.Length.ToString(), "utf-8"); fileStream.CopyTo(response.GetStream()); }
public void Send404(MyWebRequest req) { MyWebResponse response = req.GetResponse(); response.AddHeader(HttpHeader.ContentType, "text/html; charset=UTF-8", "utf-8"); byte[] bytes = Encoding.UTF8.GetBytes("<h1>404. Файл не найден</h1>"); response.AddHeader(HttpHeader.ContentLength, bytes.Length.ToString(), "utf-8"); response.SendHeaders(200); try { response.GetStream().Write(bytes, 0, bytes.Length); } catch (Exception ex) { TtvProxy.Log.Write(ex.Message, TypeMessage.Error); } }
internal MyWebResponse(MyWebRequest req, NetworkStream stream) { this._request = req; this._stream = stream; this._headers = new Dictionary<string, string>((IEqualityComparer<string>)StringComparer.OrdinalIgnoreCase); }
public abstract void Play(MyWebRequest req);
public abstract string GetPlaylist(MyWebRequest req);