Пример #1
0
        //http://www.thetvdb.com/api/Updates.php?time=1243914332&type=all
        public Updates GetUpdates(string time, UpdatesType type)
        {
            Updates updates = new Updates();
            string  path    = string.Format("{0}/api/Updates.php?time={1}&type={2}", ActiveMirror, time, type.ToString().ToLowerInvariant());

            ConsoleWriteLine("GetUpdates: " + path);
            try
            {
                XElement xml = XDocument.Load(path).Element("Items");
                foreach (XElement update in xml.Elements("Time"))
                {
                    updates.Time = update.Value;
                    Cache.SaveTime(updates.Time);
                    break;
                }
                foreach (XElement update in xml.Elements("Series"))
                {
                    updates.Series.Add(update.Value);
                }
                foreach (XElement update in xml.Elements("Episode"))
                {
                    updates.Episodes.Add(update.Value);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            return(updates);
        }
Пример #2
0
        public static Func <Message, Unit> Handle(TgSystemMessageHandlerContext ctx) => message =>
        {
            var br         = message.Body;
            var msgId      = message.Id;
            var typeNumber = PeekTypeNumber(br);

            switch (typeNumber)
            {
            case GZipPackedTypeNumber:
                return(message.Apply(ReadGZipPacked(br).Apply(Message.WithBody)).Apply(Handle(ctx)));

            case MsgContainerTypeNumber:
                return(ReadContainer(br).Iter(Handle(ctx)));

            case RpcResultTypeNumber:
                ctx.Ack.Add(msgId);
                ctx.RpcResults.Add(HandleRpcResult(br));
                return(unit);

            case BadMsgNotification.Tag.TypeNumber:
                ctx.RpcResults.Add(HandleBadMsgNotification(br));
                return(unit);

            case BadMsgNotification.ServerSaltTag.TypeNumber:
                ctx.RpcResults.Add(HandleBadServerSalt(br, ctx));
                return(unit);

            case Pong.TypeNumber:
                ctx.RpcResults.Add(HandlePong(br));
                return(unit);

            case NewSession.TypeNumber:
                ctx.Ack.Add(msgId);
                HandleNewSessionCreated(br, ctx);
                return(unit);

            case MsgsAck.TypeNumber:
                // var msg = br.Apply(MsgsAck.Deserialize);
                // var ids = msg.MsgIds.Apply(xs => string.Join(", ", xs));
                // TlTrace.Trace("Ack: " + ids);
                return(unit);

            case FutureSalts.TypeNumber:
                return(unit);

            case MsgDetailedInfo.Tag.TypeNumber:
                return(unit);

            case MsgDetailedInfo.NewTag.TypeNumber:
                EnsureTypeNumber(br, typeNumber);
                MsgDetailedInfo.NewTag.DeserializeTag(br).AnswerMsgId.With(ctx.Ack.Add);
                return(unit);


            default:
                EnsureTypeNumber(br, typeNumber);

                UpdatesType.TryDeserialize(typeNumber, br).Match(updates =>
                {
                    ctx.Ack.Add(msgId);
                    // TgTrace.Trace("Updates " + updatesOpt.ToString());
                },
                                                                 () =>
                {
                    TgTrace.Trace("TgSystemMessageHandler: Unhandled msg " + typeNumber.ToString("x8"));
                });

                return(unit);
            }
        };