mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 09:47:22 +13:00
Create GenerateUrl method
It's a Surprise Tool That Will Help Us Later
This commit is contained in:
parent
a28062b74a
commit
28efed0d22
1 changed files with 61 additions and 47 deletions
|
@ -64,6 +64,59 @@ public sealed class GoogleCloudStorage : FileUploader, IOAuth2
|
|||
public string Domain { get; set; }
|
||||
public string Prefix { get; set; }
|
||||
|
||||
public class GoogleCloudStorageResponse
|
||||
{
|
||||
public string name { get; set; }
|
||||
}
|
||||
|
||||
public class Metadata
|
||||
{
|
||||
public string name { get; set; }
|
||||
public Acl[] acl { get; set; }
|
||||
}
|
||||
|
||||
public class Acl
|
||||
{
|
||||
public string entity { get; set; }
|
||||
public string role { get; set; }
|
||||
}
|
||||
|
||||
public override UploadResult Upload(Stream stream, string fileName)
|
||||
{
|
||||
if (!CheckAuthorization()) return null;
|
||||
|
||||
string uploadpath = GetUploadPath(fileName);
|
||||
|
||||
Metadata metadata = new Metadata
|
||||
{
|
||||
name = uploadpath,
|
||||
acl = new Acl[]
|
||||
{
|
||||
new Acl
|
||||
{
|
||||
entity = "allUsers",
|
||||
role = "READER"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
string metadatajson = JsonConvert.SerializeObject(metadata);
|
||||
|
||||
UploadResult result = SendRequestFile($"https://www.googleapis.com/upload/storage/v1/b/{Bucket}/o?uploadType=multipart", stream, fileName,
|
||||
headers: googleAuth.GetAuthHeaders(), contentType: "multipart/related", metadata: metadatajson);
|
||||
GoogleCloudStorageResponse upload = JsonConvert.DeserializeObject<GoogleCloudStorageResponse>(result.Response);
|
||||
|
||||
if (upload.name != uploadpath)
|
||||
{
|
||||
Errors.Add("Upload failed.");
|
||||
return null;
|
||||
}
|
||||
|
||||
result.URL = GenerateURL(uploadpath);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public OAuth2Info AuthInfo => googleAuth.AuthInfo;
|
||||
|
||||
private GoogleOAuth2 googleAuth;
|
||||
|
@ -102,62 +155,23 @@ private string GetUploadPath(string fileName)
|
|||
return URLHelpers.CombineURL(path, fileName);
|
||||
}
|
||||
|
||||
public class GoogleCloudStorageResponse
|
||||
public string GenerateURL(string uploadPath)
|
||||
{
|
||||
public string name { get; set; }
|
||||
}
|
||||
|
||||
public class Metadata
|
||||
{
|
||||
public string name { get; set; }
|
||||
public Acl[] acl { get; set; }
|
||||
}
|
||||
|
||||
public class Acl
|
||||
{
|
||||
public string entity { get; set; }
|
||||
public string role { get; set; }
|
||||
}
|
||||
|
||||
public override UploadResult Upload(Stream stream, string fileName)
|
||||
{
|
||||
if (!CheckAuthorization()) return null;
|
||||
|
||||
string uploadpath = GetUploadPath(fileName);
|
||||
if (string.IsNullOrEmpty(Bucket))
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(Domain))
|
||||
{
|
||||
Domain = $"storage.googleapis.com/{Bucket}";
|
||||
}
|
||||
|
||||
Metadata metadata = new Metadata
|
||||
{
|
||||
name = uploadpath,
|
||||
acl = new Acl[]
|
||||
{
|
||||
new Acl
|
||||
{
|
||||
entity = "allUsers",
|
||||
role = "READER"
|
||||
}
|
||||
}
|
||||
};
|
||||
uploadPath = URLHelpers.URLPathEncode(uploadPath);
|
||||
|
||||
string metadatajson = JsonConvert.SerializeObject(metadata);
|
||||
string url = URLHelpers.CombineURL(Domain, uploadPath);
|
||||
|
||||
UploadResult result = SendRequestFile($"https://www.googleapis.com/upload/storage/v1/b/{Bucket}/o?uploadType=multipart", stream, fileName,
|
||||
headers: googleAuth.GetAuthHeaders(), contentType: "multipart/related", metadata: metadatajson);
|
||||
GoogleCloudStorageResponse upload = JsonConvert.DeserializeObject<GoogleCloudStorageResponse>(result.Response);
|
||||
|
||||
if (upload.name != uploadpath)
|
||||
{
|
||||
Errors.Add("Upload failed.");
|
||||
return null;
|
||||
}
|
||||
|
||||
result.URL = URLHelpers.FixPrefix($"{Domain}/{URLHelpers.URLPathEncode(uploadpath)}", "https://");
|
||||
|
||||
return result;
|
||||
return URLHelpers.FixPrefix(url, "https://");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue