static async Task RunService() { var piCamService = new PiCamService(); var postService = new PostService(); var test = await postService.TestConnection(); await piCamService.JoinPiCams(); piCamService.RequestSingleImageCapture(async() => { await SingleCaptureAndPost(postService, piCamService); }); }
static async Task SingleCaptureAndPost(PostService postService, PiCamService piCamService) { Guid piPostID = Guid.NewGuid(); DateTime nowTime = DateTime.UtcNow; Post piPost = new Post { ID = piPostID, PostTitle = $"Requested Image {DateTime.Now.ToShortDateString()} - {DateTime.Now.ToShortTimeString()}", PostDescription = "Eventually this should be generated", IsActive = true, IsLocked = false, StartTimeUTC = nowTime, LockTimeUTC = nowTime, EndTimeUTC = nowTime, CreatedUTC = nowTime, LastUpdatedUTC = nowTime, SiteAccountID = SiteRobsRaspID, UserAccountCreatorID = UserBudNJoeID }; Console.WriteLine($"Single Image Capture Requested. {piPostID}"); var testConnection = await postService.TestConnection(); if (!testConnection.Success) { await piCamService.UpdateProgress("Error connecting :(", -1, STEP_COUNT); Console.WriteLine("Connection Error!"); return; } await piCamService.UpdateProgress("Received", 1, STEP_COUNT); PiCapture piCam = new PiCapture(); if (!piCam.TryOpenVideoCapture()) { await piCamService.UpdateProgress("Opening Camera", 2, STEP_COUNT); piCam.ForceOpenVideoCapture(); } await piCamService.UpdateProgress("Capturing", 3, STEP_COUNT); byte[] imageBytes = piCam.SingleImageCameraByteArray(); await piCamService.UpdateProgress("Uploading Image", 4, STEP_COUNT); piPost.PostImageUri = await CloudUpload.UploadPostImage(piPostID, imageBytes); await piCamService.UpdateProgress("Creating Post", 5, STEP_COUNT); var savePostResponse = await postService.AddPost(piPost); if (savePostResponse.Success) { await piCamService.UpdateProgress("Success!", 6, STEP_COUNT); Console.WriteLine("Completed Successfully! A New Post Should Be Availible."); } else { await piCamService.UpdateProgress("Error saving post :(", -1, 6); Console.WriteLine($"An Error happened while saving the post: {savePostResponse.Error.Message}"); } piCam.DisposeCaptureInstance(); }