Support "fields" query for efficieny

This commit is contained in:
Matthew Burnett 2019-01-24 17:43:22 -05:00
parent 21c5e764fc
commit 74c8ed1613
3 changed files with 28 additions and 19 deletions

View file

@ -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<GoogleCloudStorageResponse>(result.Response);
GoogleCloudStorageResponse googleCloudStorageResponse = JsonConvert.DeserializeObject<GoogleCloudStorageResponse>(result.Response);
if (upload.name != uploadPath)
{
Errors.Add("Upload failed.");
return null;
}
result.URL = GenerateURL(uploadPath);
result.URL = GenerateURL(googleCloudStorageResponse.name);
return result;
}

View file

@ -102,6 +102,11 @@ public GooglePhotosAlbum CreateAlbum(string albumName)
}
};
Dictionary<string, string> args = new Dictionary<string, string>
{
{ "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<GooglePhotosAlbumInfo> GetAlbumList()
Dictionary<string, string> args = new Dictionary<string, string>
{
{ "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<string, string> albumOptionsResponseArgs = new Dictionary<string, string>
{
{ "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<GooglePhotosAlbumOptionsResponse>(serializedAlbumOptionsResponse);
result.URL = albumOptionsResponse.shareInfo.shareableUrl;
@ -200,9 +211,14 @@ public override UploadResult Upload(Stream stream, string fileName)
}
};
Dictionary<string, string> newMediaItemRequestArgs = new Dictionary<string, string>
{
{ "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<GooglePhotosNewMediaItemResults>(result.Response);

View file

@ -110,11 +110,13 @@ public override UploadResult ShortenURL(string url)
Dictionary<string, string> args = new Dictionary<string, string>
{
{ "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<FirebaseResponse>(result.Response);
if (firebaseResponse != null)