Exemplo n.º 1
0
        void ChangeTextInCell(string cell, Note note, string screenShotPath)
        {
            try
            {
                IList <IList <object> > insertValues = new List <IList <object> >();

                IList <object> ROW  = new List <object>();
                string         json = JsonConvert.SerializeObject(note, jsonSettings);
                ROW.Add(json);
                insertValues.Add(ROW);

                ValueRange body = new ValueRange();
                body.Values = insertValues;
                SpreadsheetsResource.ValuesResource.UpdateRequest result = spreadSheetsService.Spreadsheets.Values.Update(body, gSyncSettings.spreadshetrID, cell);
                result.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.RAW;
                result.Execute();

                if (note.GetType() == typeof(Screenshot) && note.IsDelete == true)
                {
                    Screenshot screen = note as Screenshot;
                    DeleteScreenshot(screen, screenShotPath);
                }
            }
            catch (System.Net.Http.HttpRequestException e)
            {
                OnSyncStateChanged?.Invoke(gSyncState.eLostConnection);
            }
            catch
            {
                OnSyncStateChanged?.Invoke(gSyncState.eFailed);
            }
        }
Exemplo n.º 2
0
        public bool CheckForUpdates()
        {
            OnSyncStateChanged?.Invoke(gSyncState.eChecking);
            if (gSyncSettingFileId.Equals("none"))
            {
                return(false);
            }

            if (!IsSyncAvaible())
            {
                OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                return(false);
            }

            if (driveService == null)
            {
                driveService = new DriveService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName       = applicationName,
                });
            }

            try
            {
                using (var stream = new System.IO.FileStream(jsonDownloadFileLocalPath, System.IO.FileMode.Create))
                {
                    driveService.Files.Get(gSyncSettingFileId).DownloadWithStatus(stream);
                }
                bool result;
                using (StreamReader sr = new StreamReader(jsonDownloadFileLocalPath))
                {
                    string        json = sr.ReadToEnd();
                    GSyncSettings loadedGSyncSettings = JsonConvert.DeserializeObject <GSyncSettings>(json);
                    if (loadedGSyncSettings.dataVersion > gSyncSettings.dataVersion)
                    {
                        result = true;
                    }
                    else
                    {
                        result = false;
                    }
                }
                File.Delete(jsonDownloadFileLocalPath);
                return(result);
            }
            catch (System.Net.Http.HttpRequestException e)
            {
                OnSyncStateChanged?.Invoke(gSyncState.eLostConnection);
                return(false);
            }
            catch (Exception e)
            {
                OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                OnError?.Invoke(e.Message);
                return(false);
            }
        }
Exemplo n.º 3
0
 public void CancelLogin()
 {
     if (source != null)
     {
         source.Cancel();
         source.Dispose();
     }
     OnSyncStateChanged?.Invoke(gSyncState.eFailed);
 }
Exemplo n.º 4
0
        private void AddNewNoteToTable(Note newNote)
        {
            try
            {
                if (gSyncSettings == null)
                {
                    return;
                }
                if (!IsSyncAvaible())
                {
                    OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                    return;
                }

                OnSyncStateChanged?.Invoke(gSyncState.eInWork);

                if (spreadSheetsService == null)
                {
                    spreadSheetsService = new SheetsService(new BaseClientService.Initializer()
                    {
                        HttpClientInitializer = credential,
                        ApplicationName       = applicationName,
                    });
                }

                IList <IList <object> > insertValues = new List <IList <object> >();

                IList <object> ROW = new List <object>();
                ROW.Add(JsonConvert.SerializeObject(newNote, jsonSettings));
                insertValues.Add(ROW);
                if (newNote.GetType() == typeof(Screenshot))
                {
                    Screenshot screen = newNote as Screenshot;
                    UploadScreenshot(screen);
                }

                ValueRange body = new ValueRange();
                body.Values = insertValues;
                SpreadsheetsResource.ValuesResource.AppendRequest result = spreadSheetsService.Spreadsheets.Values.Append(body, gSyncSettings.spreadshetrID, "Notesieve!A1:B");
                result.ValueInputOption = SpreadsheetsResource.ValuesResource.AppendRequest.ValueInputOptionEnum.RAW;
                result.Execute();
                UpdateDataVersion();

                OnSyncStateChanged?.Invoke(gSyncState.eSuccessPut);
            }
            catch (System.Net.Http.HttpRequestException e)
            {
                OnSyncStateChanged?.Invoke(gSyncState.eLostConnection);
            }
            catch
            {
                OnSyncStateChanged?.Invoke(gSyncState.eFailed);
            }
        }
Exemplo n.º 5
0
        private void DeleteScreenshot(Screenshot screenshot, string screenShotPath)
        {
            if (screenshot == null)
            {
                return;
            }
            if (screenShotPath == null)
            {
                return;
            }
            // if (!File.Exists(screenShotPath)) return;

            if (!IsSyncAvaible())
            {
                OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                return;
            }

            if (driveService == null)
            {
                driveService = new DriveService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName       = applicationName,
                });
            }
            try
            {
                string screenshotName = Path.GetFileName(screenShotPath);
                var    request        = driveService.Files.List();
                request.Spaces = "appDataFolder";
                request.Fields = "nextPageToken, files(id, name)";
                request.Q      = "name = '" + screenshotName + "'";
                var result = request.Execute();
                foreach (var file in result.Files)
                {
                    if (file.Name.Equals(screenshotName))
                    {
                        try
                        {
                            driveService.Files.Delete(file.Id).Execute();
                        }
                        catch
                        {
                        }
                    }
                }
            }
            catch (System.Net.Http.HttpRequestException e)
            {
                OnSyncStateChanged?.Invoke(gSyncState.eLostConnection);
            }
        }
Exemplo n.º 6
0
        public RDSDecoder()
        {
            //Make buffers
            workingBuffer  = UnsafeBuffer.Create(BUFFER_SIZE, out workingBufferPtr);
            mainBuffer     = UnsafeBuffer.Create(BUFFER_SIZE, out mainBufferPtr);
            magBuffer      = UnsafeBuffer.Create(BUFFER_SIZE, out magBufferPtr);
            basebandBuffer = UnsafeBuffer.Create(BUFFER_SIZE, out basebandBufferPtr);

            //Set up bit decoder
            bitDecoder = new RDSBitDecoder();
            bitDecoder.OnFrameDecoded     += BitDecoder_OnFrameDecoded;
            bitDecoder.OnSyncStateChanged += (bool sync) => OnSyncStateChanged?.Invoke(sync);
        }
Exemplo n.º 7
0
        private void UpdateDataVersion()
        {
            if (gSyncSettings == null)
            {
                return;
            }

            if (!IsSyncAvaible())
            {
                OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                return;
            }
            gSyncSettings.dataVersion++;

            try
            {
                string tempLocalPath = jsonFileLocalPath + DateTime.Now.TimeOfDay;
                tempLocalPath = tempLocalPath.Replace(":", "_");

                using (StreamWriter sw = new StreamWriter(tempLocalPath, false, System.Text.Encoding.Default))
                {
                    string json = JsonConvert.SerializeObject(gSyncSettings);
                    sw.WriteLine(json);
                }


                Google.Apis.Drive.v3.Data.File file = new Google.Apis.Drive.v3.Data.File();

                FilesResource.UpdateMediaUpload newRequest;
                using (var stream = new System.IO.FileStream(tempLocalPath, System.IO.FileMode.Open))
                {
                    newRequest        = driveService.Files.Update(file, gSyncSettingFileId, stream, "application/json");
                    newRequest.Fields = "id";
                    newRequest.Upload();
                }

                File.Delete(tempLocalPath);
            }
            catch (System.Net.Http.HttpRequestException e)
            {
                OnSyncStateChanged?.Invoke(gSyncState.eLostConnection);
            }
            catch
            {
            }
        }
Exemplo n.º 8
0
        private void UpdateTable()
        {
            try
            {
                if (spreadSheetsService == null)
                {
                    spreadSheetsService = new SheetsService(new BaseClientService.Initializer()
                    {
                        HttpClientInitializer = credential,
                        ApplicationName       = applicationName,
                    });
                }

                IList <IList <object> > insertValues = new List <IList <object> >();

                foreach (Note note in Note.NoteList)
                {
                    IList <object> ROW = new List <object>();
                    ROW.Add(JsonConvert.SerializeObject(note, jsonSettings));
                    insertValues.Add(ROW);
                    if (note.GetType() == typeof(Screenshot))
                    {
                        Screenshot screen = note as Screenshot;
                        UploadScreenshot(screen);
                    }
                }

                ClearValuesRequest clearValuesRequest = new ClearValuesRequest();
                ValueRange         body = new ValueRange();
                body.Values = insertValues;

                SpreadsheetsResource.ValuesResource.ClearRequest  clearResult = spreadSheetsService.Spreadsheets.Values.Clear(clearValuesRequest, gSyncSettings.spreadshetrID, "Notesieve!A1:B");
                SpreadsheetsResource.ValuesResource.UpdateRequest result      = spreadSheetsService.Spreadsheets.Values.Update(body, gSyncSettings.spreadshetrID, "Notesieve!A1:B");
                clearResult.Execute();
                result.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.RAW;
                result.Execute();
            }
            catch (System.Net.Http.HttpRequestException e)
            {
                OnSyncStateChanged?.Invoke(gSyncState.eLostConnection);
            }
        }
Exemplo n.º 9
0
        public void DoSyncNow(Worker worker)
        {
            if (!IsSyncAvaible())
            {
                OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                return;
            }
            bool isConnectionAvaible = CheckEthernetConnection();

            if (isConnectionAvaible)
            {
                try
                {
                    OnSyncStateChanged?.Invoke(gSyncState.eInWork);

                    List <Note> loadedNotes = GetAllNotes();
                    if (loadedNotes != null)
                    {
                        foreach (Note s in loadedNotes)
                        {
                            if (s != null)
                            {
                                worker.CheckAndAdd(s);
                            }
                        }
                        UpdateTable();
                        //FilesList();
                    }
                    OnSyncStateChanged?.Invoke(gSyncState.eSuccessGet);
                }
                catch (System.Net.Http.HttpRequestException e)
                {
                    OnSyncStateChanged?.Invoke(gSyncState.eLostConnection);
                }
            }
            else
            {
                OnSyncStateChanged?.Invoke(gSyncState.eLostConnection);
            }
        }
Exemplo n.º 10
0
        public async Task Login()
        {
            if (isAlreadyInLoginProcess || credential != null)
            {
                CancelLogin();
            }
            else
            {
                isAlreadyInLoginProcess = true;
                source = new CancellationTokenSource(new TimeSpan(0, 1, 0));
                token  = source.Token;

                FileStream stream   = new FileStream(System.Windows.Forms.Application.StartupPath + "credentials.json", FileMode.Open, FileAccess.Read);
                string     credPath = "token.json";
                await Task.Run(() =>
                {
                    try
                    {
                        credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                            GoogleClientSecrets.Load(stream).Secrets,
                            scopes,
                            "NotesieveDesktopUser",
                            token,
                            new FileDataStore(credPath, true)).Result;
                    }
                    catch (System.AggregateException e)
                    {
                        if (token.IsCancellationRequested)
                        {
                            //Операция прервана
                        }
                        else
                        {
                            OnError?.Invoke(e.InnerException + " " + e.Message);
                        }
                        isAlreadyInLoginProcess = false;
                    }
                    catch (System.Net.Http.HttpRequestException e)
                    {
                        isAlreadyInLoginProcess = false;
                        OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                        OnError?.Invoke("Проблема с интрнєт-соединением.\nВы можете продолжать использовать Notesieve но временно, не сможете его синхронизировать.");
                    }
                });

                if (credential == null)
                {
                    isAlreadyInLoginProcess = false;
                    OnLoginFailed?.Invoke();
                }
                else
                {
                    try
                    {
                        isAlreadyInLoginProcess = false;
                        PeopleServiceService peopleService = new PeopleServiceService(new BaseClientService.Initializer()
                        {
                            HttpClientInitializer = credential,
                            ApplicationName       = applicationName,
                        });
                        isLogin = true;
                        PeopleResource.GetRequest peopleRequest = peopleService.People.Get("people/me");
                        peopleRequest.PersonFields = "names,photos";
                        Person profile = peopleRequest.Execute();
                        string name    = profile.Names[0].DisplayName;
                        string photo   = profile.Photos[0].Url;
                        OnLoginSuccsesfull?.Invoke(name, photo);
                    }
                    catch (System.Net.Http.HttpRequestException e)
                    {
                        isAlreadyInLoginProcess = false;
                        OnSyncStateChanged?.Invoke(gSyncState.eLostConnection);
                        OnError?.Invoke("Проблема с интрнєт-соединением.\nВы можете продолжать использовать Notesieve но временно, не сможете его синхронизировать.");
                    }
                }
            }
        }
Exemplo n.º 11
0
        void CreateTable(string tableName)
        {
            if (spreadSheetsService == null)
            {
                spreadSheetsService = new SheetsService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName       = applicationName,
                });
            }
            try
            {
                // TODO: Assign values to desired properties of `requestBody`:
                Google.Apis.Sheets.v4.Data.Spreadsheet requestBody = new Google.Apis.Sheets.v4.Data.Spreadsheet();
                requestBody.Properties       = new SpreadsheetProperties();
                requestBody.Properties.Title = tableName;
                List <Sheet> sheets    = new List <Sheet>();
                Sheet        mainSheet = new Sheet();
                mainSheet.Properties       = new SheetProperties();
                mainSheet.Properties.Title = "Notesieve";
                sheets.Add(mainSheet);
                requestBody.Sheets = sheets;

                SpreadsheetsResource.CreateRequest request = spreadSheetsService.Spreadsheets.Create(requestBody);
                // To execute asynchronously in an async method, replace `request.Execute()` as shown:
                Google.Apis.Sheets.v4.Data.Spreadsheet response = request.Execute();
                // Data.Spreadsheet response = await request.ExecuteAsync();

                // TODO: Change code below to process the `response` object:
                // Console.WriteLine();


                if (driveService == null)
                {
                    driveService = new DriveService(new BaseClientService.Initializer()
                    {
                        HttpClientInitializer = credential,
                        ApplicationName       = applicationName,
                    });
                }

                var fileMetadata = new Google.Apis.Drive.v3.Data.File()
                {
                    Name    = jsonFileName,
                    Parents = new List <string>()
                    {
                        "appDataFolder"
                    }
                };

                using (StreamWriter sw = new StreamWriter(jsonFileLocalPath, false, System.Text.Encoding.Default))
                {
                    if (gSyncSettings == null)
                    {
                        gSyncSettings = new GSyncSettings();
                    }
                    gSyncSettings.spreadshetrID = response.SpreadsheetId;
                    gSyncSettings.dataVersion   = 0;

                    sw.WriteLine(JsonConvert.SerializeObject(gSyncSettings));
                }

                FilesResource.CreateMediaUpload newRequest;
                using (var stream = new System.IO.FileStream(jsonFileLocalPath, System.IO.FileMode.Open))
                {
                    newRequest        = driveService.Files.Create(fileMetadata, stream, "application/json");
                    newRequest.Fields = "id";
                    newRequest.Upload();

                    gSyncSettingFileId = newRequest.ResponseBody.Id;
                }


                File.Delete(jsonFileLocalPath);
            }
            catch (System.Net.Http.HttpRequestException e)
            {
                OnSyncStateChanged?.Invoke(gSyncState.eLostConnection);
            }
        }
Exemplo n.º 12
0
        private void UpdateNoteInTable(Note updateNote, string screenShotPath)
        {
            if (!IsSyncAvaible())
            {
                OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                return;
            }

            if (spreadSheetsService == null)
            {
                spreadSheetsService = new SheetsService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName       = applicationName,
                });
            }

            OnSyncStateChanged?.Invoke(gSyncState.eInWork);

            try
            {
                SpreadsheetsResource.ValuesResource.GetRequest request = spreadSheetsService.Spreadsheets.Values.Get(gSyncSettings.spreadshetrID, "Notesieve!A1:B");
                ValueRange response            = request.Execute();
                IList <IList <Object> > values = response.Values;
                if (values != null && values.Count > 0)
                {
                    int counter = 1;
                    foreach (var row in values)
                    {
                        try
                        {
                            string json     = row[0].ToString();
                            Note   readNote = JsonConvert.DeserializeObject <Note>(json, jsonSettings);
                            if (readNote.Id == updateNote.Id && readNote.RegDate == updateNote.RegDate)
                            {
                                ChangeTextInCell("Notesieve!A" + counter, updateNote, screenShotPath);
                                break;
                            }
                            counter++;
                        }
                        catch (JsonReaderException je)
                        {
                            OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                            OnError?.Invoke("Ваши данные на Google Drive были кем-то затронуты и повреждены.");
                        }
                    }
                }
                else
                {
                }

                UpdateDataVersion();
                OnSyncStateChanged?.Invoke(gSyncState.eSuccessPut);
            }
            catch (Google.GoogleApiException gExc)
            {
                if (gExc.Error != null)
                {
                    if (gExc.Error.Code == 404)
                    {
                        OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                        OnError?.Invoke("Таблица с записями не найдена на вашем Google Drive");
                        CreateTable(tableName);
                    }
                    else
                    {
                        OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                        OnError?.Invoke(gExc.Message);
                    }
                }
                OnSyncStateChanged?.Invoke(gSyncState.eFailed);
            }
            catch (System.Net.Http.HttpRequestException e)
            {
                OnSyncStateChanged?.Invoke(gSyncState.eLostConnection);
            }
        }
Exemplo n.º 13
0
        List <Note> ReadNotesFromTable()
        {
            List <Note> answer = new List <Note>();

            if (spreadSheetsService == null)
            {
                spreadSheetsService = new SheetsService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName       = applicationName,
                });
            }

            try
            {
                SpreadsheetsResource.ValuesResource.GetRequest request = spreadSheetsService.Spreadsheets.Values.Get(gSyncSettings.spreadshetrID, "Notesieve!A1:B");
                ValueRange response            = request.Execute();
                IList <IList <Object> > values = response.Values;
                if (values != null && values.Count > 0)
                {
                    foreach (var row in values)
                    {
                        try
                        {
                            string json = row[0].ToString();
                            Note   note = JsonConvert.DeserializeObject <Note>(json, jsonSettings);
                            answer.Add(note);

                            if (note.GetType() == typeof(Screenshot) && note.IsDelete == false)
                            {
                                Screenshot screenshot     = note as Screenshot;
                                string     screenshotName = Path.GetFileName(screenshot.ImgPath);
                                var        requestFiles   = driveService.Files.List();
                                requestFiles.Spaces = "appDataFolder";
                                requestFiles.Fields = "nextPageToken, files(id, name)";
                                requestFiles.Q      = "name = '" + screenshotName + "'";
                                var result = requestFiles.Execute();
                                foreach (var file in result.Files)
                                {
                                    if (file.Name.Equals(screenshotName))
                                    {
                                        try
                                        {
                                            string screenShotPath = SQLiteLoader.screenShotFolderPath + @"\" + screenshotName;
                                            if (!File.Exists(screenShotPath))
                                            {
                                                using (var stream = new System.IO.FileStream(screenShotPath, System.IO.FileMode.Create))
                                                {
                                                    driveService.Files.Get(file.Id).DownloadWithStatus(stream);
                                                }
                                            }
                                            screenshot.ChangeImageByPath(screenShotPath);
                                        }
                                        catch
                                        {
                                        }
                                        break;
                                    }
                                }
                            }
                        }
                        catch (JsonReaderException je)
                        {
                            OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                            OnError?.Invoke("Ваши данные на Google Drive были кем-то затронуты и повреждены.");
                        }
                    }
                }
                else
                {
                    return(new List <Note>());//Данные не найдены, возвращаем пустой список
                }
            }
            catch (Google.GoogleApiException gExc)
            {
                if (gExc.Error != null)
                {
                    if (gExc.Error.Code == 404)
                    {
                        OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                        OnError?.Invoke("Таблица с записями не найдена на вашем Google Drive");
                        CreateTable(tableName);
                    }
                    else
                    {
                        OnError?.Invoke(gExc.Message);
                    }
                }
            }

            return(answer);
        }
Exemplo n.º 14
0
        private List <Note> GetAllNotes()
        {
            List <Note> answer = null;

            if (!IsSyncAvaible())
            {
                OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                return(answer);
            }

            if (driveService == null)
            {
                driveService = new DriveService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName       = applicationName,
                });
            }
            try
            {
                var request = driveService.Files.List();
                request.Spaces = "appDataFolder";
                request.Fields = "nextPageToken, files(id, name)";
                request.Q      = "name = '" + jsonFileName + "'";
                var result = request.Execute();

                bool found = false;
                foreach (var file in result.Files)
                {
                    if (file.Name.Equals(jsonFileName))
                    {
                        found = true;
                        gSyncSettingFileId = file.Id;

                        using (var stream = new System.IO.FileStream(jsonDownloadFileLocalPath, System.IO.FileMode.Create))
                        {
                            driveService.Files.Get(gSyncSettingFileId).DownloadWithStatus(stream);
                        }
                        using (StreamReader sr = new StreamReader(jsonDownloadFileLocalPath))
                        {
                            string json = sr.ReadToEnd();
                            gSyncSettings = JsonConvert.DeserializeObject <GSyncSettings>(json);
                            answer        = ReadNotesFromTable();
                        }
                        File.Delete(jsonDownloadFileLocalPath);

                        break;
                    }
                }
                if (!found)
                {
                    CreateTable(tableName);
                }
                return(answer);
            }
            catch (System.Net.Http.HttpRequestException e)
            {
                OnSyncStateChanged?.Invoke(gSyncState.eLostConnection);
                return(null);
            }
        }
Exemplo n.º 15
0
        private void UploadScreenshot(Screenshot screenshot)
        {
            if (screenshot.IsDelete || screenshot == null || screenshot.ImgPath == null)
            {
                return;
            }
            if (!File.Exists(screenshot.ImgPath))
            {
                return;
            }

            if (!IsSyncAvaible())
            {
                OnSyncStateChanged?.Invoke(gSyncState.eFailed);
                return;
            }

            if (driveService == null)
            {
                driveService = new DriveService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName       = applicationName,
                });
            }
            try
            {
                string screenshotName = Path.GetFileName(screenshot.ImgPath);
                var    request        = driveService.Files.List();
                request.Spaces = "appDataFolder";
                request.Fields = "nextPageToken, files(id, name)";
                request.Q      = "name = '" + screenshotName + "'";
                var  result = request.Execute();
                bool found  = false;
                foreach (var file in result.Files)
                {
                    if (file.Name.Equals(screenshotName))
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    var fileMetadata = new Google.Apis.Drive.v3.Data.File()
                    {
                        Name    = screenshotName,
                        Parents = new List <string>()
                        {
                            "appDataFolder"
                        }
                    };
                    FilesResource.CreateMediaUpload newRequest;
                    using (var stream = new System.IO.FileStream(screenshot.ImgPath, System.IO.FileMode.Open))
                    {
                        newRequest        = driveService.Files.Create(fileMetadata, stream, "image/png");
                        newRequest.Fields = "id";
                        newRequest.Upload();
                    }
                }
            }
            catch (System.Net.Http.HttpRequestException e)
            {
                OnSyncStateChanged?.Invoke(gSyncState.eLostConnection);
            }
        }