public static string ToFormEncoded(this GoogleDriveRequestBody data) { var parameters = data.Select(p => Uri.EscapeDataString(p.Key) + "=" + Uri.EscapeDataString(p.Value.ToString())); return(string.Join("&", parameters)); }
/// <summary> /// Refreshes the access token using the refresh token /// </summary> private void RefreshAccessToken() { var body = new GoogleDriveRequestBody(); m_JsonWebToken.Refresh(); body[Metadata.ASSERTION] = m_JsonWebToken.ToString(); body[Metadata.GRANT_TYPE] = JsonWebToken.GRANT_TYPE; var stream = body.ToFormEncoded().ToStream(); try { var req = CreateRequest(HTTPRequestMethod.POST, ContentType.FORM_URL_ENCODED, ApiUrls.Token(), stream); var res = SendRequest(req); m_AccessToken = res.GetJSON().Data[Metadata.ACCESS_TOKEN]; } catch(System.Net.WebException ex) { throw new FileSystemException(ex.Message, ex); } }
/// <summary> /// Renames a file/folder by its ID /// </summary> public void Rename(string id, string name) { Ensure.NotNull(id, "id"); Ensure.NotNull(name, "name"); var body = new GoogleDriveRequestBody(); body.SetTitle(name); Patch(ApiUrls.Rename(id), body); }
/// <summary> /// Sets modification timestamp /// </summary> public void SetModifiedDate(string id, DateTime date) { Ensure.NotNull(id, "id"); var body = new GoogleDriveRequestBody(); body.SetModifiedDate(date); Patch(ApiUrls.SetModifiedDate(id), body); }
/// <summary> /// Creates a file /// </summary> public GoogleDriveHandle CreateFile(string parentId, string name, Stream stream) { Ensure.NotNull(parentId, "parentId"); Ensure.NotNull(name, "name"); // 1. Start a resumable session. var body = new GoogleDriveRequestBody(); body.SetTitle(name); body.SetParent(parentId); var reqStream = body.ToJSON().ToStream(); var res = TrySend(HTTPRequestMethod.POST, ContentType.JSON, ApiUrls.Upload(), reqStream); // 2. Save the resumable session URI. var location = res.Headers[HEADER_LOCATION].FormatUri(); // 3. Upload the file. var info = Post(location, stream); return new GoogleDriveHandle(info.Data); }
/// <summary> /// Creates a file /// </summary> public GoogleDriveHandle CreateFile(string parentId, string name) { Ensure.NotNull(parentId, "parentId"); var body = new GoogleDriveRequestBody(); body.SetTitle(name); body.SetParent(parentId); var res = Post(ApiUrls.Files(), body); var handle = new GoogleDriveHandle(res.Data); return handle; }