//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); }
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); } };