Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Add a simple twitter streaming client to hit the sampled statuses stream

Usage: ./twitstream <user> <pass>
  • Loading branch information...
commit c00e177d4e7cbf0c1aae99b1f596602071760894 1 parent 8f6ff5c
@rtyler authored
Showing with 64 additions and 0 deletions.
  1. +53 −0 twitstream/twitstream.adb
  2. +11 −0 twitstream/twitstream.gpr
View
53 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;
View
11 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;
Please sign in to comment.
Something went wrong with that request. Please try again.