MCPcopy Create free account
hub / github.com/ScattrdBlade/bigFileUpload / createWebdavShare

Function createWebdavShare

utils/upload.ts:999–1082  ·  view source on GitHub ↗
(relativePath: string, serverOrigin: string, filename: string)

Source from the content-addressed store, hash-verified

997}
998
999async function createWebdavShare(relativePath: string, serverOrigin: string, filename: string): Promise<string> {
1000 const { webdavServerType, webdavShareType } = settings.store as {
1001 webdavServerType?: string;
1002 webdavShareType?: string;
1003 };
1004
1005 const ocsVersion = webdavServerType === "owncloud" ? "v1" : "v2";
1006 const ocsUrl = `${serverOrigin}/ocs/${ocsVersion}.php/apps/files_sharing/api/v1/shares?format=json`;
1007
1008 const authHeader = buildWebdavAuthHeader();
1009 const ocsHeaders: Record<string, string> = {
1010 "OCS-APIRequest": "true",
1011 "Content-Type": "application/x-www-form-urlencoded"
1012 };
1013 if (authHeader) {
1014 ocsHeaders.Authorization = authHeader;
1015 }
1016
1017 const body = new URLSearchParams({
1018 path: `/${relativePath}`,
1019 shareType: "3",
1020 permissions: "1"
1021 }).toString();
1022
1023 let shareToken: string;
1024 let shareUrl: string | undefined;
1025
1026 if (Native) {
1027 const result = await Native.createWebdavShare(ocsUrl, ocsHeaders, body);
1028 if (!result.success) {
1029 throw new Error(result.error || "Failed to create public share");
1030 }
1031 shareToken = result.url || "";
1032 if (!shareToken) {
1033 throw new Error("No share token returned from server");
1034 }
1035 } else {
1036 const response = await uploadRequestWithTimeout(ocsUrl, {
1037 method: "POST",
1038 headers: ocsHeaders,
1039 body
1040 });
1041
1042 const responseText = await response.text();
1043
1044 if (!response.ok) {
1045 throw new Error(`Failed to create public share: ${response.status} ${responseText}`);
1046 }
1047
1048 let shareData: { ocs?: { data?: { url?: string; token?: string; }; meta?: Record<string, string>; }; };
1049 try {
1050 shareData = JSON.parse(responseText);
1051 } catch {
1052 throw new Error(`Failed to parse share response: ${responseText.slice(0, 200)}`);
1053 }
1054
1055 shareToken = shareData?.ocs?.data?.token ?? "";
1056

Callers 1

uploadToWebdavFunction · 0.70

Calls 3

buildWebdavAuthHeaderFunction · 0.85
uploadRequestWithTimeoutFunction · 0.85
textMethod · 0.80

Tested by

no test coverage detected