Gah - a solution with more questions. – EntropicLqd

Legacy:LibHTTP/NewsFeed

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
class mutNewsFeed extends mutator;
 
var HttpSock hs;
var NewsFeed nf;
 
event prebeginplay()
{
	hs = spawn(class'LibHTTP.HttpSock');
	hs.OnComplete = DownloadCompleted;
	hs.OnError = DownloadError;
	nf = new class'LibHTTP.NewsFeed';
	Log("------ NewsFeed loaded --------");
}
 
function Mutate(string MutateString, PlayerController Sender)
{
	local array<string> mut;
	Super.Mutate(MutateString, Sender);
	Split(MutateString, " ", mut);
	if (mut[0] ~= "rdf")
	{
		if (mut[1] ~= "fetch")
		{
			if (Caps(nf.Source) != Caps(mut[2]))
			{
				nf.Source = mut[2];
				hs.HttpRequest(nf.Source);
				Level.Game.BroadcastHandler.BroadcastText(none, Sender, "RDF> Retreiving news ...");
			}
			else Log("RDF> News from"@nf.ChannelTitle@"available");
		}
		else {
			if (int(mut[1]) < nf.Entries.length)
				Level.Game.BroadcastHandler.BroadcastText(none, Sender, "NEWS>"@nf.ChannelTitle@" - "@nf.Entries[int(mut[1])].Title);
				else Level.Game.BroadcastHandler.BroadcastText(none, Sender, "RDF> Only"@nf.Entries.length@"news items available");
		}
	}
}
 
function DownloadCompleted()
{
	if (hs.LastStatus == 200)
	{
		nf.LastUpdate = hs.now();
		nf.ParseRDFData(hs.ReturnData);
		if (nf.Entries.length > 0) Level.Game.BroadcastHandler.Broadcast(self, "RDF> News from"@nf.ChannelTitle@"available");
	}
}
 
function OnError(string ErrorMessage, optional string Param1, optional string Param2)
{
	Level.Game.BroadcastHandler.Broadcast(self, "RDF> Download error:"@ErrorMessage@Param1@Param2);
}