From c00e177d4e7cbf0c1aae99b1f596602071760894 Mon Sep 17 00:00:00 2001 From: "R. Tyler Croy" Date: Wed, 17 Aug 2011 23:39:32 -0700 Subject: [PATCH] Add a simple twitter streaming client to hit the sampled statuses stream Usage: ./twitstream --- twitstream/twitstream.adb | 53 +++++++++++++++++++++++++++++++++++++++ twitstream/twitstream.gpr | 11 ++++++++ 2 files changed, 64 insertions(+) create mode 100644 twitstream/twitstream.adb create mode 100644 twitstream/twitstream.gpr diff --git a/twitstream/twitstream.adb b/twitstream/twitstream.adb new file mode 100644 index 0000000..08eac4d --- /dev/null +++ b/twitstream/twitstream.adb @@ -0,0 +1,53 @@ +with Ada.Command_Line, + Ada.Text_IO, + AWS.Client, + AWS.Messages, + AWS.Response; + +procedure TwitStream is + use Ada.Text_IO; + + package CLI renames Ada.Command_Line; + + Host : constant String := "http://stream.twitter.com/1/statuses/sample.json"; + Conn : AWS.Client.HTTP_Connection; + Result : AWS.Response.Data; +begin + if CLI.Argument_Count < 2 then + Put_Line ("Missing some arguments!"); + CLI.Set_Exit_Status (1); + return; + end if; + + Put_Line ("Starting TwitStream.."); + + AWS.Client.Create (Conn, Host, Server_Push => True); + AWS.Client.Set_WWW_Authentication (Conn, CLI.Argument (1), + CLI.Argument (2), + AWS.Client.Basic); + + Put_Line ("..connection created"); + + AWS.Client.Get (Conn, Result); + + Status_Check : declare + use AWS.Messages; + + Code : AWS.Messages.Status_Code := AWS.Response.Status_Code (Result); + begin + if Code = AWS.Messages.S200 then + Put_Line ("200 Status"); + else + Put_Line ("Bad status: " & AWS.Messages.Image (Code)); + Put_Line (AWS.Messages.Reason_Phrase (Code)); + CLI.Set_Exit_Status (1); + return; + end if; + end Status_Check; + + while true loop + Put (AWS.Client.Read_Until (Conn, "" & ASCII.LF)); + delay 0.1; + end loop; + +end TwitStream; diff --git a/twitstream/twitstream.gpr b/twitstream/twitstream.gpr new file mode 100644 index 0000000..fd17922 --- /dev/null +++ b/twitstream/twitstream.gpr @@ -0,0 +1,11 @@ +with "aws"; + +project TwitStream is + for Source_Dirs use ("."); + for Main use ("twitstream.adb"); + + package Builder is + for Default_Switches ("Ada") use ("-gnat05"); + end Builder; + +end TwitStream;