diff --git a/src/onedrive.d b/src/onedrive.d index 44fcb3c0..615cd905 100644 --- a/src/onedrive.d +++ b/src/onedrive.d @@ -161,7 +161,7 @@ final class OneDriveApi } // https://dev.onedrive.com/items/upload_put.htm - auto simpleUpload(string localPath, const(char)[] remotePath, const(char)[] eTag = null) + JSONValue simpleUpload(string localPath, const(char)[] remotePath, const(char)[] eTag = null) { checkAccessTokenExpired(); char[] url = itemByPathUrl ~ remotePath ~ ":/content"; @@ -178,6 +178,20 @@ final class OneDriveApi return parseJSON(content); } + // https://dev.onedrive.com/items/update.htm + JSONValue updateById(const(char)[] id, JSONValue data, const(char)[] eTag = null) + { + checkAccessTokenExpired(); + char[] url = itemByIdUrl ~ id; + if (eTag) http.addRequestHeader("If-Match", eTag); + http.addRequestHeader("Content-Type", "application/json"); + auto result = patch(url, data.toString()); + http.clearRequestHeaders(); + // remove the headers + setAccessToken(accessToken); + return result; + } + private void redeemToken(const(char)[] authCode) { string postData = "client_id=" ~ clientId ~ "&redirect_url=" ~ redirectUrl ~ "&client_secret=" ~ clientSecret; @@ -215,12 +229,17 @@ final class OneDriveApi newToken(); } } - + private auto get(const(char)[] url) { return parseJSON(.get(url, http)); } + private auto patch(T)(const(char)[] url, const(T)[] patchData) + { + return parseJSON(.patch(url, patchData, http)); + } + private auto post(T)(const(char)[] url, const(T)[] postData) { return parseJSON(.post(url, postData, http));