public async Task <Message> DeleteMediaCall(BaseData baseData, MediaIdListBody mediaIdListBody) { // @POST("https://rest-{tier}.immedia-semi.com/api/v1/accounts/{accountId}/media/delete") // Single<Object> deleteMedia(@Body MediaIdListBody paramMediaIdListBody, @Path("accountId") long paramLong, @Path("tier") String paramString); // @POST("https://rest-{tier}.immedia-semi.com/api/v1/accounts/{accountId}/media/delete") // Call<Object> deleteMediaCall(@Body MediaIdListBody paramMediaIdListBody, @Path("accountId") long paramLong, @Path("tier") String paramString); var uri = $"https://rest-{baseData.RegionTier}.immedia-semi.com/api/v1/accounts/{baseData.AccountId}/media/delete"; var retString = await FirePostCallAsync(uri, mediaIdListBody, baseData.AuthToken); var ret = JsonConvert.DeserializeObject <Message>(retString); return(ret); }
private void p0_btn_Start_Click(object sender, EventArgs e) { if (!IsDownloadRunning) { if (!AreAllNeededValuesGiven()) { return; } EmptyInfoText = false; p0_txtBox_Info.Text = p0_txtBox_VerifyPin.Text = string.Empty; p0_txtBox_Email.Enabled = p0_txtBox_Password.Enabled = p0_checkBox_AreYouInGermany.Enabled = p0_btn_SelectSavePath.Enabled = p0_btn_Start.Enabled = p0_txtBox_VerifyPin.Enabled = p0_txtBox_VerifyPin.Enabled = false; p0_btn_Start.Text = "Running ..."; DisableOrEnableallTabPagesExceptTheGiven(false, 0); ResetTabPage01Values(); ResetTabPage02Values(); ResetTabPage99Values(); // ToDo: Do NOT remove this "ToDo" line and add here a "ResetTabPage_xx_Values();" method call in case a new tabPage is added to "tabControl0"! var taskA = Task.Factory.StartNew(() => { var mediaIdListBody = new MediaIdListBody { media_list = new List <long>() }; BaseData = new InitAndDownload().Start(this, p0_txtBox_Email.Text, p0_txtBox_Password.Text, p0_txtBox_SaveDirectory.Text, p0_checkBox_AreYouInGermany.Checked, mediaIdListBody); if (BaseData == null) { return; } if (mediaIdListBody != null && mediaIdListBody.media_list.Any()) { var question = string.Empty; if (mediaIdListBody.media_list.Count == 1) { question = "One video was successfull downloaded.\r\n" + "Should it be tried to delete the video on the server?"; } else { question = $"{mediaIdListBody.media_list.Count} videos were successfull downloaded.\r\n" + "Should it be tried to delete all of them on the server?"; } if (MessageBox.Show(question, Config.TitleAppNameAndVersion, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { var message = new UweR70_PostCallWithNonEmptyBody().DeleteMediaCall(BaseData, mediaIdListBody).Result; MessageBox.Show($"Deleted! Server response:\r\n{message.message}", Config.TitleAppNameAndVersion, MessageBoxButtons.OK, MessageBoxIcon.Information); } } if (!string.IsNullOrWhiteSpace(BaseData.StoragePathNetwork)) { if (MessageBox.Show( "Should the storage path be opened?", Config.TitleAppNameAndVersion, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { Process.Start(BaseData.StoragePathMain); } } }).ContinueWith(result => { // Controls are handled here to avoid a "cross-thread" error. // And: Except PageTab it must also be worked out in case "StartAsyny(...)" returned "null" in error case! if (BaseData != null) { DisableOrEnableallTabPagesExceptTheGiven(true, 0); } p0_btn_Start.Enabled = true; p0_btn_Start.Text = "Reset application"; p0_txtBox_VerifyPin.Enabled = p0_txtBox_VerifyPin.Enabled = true; p0_txtBox_VerifyPin.Focus(); SetTabPage01Values(BaseData); SetTabPage02Values(BaseData); SetTabPage99Values(BaseData); // ToDo: Do NOT remove this "ToDo" line and add here a "SetTabPage_xx_Values(BaseData);" method call in case a new tabPage is added to "tabControl0"! }, TaskScheduler.FromCurrentSynchronizationContext()); // Do NOT add here something like // var x = taskA.Result; // because this would block "taskA" .. } else { EmptyInfoText = true; p0_txtBox_Info.Text = HelpStart(); p0_txtBox_Email.Enabled = p0_txtBox_Password.Enabled = p0_checkBox_AreYouInGermany.Enabled = p0_btn_SelectSavePath.Enabled = p0_btn_Start.Enabled = true; p0_txtBox_VerifyPin.Text = string.Empty; p0_txtBox_VerifyPin.Enabled = p0_txtBox_VerifyPin.Enabled = false; p0_btn_Start.Text = "Start"; DisableOrEnableallTabPagesExceptTheGiven(false, 0); ResetTabPage01Values(); ResetTabPage02Values(); ResetTabPage99Values(); // ToDo: Do NOT remove this "ToDo" line and add here a "ResetTabPage_xx_Values();" method call in case a new tabPage is added to "tabControl0"! } IsDownloadRunning = !IsDownloadRunning; }
public BaseData Start(Form1 form, string email, string password, string saveDirectory, bool isGerman, MediaIdListBody mediaIdListBody) { try { form.SetP0TxtBoxInfoText("Started."); form.SetP0TxtBoxInfoText(string.Empty); var common = new Common(); var uweR70_Get = new UweR70_Get(); var uweR70_GetData = new UweR70_GetData(); var uweR70_PostCallWithNonEmptyBody = new UweR70_PostCallWithNonEmptyBody(); var storeIt = new StoreIt(); var baseData = new BaseData { Email = email, LoginTier = isGerman ? "prde" : "prod", Networks = new List <BaseData.Network>() }; Blink.BatteryUsage batteryUssage = null; var alreadyStoredAuthTokens = storeIt.ReadAuthToken(); var alreadyStoredMainData = storeIt.ReadMainData(); var oldAuthTokenWorked = false; if (alreadyStoredAuthTokens != null && alreadyStoredAuthTokens.Count != 0 && alreadyStoredMainData != null) { try { baseData.RegionTier = alreadyStoredMainData.RegionTier; baseData.RegionDescription = alreadyStoredMainData.RegionDescription; baseData.AuthToken = alreadyStoredAuthTokens[alreadyStoredAuthTokens.Count - 1].Token; baseData.AccountId = alreadyStoredMainData.AccountId; baseData.ClientId = alreadyStoredMainData.ClientId; batteryUssage = uweR70_Get.BatteryUssageAsync(baseData).Result; oldAuthTokenWorked = true; } catch {} } if (!oldAuthTokenWorked) { // Authentification api call var login = uweR70_PostCallWithNonEmptyBody.LoginAsync(baseData, new LoginBody { email = email, password = password }).Result; baseData.RegionTier = login.region.tier; baseData.RegionDescription = login.region.description; baseData.AuthToken = login.authtoken.authtoken; baseData.AccountId = login.account.id; baseData.ClientId = login.client.id; batteryUssage = uweR70_Get.BatteryUssageAsync(baseData).Result; storeIt.StoreData(baseData, batteryUssage); } for (var i = 0; i < batteryUssage.networks.Length; i++) { baseData.Networks.Add(new BaseData.Network { Id = batteryUssage.networks[i].network_id, Name = batteryUssage.networks[i].name, Cameras = new List <BaseData.Camera>() }); var minData = new MinimumData { AuthToken = baseData.AuthToken, RegionTier = baseData.RegionTier, NetworkId = baseData.Networks[i].Id }; form.SetP0TxtBoxInfoText($"Network id >{baseData.Networks[i].Id}<"); form.SetP0TxtBoxInfoText($"Network name >{baseData.Networks[i].Name}<"); form.SetP0TxtBoxInfoText($"camera count >{batteryUssage.networks[i].cameras.Length}<"); for (var n = 0; n < batteryUssage.networks[i].cameras.Length; n++) { form.SetP0TxtBoxInfoText(string.Empty); form.SetP0TxtBoxInfoText($"camera #{n + 1:D2}"); baseData.Networks[i].Cameras.Add(new BaseData.Camera { Id = batteryUssage.networks[i].cameras[n].id, Name = batteryUssage.networks[i].cameras[n].name, Media = new BaseData.Media() }); minData.CameraId = baseData.Networks[i].Cameras[n].Id; form.SetP0TxtBoxInfoText($"camera id >{baseData.Networks[i].Cameras[n].Id}<"); form.SetP0TxtBoxInfoText($"camera name >{baseData.Networks[i].Cameras[n].Name}<"); var cameraStatus = uweR70_Get.CameraStatusAsync(minData).Result; var cameraThumbnail = cameraStatus.camera_status.thumbnail; var networkNameAndId = common.CombineNameAndId(baseData.Networks[i].Name, baseData.Networks[i].Id); var cameraNameAndId = common.CombineNameAndId(batteryUssage.networks[i].cameras[n].name, batteryUssage.networks[i].cameras[n].id); var storagePath = GetStoragePath(saveDirectory, networkNameAndId, cameraNameAndId); if (string.IsNullOrEmpty(baseData.StoragePathNetwork)) { /* Both folligng directories where created while "GetStoragePath(...)" worked out! * because the there combined path contains all parts of the following two combined directories. */ baseData.StoragePathNetwork = Path.Combine(saveDirectory, $"{Config.StoragePartBase}\\{networkNameAndId}"); baseData.StoragePathMain = $"{baseData.StoragePathNetwork}\\{Config.StoragePartMain}"; } var cameraThumbnailFileName = GetAdjustedCameraThumbnailFileName(Path.GetFileName(cameraThumbnail)); var cameraThumbnailPathAndFileName = $"{storagePath}\\{cameraThumbnailFileName}"; baseData.Networks[i].Cameras[n].Media.PathAndFileNameThumbnail = cameraThumbnailPathAndFileName; baseData.Networks[i].Cameras[n].Media.PathAndFileNameVideos = new List <string>(); if (!File.Exists(cameraThumbnailPathAndFileName)) { var cameraThumbnailByteArray = uweR70_GetData.ThumbnailImageAsync(minData, cameraThumbnail).Result; File.WriteAllBytes(cameraThumbnailPathAndFileName, cameraThumbnailByteArray); } } } var timestampFormatter = common.GetTimestampFormatter(); var pageCounter = 0; var aborted = false; form.SetP0TxtBoxInfoText(string.Empty); form.SetP0TxtBoxInfoText($"Try to download videos."); do { pageCounter++; var changedMedia = uweR70_Get.ChangedMediaAsync(baseData, pageCounter).Result; if (changedMedia.media == null || changedMedia.media.Length == 0) { break; } form.SetP0TxtBoxInfoText(string.Empty); form.SetP0TxtBoxInfoText($"Page #{pageCounter} contains {changedMedia.media.Length} videos."); var counterMarkedAsDeleted = 0; var counterAlreadyBeforeDownloaded = 0; var counterDownloaded = 0; form.SetP0TxtBoxInfoText($"\tMarked as deleted #{counterMarkedAsDeleted}."); form.SetP0TxtBoxInfoText($"\tAlready before downloaded #{counterAlreadyBeforeDownloaded}."); form.SetP0TxtBoxInfoText($"\tDownloaded #{counterDownloaded}."); for (var i = 0; i < changedMedia.media.Length; i++) { if (changedMedia.media[i].deleted) { counterMarkedAsDeleted++; AdjustInfo(form, common, $"\tMarked as deleted #{counterMarkedAsDeleted - 1}.", $"\tMarked as deleted #{counterMarkedAsDeleted}."); if (counterMarkedAsDeleted == MagicNumberVideosPerPage) { form.SetP0TxtBoxInfoText($"Download aborted becasue current page cantains {MagicNumberVideosPerPage} as deleted marked videos!"); aborted = true; break; } continue; } var networkObject = baseData.Networks.Where(x => x.Id == changedMedia.media[i].network_id).ToList(); if (networkObject == null || networkObject.Count() != 1) { // Should never be true! continue; } var cameraObject = networkObject[0].Cameras.Where(x => x.Id == changedMedia.media[i].device_id).ToList(); if (cameraObject == null || cameraObject.Count() != 1) { // Should never be true! continue; } // Method called and not just path combined because called method creates directory if it does not exist. var networkNameAndId = common.CombineNameAndId(changedMedia.media[i].network_name, changedMedia.media[i].network_id); var cameraNameAndId = common.CombineNameAndId(changedMedia.media[i].device_name, changedMedia.media[i].device_id); var storagePath = GetStoragePath(saveDirectory, networkNameAndId, cameraNameAndId); var videoFileName = changedMedia.media[i].created_at.ToString(timestampFormatter) + ".mp4"; var videoPathAndFileName = $"{storagePath}\\{videoFileName}"; cameraObject[0].Media.PathAndFileNameVideos.Add(videoPathAndFileName); if (!File.Exists(videoPathAndFileName)) { var videoByteArray = uweR70_GetData.VideoAsync(baseData, changedMedia.media[i].media).Result; mediaIdListBody.media_list.Add(changedMedia.media[i].id); File.WriteAllBytes(videoPathAndFileName, videoByteArray); counterDownloaded++; AdjustInfo(form, common, $"\tDownloaded #{counterDownloaded - 1}.", $"\tDownloaded #{counterDownloaded}."); } else { counterAlreadyBeforeDownloaded++; AdjustInfo(form, common, $"\tAlready before downloaded #{counterAlreadyBeforeDownloaded - 1}.", $"\tAlready before downloaded #{counterAlreadyBeforeDownloaded}."); } } } while (!aborted); form.SetP0TxtBoxInfoText(string.Empty); form.SetP0TxtBoxInfoText("Done!"); return(baseData); } catch (Exception ex) { form.SetP0TxtBoxInfoText(string.Empty); form.SetP0TxtBoxInfoText($"### ERROR ###"); var errorMessage = ex.Message; if (ex.InnerException != null && !string.IsNullOrEmpty(ex.InnerException.Message)) { errorMessage = ex.InnerException.Message; } form.SetP0TxtBoxInfoText($"\t{errorMessage}"); return(null); } }