From 21c5e764fcd29219e602d439ace1fecbe7ef3dbc Mon Sep 17 00:00:00 2001 From: Matthew Burnett Date: Thu, 24 Jan 2019 15:09:00 -0500 Subject: [PATCH 1/7] Correctly update preview url with object extension preferences Rename variables for consistency Early url returning for quicker pastes --- .../FileUploaders/GoogleCloudStorage.cs | 23 +++++++++++-------- .../Forms/UploadersConfigForm.cs | 3 +++ .../Forms/UploadersConfigFormHelper.cs | 5 +++- ShareX/TaskSettings.cs | 2 +- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs b/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs index 3c22adb4c..ba0600883 100644 --- a/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs +++ b/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs @@ -108,18 +108,13 @@ public override UploadResult Upload(Stream stream, string fileName) string name = fileName; - if ((RemoveExtensionImage && Helpers.IsImageFile(fileName)) || - (RemoveExtensionText && Helpers.IsTextFile(fileName)) || - (RemoveExtensionVideo && Helpers.IsVideoFile(fileName))) - { - name = Path.GetFileNameWithoutExtension(fileName); - } + string uploadPath = GetUploadPath(name); - string uploadpath = GetUploadPath(name); + OnEarlyURLCopyRequested(GenerateURL(uploadPath)); GoogleCloudStorageMetadata metadata = new GoogleCloudStorageMetadata { - name = uploadpath, + name = uploadPath, acl = new GoogleCloudStorageAcl[] { new GoogleCloudStorageAcl @@ -137,13 +132,13 @@ public override UploadResult Upload(Stream stream, string fileName) GoogleCloudStorageResponse upload = JsonConvert.DeserializeObject(result.Response); - if (upload.name != uploadpath) + if (upload.name != uploadPath) { Errors.Add("Upload failed."); return null; } - result.URL = GenerateURL(uploadpath); + result.URL = GenerateURL(uploadPath); return result; } @@ -151,6 +146,14 @@ public override UploadResult Upload(Stream stream, string fileName) private string GetUploadPath(string fileName) { string uploadPath = NameParser.Parse(NameParserType.FolderPath, Prefix.Trim('/')); + + if ((RemoveExtensionImage && Helpers.IsImageFile(fileName)) || + (RemoveExtensionText && Helpers.IsTextFile(fileName)) || + (RemoveExtensionVideo && Helpers.IsVideoFile(fileName))) + { + fileName = Path.GetFileNameWithoutExtension(fileName); + } + return URLHelpers.CombineURL(uploadPath, fileName); } diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs index b4706deb0..f54107ddd 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs +++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs @@ -3137,16 +3137,19 @@ private void txtGoogleCloudStorageObjectPrefix_TextChanged(object sender, EventA private void cbGoogleCloudStorageStripExtensionImage_CheckedChanged(object sender, EventArgs e) { Config.GoogleCloudStorageRemoveExtensionImage = cbGoogleCloudStorageStripExtensionImage.Checked; + UpdateGoogleCloudStorageStatus(); } private void cbGoogleCloudStorageStripExtensionVideo_CheckedChanged(object sender, EventArgs e) { Config.GoogleCloudStorageRemoveExtensionVideo = cbGoogleCloudStorageStripExtensionVideo.Checked; + UpdateGoogleCloudStorageStatus(); } private void cbGoogleCloudStorageStripExtensionText_CheckedChanged(object sender, EventArgs e) { Config.GoogleCloudStorageRemoveExtensionText = cbGoogleCloudStorageStripExtensionText.Checked; + UpdateGoogleCloudStorageStatus(); } #endregion Google Cloud Storage diff --git a/ShareX.UploadersLib/Forms/UploadersConfigFormHelper.cs b/ShareX.UploadersLib/Forms/UploadersConfigFormHelper.cs index bfc8f9930..fbf24bb14 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigFormHelper.cs +++ b/ShareX.UploadersLib/Forms/UploadersConfigFormHelper.cs @@ -265,7 +265,10 @@ private void UpdateGoogleCloudStorageStatus() { Bucket = Config.GoogleCloudStorageBucket, Domain = Config.GoogleCloudStorageDomain, - Prefix = Config.GoogleCloudStorageObjectPrefix + Prefix = Config.GoogleCloudStorageObjectPrefix, + RemoveExtensionImage = Config.GoogleCloudStorageRemoveExtensionImage, + RemoveExtensionText = Config.GoogleCloudStorageRemoveExtensionText, + RemoveExtensionVideo = Config.GoogleCloudStorageRemoveExtensionVideo }; lblGoogleCloudStoragePathPreview.Text = gcs.GetPreviewURL(); diff --git a/ShareX/TaskSettings.cs b/ShareX/TaskSettings.cs index 163c93b2b..257b14208 100644 --- a/ShareX/TaskSettings.cs +++ b/ShareX/TaskSettings.cs @@ -455,7 +455,7 @@ public class TaskSettingsAdvanced Editor("System.Windows.Forms.Design.StringCollectionEditor,System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))] public List ImageExtensions { get; set; } - [Category("Upload"), DefaultValue(false), Description("Copy URL before start upload. Only works for FTP, FTPS, SFTP and Dropbox public URLs.")] + [Category("Upload"), DefaultValue(false), Description("Copy URL before start upload. Only works for FTP, FTPS, SFTP, Dropbox, and Google Cloud Storage.")] public bool EarlyCopyURL { get; set; } [Category("Upload"), Description("Files with these file extensions will be uploaded using text uploader."), From 74c8ed161360098934b395b4f728df7595be01f5 Mon Sep 17 00:00:00 2001 From: Matthew Burnett Date: Thu, 24 Jan 2019 17:43:22 -0500 Subject: [PATCH 2/7] Support "fields" query for efficieny --- .../FileUploaders/GoogleCloudStorage.cs | 21 +++++------------- .../ImageUploaders/GooglePhotos.cs | 22 ++++++++++++++++--- .../FirebaseDynamicLinksURLShortener.cs | 4 +++- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs b/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs index ba0600883..5ff967d32 100644 --- a/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs +++ b/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs @@ -106,13 +106,11 @@ public override UploadResult Upload(Stream stream, string fileName) { if (!CheckAuthorization()) return null; - string name = fileName; - - string uploadPath = GetUploadPath(name); + string uploadPath = GetUploadPath(fileName); OnEarlyURLCopyRequested(GenerateURL(uploadPath)); - GoogleCloudStorageMetadata metadata = new GoogleCloudStorageMetadata + GoogleCloudStorageMetadata googleCloudStorageMetadata = new GoogleCloudStorageMetadata { name = uploadPath, acl = new GoogleCloudStorageAcl[] @@ -125,20 +123,13 @@ public override UploadResult Upload(Stream stream, string fileName) } }; - string metadatajson = JsonConvert.SerializeObject(metadata); + string serializedGoogleCloudStorageMetadata = JsonConvert.SerializeObject(googleCloudStorageMetadata); - UploadResult result = SendRequestFile($"https://www.googleapis.com/upload/storage/v1/b/{Bucket}/o?uploadType=multipart", stream, fileName, "file", - headers: googleAuth.GetAuthHeaders(), contentType: "multipart/related", metadata: metadatajson); + UploadResult result = SendRequestFile($"https://www.googleapis.com/upload/storage/v1/b/{Bucket}/o?uploadType=multipart&fields=name", stream, fileName, null, headers: googleAuth.GetAuthHeaders(), contentType: "multipart/related", metadata: serializedGoogleCloudStorageMetadata); - GoogleCloudStorageResponse upload = JsonConvert.DeserializeObject(result.Response); + GoogleCloudStorageResponse googleCloudStorageResponse = JsonConvert.DeserializeObject(result.Response); - if (upload.name != uploadPath) - { - Errors.Add("Upload failed."); - return null; - } - - result.URL = GenerateURL(uploadPath); + result.URL = GenerateURL(googleCloudStorageResponse.name); return result; } diff --git a/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs b/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs index 7f23d31d0..b518d87b6 100644 --- a/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs +++ b/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs @@ -102,6 +102,11 @@ public GooglePhotosAlbum CreateAlbum(string albumName) } }; + Dictionary args = new Dictionary + { + { "fields", "id" } + }; + string serializedNewItemAlbum = JsonConvert.SerializeObject(newItemAlbum); string serializedNewItemAlbumResponse = SendRequest(HttpMethod.POST, "https://photoslibrary.googleapis.com/v1/albums", serializedNewItemAlbum, headers: GoogleAuth.GetAuthHeaders(), contentType: UploadHelpers.ContentTypeJSON); @@ -118,7 +123,8 @@ public List GetAlbumList() Dictionary args = new Dictionary { - { "excludeNonAppCreatedData", "true" } + { "excludeNonAppCreatedData", "true" }, + { "fields", "albums(id,title,shareInfo),nextPageToken" } }; string pageToken = ""; @@ -167,10 +173,15 @@ public override UploadResult Upload(Stream stream, string fileName) { AlbumID = CreateAlbum(fileName).id; + Dictionary albumOptionsResponseArgs = new Dictionary + { + { "fields", "shareInfo/shareableUrl" } + }; + GooglePhotosAlbumOptions albumOptions = new GooglePhotosAlbumOptions(); string serializedAlbumOptions = JsonConvert.SerializeObject(albumOptions); - string serializedAlbumOptionsResponse = SendRequest(HttpMethod.POST, $"https://photoslibrary.googleapis.com/v1/albums/{AlbumID}:share", content: serializedAlbumOptions, headers: GoogleAuth.GetAuthHeaders(), contentType: UploadHelpers.ContentTypeJSON); + string serializedAlbumOptionsResponse = SendRequest(HttpMethod.POST, $"https://photoslibrary.googleapis.com/v1/albums/{AlbumID}:share", args: albumOptionsResponseArgs, content: serializedAlbumOptions, headers: GoogleAuth.GetAuthHeaders(), contentType: UploadHelpers.ContentTypeJSON); GooglePhotosAlbumOptionsResponse albumOptionsResponse = JsonConvert.DeserializeObject(serializedAlbumOptionsResponse); result.URL = albumOptionsResponse.shareInfo.shareableUrl; @@ -200,9 +211,14 @@ public override UploadResult Upload(Stream stream, string fileName) } }; + Dictionary newMediaItemRequestArgs = new Dictionary + { + { "fields", "newMediaItemResults(mediaItem/productUrl)" } + }; + string serializedNewMediaItemRequest = JsonConvert.SerializeObject(newMediaItemRequest); - result.Response = SendRequest(HttpMethod.POST, "https://photoslibrary.googleapis.com/v1/mediaItems:batchCreate", serializedNewMediaItemRequest, headers: GoogleAuth.GetAuthHeaders(), contentType: UploadHelpers.ContentTypeJSON); + result.Response = SendRequest(HttpMethod.POST, "https://photoslibrary.googleapis.com/v1/mediaItems:batchCreate", serializedNewMediaItemRequest, args: newMediaItemRequestArgs, headers: GoogleAuth.GetAuthHeaders(), contentType: UploadHelpers.ContentTypeJSON); GooglePhotosNewMediaItemResults newMediaItemResult = JsonConvert.DeserializeObject(result.Response); diff --git a/ShareX.UploadersLib/URLShorteners/FirebaseDynamicLinksURLShortener.cs b/ShareX.UploadersLib/URLShorteners/FirebaseDynamicLinksURLShortener.cs index 9326db74f..b6de8795e 100644 --- a/ShareX.UploadersLib/URLShorteners/FirebaseDynamicLinksURLShortener.cs +++ b/ShareX.UploadersLib/URLShorteners/FirebaseDynamicLinksURLShortener.cs @@ -110,11 +110,13 @@ public override UploadResult ShortenURL(string url) Dictionary args = new Dictionary { - { "key", WebAPIKey } + { "key", WebAPIKey }, + { "fields", "shortLink" } }; string requestjson = JsonConvert.SerializeObject(request); result.Response = SendRequest(HttpMethod.POST, "https://firebasedynamiclinks.googleapis.com/v1/shortLinks", requestjson, UploadHelpers.ContentTypeJSON, args); + DebugHelper.WriteLine(result.Response); FirebaseResponse firebaseResponse = JsonConvert.DeserializeObject(result.Response); if (firebaseResponse != null) From 4c0ea0e1f300a30c8d25d799e812fe49e5c2f525 Mon Sep 17 00:00:00 2001 From: Matthew Burnett Date: Thu, 24 Jan 2019 17:59:17 -0500 Subject: [PATCH 3/7] Use least priviledge scope GCS Remove debug write --- ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs | 2 +- .../URLShorteners/FirebaseDynamicLinksURLShortener.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs b/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs index 5ff967d32..2a864fb69 100644 --- a/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs +++ b/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs @@ -78,7 +78,7 @@ public GoogleCloudStorage(OAuth2Info oauth) { googleAuth = new GoogleOAuth2(oauth, this) { - Scope = "https://www.googleapis.com/auth/devstorage.full_control" + Scope = "https://www.googleapis.com/auth/devstorage.read_write" }; } diff --git a/ShareX.UploadersLib/URLShorteners/FirebaseDynamicLinksURLShortener.cs b/ShareX.UploadersLib/URLShorteners/FirebaseDynamicLinksURLShortener.cs index b6de8795e..99033020c 100644 --- a/ShareX.UploadersLib/URLShorteners/FirebaseDynamicLinksURLShortener.cs +++ b/ShareX.UploadersLib/URLShorteners/FirebaseDynamicLinksURLShortener.cs @@ -116,7 +116,7 @@ public override UploadResult ShortenURL(string url) string requestjson = JsonConvert.SerializeObject(request); result.Response = SendRequest(HttpMethod.POST, "https://firebasedynamiclinks.googleapis.com/v1/shortLinks", requestjson, UploadHelpers.ContentTypeJSON, args); - DebugHelper.WriteLine(result.Response); + FirebaseResponse firebaseResponse = JsonConvert.DeserializeObject(result.Response); if (firebaseResponse != null) From f615cca9247639d7fd0d0e8da4ca054078547d72 Mon Sep 17 00:00:00 2001 From: Matthew Burnett Date: Thu, 24 Jan 2019 19:24:46 -0500 Subject: [PATCH 4/7] Rename and add args --- ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs b/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs index b518d87b6..f1d3003f9 100644 --- a/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs +++ b/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs @@ -102,14 +102,13 @@ public GooglePhotosAlbum CreateAlbum(string albumName) } }; - Dictionary args = new Dictionary + Dictionary newItemAlbumArgs = new Dictionary { { "fields", "id" } }; string serializedNewItemAlbum = JsonConvert.SerializeObject(newItemAlbum); - string serializedNewItemAlbumResponse = SendRequest(HttpMethod.POST, "https://photoslibrary.googleapis.com/v1/albums", serializedNewItemAlbum, headers: GoogleAuth.GetAuthHeaders(), contentType: UploadHelpers.ContentTypeJSON); - + string serializedNewItemAlbumResponse = SendRequest(HttpMethod.POST, "https://photoslibrary.googleapis.com/v1/albums", serializedNewItemAlbum, args: newItemAlbumArgs, headers: GoogleAuth.GetAuthHeaders(), contentType: UploadHelpers.ContentTypeJSON); GooglePhotosAlbum newItemAlbumResponse = JsonConvert.DeserializeObject(serializedNewItemAlbumResponse); return newItemAlbumResponse; From 3640c346d38e1c6ee8c0e9f5065e4f5714368d5d Mon Sep 17 00:00:00 2001 From: Matthew Burnett Date: Thu, 24 Jan 2019 21:40:29 -0500 Subject: [PATCH 5/7] Fix with refactor --- ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs b/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs index 2a864fb69..fcfa6557e 100644 --- a/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs +++ b/ShareX.UploadersLib/FileUploaders/GoogleCloudStorage.cs @@ -125,7 +125,7 @@ public override UploadResult Upload(Stream stream, string fileName) string serializedGoogleCloudStorageMetadata = JsonConvert.SerializeObject(googleCloudStorageMetadata); - UploadResult result = SendRequestFile($"https://www.googleapis.com/upload/storage/v1/b/{Bucket}/o?uploadType=multipart&fields=name", stream, fileName, null, headers: googleAuth.GetAuthHeaders(), contentType: "multipart/related", metadata: serializedGoogleCloudStorageMetadata); + UploadResult result = SendRequestFile($"https://www.googleapis.com/upload/storage/v1/b/{Bucket}/o?uploadType=multipart&fields=name", stream, fileName, null, headers: googleAuth.GetAuthHeaders(), contentType: "multipart/related", relatedData: serializedGoogleCloudStorageMetadata); GoogleCloudStorageResponse googleCloudStorageResponse = JsonConvert.DeserializeObject(result.Response); From 6055f8762ca51cf6626910129f9d1e9d2bf768f7 Mon Sep 17 00:00:00 2001 From: Matthew Burnett Date: Sat, 26 Jan 2019 14:20:24 -0500 Subject: [PATCH 6/7] Fix indentation Hello, codemaid? --- ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs b/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs index f1d3003f9..743032d17 100644 --- a/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs +++ b/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs @@ -173,9 +173,9 @@ public override UploadResult Upload(Stream stream, string fileName) AlbumID = CreateAlbum(fileName).id; Dictionary albumOptionsResponseArgs = new Dictionary - { - { "fields", "shareInfo/shareableUrl" } - }; + { + { "fields", "shareInfo/shareableUrl" } + }; GooglePhotosAlbumOptions albumOptions = new GooglePhotosAlbumOptions(); From a1f12bd0c125b73697455492c85a77d65d45a20d Mon Sep 17 00:00:00 2001 From: Matthew Burnett Date: Sun, 27 Jan 2019 01:13:45 -0500 Subject: [PATCH 7/7] Parameter cleanup --- ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs | 14 +++++++------- .../FirebaseDynamicLinksURLShortener.cs | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs b/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs index 743032d17..ef0cff55f 100644 --- a/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs +++ b/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs @@ -108,7 +108,7 @@ public GooglePhotosAlbum CreateAlbum(string albumName) }; string serializedNewItemAlbum = JsonConvert.SerializeObject(newItemAlbum); - string serializedNewItemAlbumResponse = SendRequest(HttpMethod.POST, "https://photoslibrary.googleapis.com/v1/albums", serializedNewItemAlbum, args: newItemAlbumArgs, headers: GoogleAuth.GetAuthHeaders(), contentType: UploadHelpers.ContentTypeJSON); + string serializedNewItemAlbumResponse = SendRequest(HttpMethod.POST, "https://photoslibrary.googleapis.com/v1/albums", serializedNewItemAlbum, UploadHelpers.ContentTypeJSON, newItemAlbumArgs, GoogleAuth.GetAuthHeaders()); GooglePhotosAlbum newItemAlbumResponse = JsonConvert.DeserializeObject(serializedNewItemAlbumResponse); return newItemAlbumResponse; @@ -120,7 +120,7 @@ public List GetAlbumList() List albumList = new List(); - Dictionary args = new Dictionary + Dictionary albumListArgs = new Dictionary { { "excludeNonAppCreatedData", "true" }, { "fields", "albums(id,title,shareInfo),nextPageToken" } @@ -130,8 +130,8 @@ public List GetAlbumList() do { - args["pageToken"] = pageToken; - string response = SendRequest(HttpMethod.GET, "https://photoslibrary.googleapis.com/v1/albums", args, headers: GoogleAuth.GetAuthHeaders()); + albumListArgs["pageToken"] = pageToken; + string response = SendRequest(HttpMethod.GET, "https://photoslibrary.googleapis.com/v1/albums", albumListArgs, GoogleAuth.GetAuthHeaders()); pageToken = ""; if (!string.IsNullOrEmpty(response)) @@ -180,7 +180,7 @@ public override UploadResult Upload(Stream stream, string fileName) GooglePhotosAlbumOptions albumOptions = new GooglePhotosAlbumOptions(); string serializedAlbumOptions = JsonConvert.SerializeObject(albumOptions); - string serializedAlbumOptionsResponse = SendRequest(HttpMethod.POST, $"https://photoslibrary.googleapis.com/v1/albums/{AlbumID}:share", args: albumOptionsResponseArgs, content: serializedAlbumOptions, headers: GoogleAuth.GetAuthHeaders(), contentType: UploadHelpers.ContentTypeJSON); + string serializedAlbumOptionsResponse = SendRequest(HttpMethod.POST, $"https://photoslibrary.googleapis.com/v1/albums/{AlbumID}:share", serializedAlbumOptions, UploadHelpers.ContentTypeJSON, albumOptionsResponseArgs, GoogleAuth.GetAuthHeaders()); GooglePhotosAlbumOptionsResponse albumOptionsResponse = JsonConvert.DeserializeObject(serializedAlbumOptionsResponse); result.URL = albumOptionsResponse.shareInfo.shareableUrl; @@ -193,7 +193,7 @@ public override UploadResult Upload(Stream stream, string fileName) { "Authorization", GoogleAuth.GetAuthHeaders()["Authorization"] } }; - string uploadToken = SendRequest(HttpMethod.POST, "https://photoslibrary.googleapis.com/v1/uploads", stream, contentType: UploadHelpers.ContentTypeOctetStream, headers: uploadTokenHeaders); + string uploadToken = SendRequest(HttpMethod.POST, "https://photoslibrary.googleapis.com/v1/uploads", stream, UploadHelpers.ContentTypeOctetStream, null, uploadTokenHeaders); GooglePhotosNewMediaItemRequest newMediaItemRequest = new GooglePhotosNewMediaItemRequest { @@ -217,7 +217,7 @@ public override UploadResult Upload(Stream stream, string fileName) string serializedNewMediaItemRequest = JsonConvert.SerializeObject(newMediaItemRequest); - result.Response = SendRequest(HttpMethod.POST, "https://photoslibrary.googleapis.com/v1/mediaItems:batchCreate", serializedNewMediaItemRequest, args: newMediaItemRequestArgs, headers: GoogleAuth.GetAuthHeaders(), contentType: UploadHelpers.ContentTypeJSON); + result.Response = SendRequest(HttpMethod.POST, "https://photoslibrary.googleapis.com/v1/mediaItems:batchCreate", serializedNewMediaItemRequest, UploadHelpers.ContentTypeJSON, newMediaItemRequestArgs, GoogleAuth.GetAuthHeaders()); GooglePhotosNewMediaItemResults newMediaItemResult = JsonConvert.DeserializeObject(result.Response); diff --git a/ShareX.UploadersLib/URLShorteners/FirebaseDynamicLinksURLShortener.cs b/ShareX.UploadersLib/URLShorteners/FirebaseDynamicLinksURLShortener.cs index 99033020c..201f38cfe 100644 --- a/ShareX.UploadersLib/URLShorteners/FirebaseDynamicLinksURLShortener.cs +++ b/ShareX.UploadersLib/URLShorteners/FirebaseDynamicLinksURLShortener.cs @@ -91,7 +91,7 @@ public override UploadResult ShortenURL(string url) { UploadResult result = new UploadResult { URL = url }; - FirebaseRequest request = new FirebaseRequest + FirebaseRequest requestOptions = new FirebaseRequest { dynamicLinkInfo = new DynamicLinkInfo { @@ -102,7 +102,7 @@ public override UploadResult ShortenURL(string url) if (IsShort) { - request.suffix = new FirebaseSuffix + requestOptions.suffix = new FirebaseSuffix { option = "SHORT" }; @@ -114,8 +114,8 @@ public override UploadResult ShortenURL(string url) { "fields", "shortLink" } }; - string requestjson = JsonConvert.SerializeObject(request); - result.Response = SendRequest(HttpMethod.POST, "https://firebasedynamiclinks.googleapis.com/v1/shortLinks", requestjson, UploadHelpers.ContentTypeJSON, args); + string serializedRequestOptions = JsonConvert.SerializeObject(requestOptions); + result.Response = SendRequest(HttpMethod.POST, "https://firebasedynamiclinks.googleapis.com/v1/shortLinks", serializedRequestOptions, UploadHelpers.ContentTypeJSON, args); FirebaseResponse firebaseResponse = JsonConvert.DeserializeObject(result.Response);