1 internal async Task<Boolean> IsMessageOnQueue()
2 {
3 var storageConnectionString = "DefaultEndpointsProtocol=https;AccountName=ejectabed;AccountKey=xxx";
4 var storageAccount = CloudStorageAccount.Parse(storageConnectionString);
5 var client = storageAccount.CreateCloudQueueClient();
6 var queue = client.GetQueueReference("sloan");
7 var queueExists = await queue.ExistsAsync();
8 if (!queueExists)
9 {
10 GpioStatus.Text = "Queue does not exist or is unreachable.";
11 return false;
12 }
13 var message = await queue.GetMessageAsync();
14 if (message != null)
15 {
16 await queue.DeleteMessageAsync(message);
17 return true;
18 }
19 GpioStatus.Text = "No message for the EjectABed.";
20 return false;
21 }
22
1 internal void RunEjectionSequence()
2 {
3 bedCommand.Eject();
4 bedTimer = new DispatcherTimer();
5 bedTimer.Interval = TimeSpan.FromSeconds(ejectionLength);
6 bedTimer.Tick += LightTimer_Tick;
7 bedTimer.Start();
8 }
1 class Program
2 {
3 static String storageConnectionString = "DefaultEndpointsProtocol=https;AccountName=ejectabed;AccountKey=xxx";
4
5 static void Main(string[] args)
6 {
7 Console.WriteLine("Start");
8 Console.WriteLine("Press The 'E' Key To Eject. Press 'Q' to quit...");
9
10 var keyInfo = ConsoleKey.S;
11 do
12 {
13 keyInfo = Console.ReadKey().Key;
14 if (keyInfo == ConsoleKey.E)
15 {
16 CreateQueue();
17 WriteToQueue();
18 //ReadFromQueue();
19 }
20
21 } while (keyInfo != ConsoleKey.Q);
22
23 Console.WriteLine("End");
24 Console.ReadKey();
25 }
26
27 private static void CreateQueue()
28 {
29 var storageAccount = CloudStorageAccount.Parse(storageConnectionString);
30 var client = storageAccount.CreateCloudQueueClient();
31 var queue = client.GetQueueReference("sloan");
32 queue.CreateIfNotExists();
33 Console.WriteLine("Created Queue");
34 }
35
36 private static void WriteToQueue()
37 {
38 var storageAccount = CloudStorageAccount.Parse(storageConnectionString);
39 var client = storageAccount.CreateCloudQueueClient();
40 var queue = client.GetQueueReference("sloan");
41 var message = new CloudQueueMessage("Eject!");
42 queue.AddMessage(message);
43 Console.WriteLine("Wrote To Queue");
44 }
45
46
47 private static void ReadFromQueue()
48 {
49 var storageAccount = CloudStorageAccount.Parse(storageConnectionString);
50 var client = storageAccount.CreateCloudQueueClient();
51 var queue = client.GetQueueReference("sloan");
52 var queueExists = queue.Exists();
53 if (!queueExists)
54 Console.WriteLine("Queue does not exist");
55 var message = queue.GetMessage();
56 if (message != null)
57 {
58 queue.DeleteMessage(message);
59 Console.WriteLine("Message Found and Deleted");
60 }
61 else
62 {
63 Console.WriteLine("No messages");
64 }
65 }
66
1 type TwitterWorker() =
2 inherit RoleEntryPoint()
3
4 let storageConnectionString = RoleEnvironment.GetConfigurationSettingValue("storageConnectionString")
5
6 let createQueue(queueName) =
7 let storageAccount = CloudStorageAccount.Parse(storageConnectionString)
8 let client = storageAccount.CreateCloudQueueClient()
9 let queue = client.GetQueueReference(queueName);
10 queue.CreateIfNotExists() |> ignore
11
12 let writeToQueue(queueName) =
13 let storageAccount = CloudStorageAccount.Parse(storageConnectionString)
14 let client = storageAccount.CreateCloudQueueClient()
15 let queue = client.GetQueueReference(queueName)
16 let message = new CloudQueueMessage("Eject!")
17 queue.AddMessage(message) |> ignore
18
19 let writeTweetToQueue(queueName) =
20 createQueue(queueName)
21 writeToQueue(queueName)
22
23 let getKeywordFromTweet(tweet: ITweet) =
24 let keyword = "sloan"
25 let hasKeyword = tweet.Text.Contains(keyword)
26 let isFavourited = tweet.FavouriteCount > 0
27 match hasKeyword, isFavourited with
28 | true,false -> Some (keyword,tweet)
29 | _,_ -> None
30
31
32 override this.Run() =
33 while(true) do
34 let consumerKey = RoleEnvironment.GetConfigurationSettingValue("consumerKey")
35 let consumerSecret = RoleEnvironment.GetConfigurationSettingValue("consumerSecret")
36 let accessToken = RoleEnvironment.GetConfigurationSettingValue("accessToken")
37 let accessTokenSecret = RoleEnvironment.GetConfigurationSettingValue("accessTokenSecret")
38
39 let creds = Credentials.TwitterCredentials(consumerKey, consumerSecret, accessToken, accessTokenSecret)
40 Tweetinvi.Auth.SetCredentials(creds)
41 let matchingTweets = Tweetinvi.Search.SearchTweets("@ejectabed")
42 let matchingTweets' = matchingTweets |> Seq.map(fun t -> getKeywordFromTweet(t))
43 |> Seq.filter(fun t -> t.IsSome)
44 |> Seq.map (fun t -> t.Value)
45 matchingTweets' |> Seq.iter(fun (k,t) -> writeTweetToQueue(k))
46 matchingTweets' |> Seq.iter(fun (k,t) -> t.Favourite())
47
48 Thread.Sleep(15000)
49
50 override this.OnStart() =
51 ServicePointManager.DefaultConnectionLimit <- 12
52 base.OnStart()