// http://doc.owncloud.org/server/7.0/developer_manual/core/ocs-share-api.html#create-a-new-share public string ShareFile(string path) { Dictionary <string, string> args = new Dictionary <string, string>(); args.Add("path", path); // path to the file/folder which should be shared args.Add("shareType", "3"); // ‘0’ = user; ‘1’ = group; ‘3’ = public link // args.Add("shareWith", ""); // user / group id with which the file should be shared // args.Add("publicUpload", "false"); // allow public upload to a public shared folder (true/false) // args.Add("password", ""); // password to protect public link Share with args.Add("permissions", "1"); // 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1) string url = URLHelpers.CombineURL(Host, "ocs/v1.php/apps/files_sharing/api/v1/shares?format=json"); url = URLHelpers.FixPrefix(url); NameValueCollection headers = CreateAuthenticationHeader(Username, Password); headers["OCS-APIREQUEST"] = "true"; string response = SendRequestMultiPart(url, args, headers); if (!string.IsNullOrEmpty(response)) { OwnCloudShareResponse result = JsonConvert.DeserializeObject <OwnCloudShareResponse>(response); if (result != null && result.ocs != null && result.ocs.meta != null) { if (result.ocs.data != null && result.ocs.meta.statuscode == 100) { OwnCloudShareResponseData data = ((JObject)result.ocs.data).ToObject <OwnCloudShareResponseData>(); string link = data.url; if (PreviewLink) { if (Helpers.IsImageFile(path)) { link += "/preview"; } } else if (DirectLink) { link += (IsCompatibility81 ? "/" : "&") + "download"; } return(link); } else { Errors.Add(string.Format("Status: {0}\r\nStatus code: {1}\r\nMessage: {2}", result.ocs.meta.status, result.ocs.meta.statuscode, result.ocs.meta.message)); } } } return(null); }
// https://doc.owncloud.org/server/10.0/developer_manual/core/ocs-share-api.html#create-a-new-share public string ShareFile(string path) { Dictionary <string, string> args = new Dictionary <string, string>(); args.Add("path", path); // path to the file/folder which should be shared args.Add("shareType", "3"); // ‘0’ = user; ‘1’ = group; ‘3’ = public link // args.Add("shareWith", ""); // user / group id with which the file should be shared // args.Add("publicUpload", "false"); // allow public upload to a public shared folder (true/false) // args.Add("password", ""); // password to protect public link Share with args.Add("permissions", "1"); // 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1) if (AutoExpire) { if (AutoExpireTime == 0) { throw new Exception("ownCloud Auto Epxire Time is not valid."); } else { try { DateTime expireTime = DateTime.UtcNow.AddDays(AutoExpireTime); args.Add("expireDate", $"{expireTime.Year}-{expireTime.Month}-{expireTime.Day}"); } catch { throw new Exception("ownCloud Auto Expire time is invalid"); } } } string url = URLHelpers.CombineURL(Host, "ocs/v1.php/apps/files_sharing/api/v1/shares?format=json"); url = URLHelpers.FixPrefix(url); NameValueCollection headers = RequestHelpers.CreateAuthenticationHeader(Username, Password); headers["OCS-APIREQUEST"] = "true"; string response = SendRequestMultiPart(url, args, headers); if (!string.IsNullOrEmpty(response)) { OwnCloudShareResponse result = JsonConvert.DeserializeObject <OwnCloudShareResponse>(response); if (result != null && result.ocs != null && result.ocs.meta != null) { if (result.ocs.data != null && result.ocs.meta.statuscode == 100) { OwnCloudShareResponseData data = ((JObject)result.ocs.data).ToObject <OwnCloudShareResponseData>(); string link = data.url; if (PreviewLink && Helpers.IsImageFile(path)) { link += "/preview"; } else if (DirectLink) { link += (IsCompatibility81 ? "/" : "&") + "download"; } char[] splitChar = { '/' }; string[] strs = path.Split(splitChar); string name = strs[strs.Length - 1]; return(URLPath + "/" + name); } else { Errors.Add(string.Format("Status: {0}\r\nStatus code: {1}\r\nMessage: {2}", result.ocs.meta.status, result.ocs.meta.statuscode, result.ocs.meta.message)); } } } return(null); }