From 78da18a80baaf3ec6319c7dfab26471418c7f696 Mon Sep 17 00:00:00 2001 From: Hajamieli Date: Sat, 12 Aug 2023 06:23:18 +0300 Subject: [PATCH] add upload form & script --- site/i/t_192.png | Bin 0 -> 8665 bytes site/i/t_48.png | Bin 0 -> 6046 bytes site/i/t_96.png | Bin 0 -> 7096 bytes site/index.html | 184 +++++++++++++++++++++++++++++++++++++++++++++ site/manifest.json | 28 +++++++ site/script.js | 84 +++++++++++++++++++++ site/sw.js | 3 + 7 files changed, 299 insertions(+) create mode 100644 site/i/t_192.png create mode 100644 site/i/t_48.png create mode 100644 site/i/t_96.png create mode 100644 site/index.html create mode 100644 site/manifest.json create mode 100644 site/script.js create mode 100644 site/sw.js diff --git a/site/i/t_192.png b/site/i/t_192.png new file mode 100644 index 0000000000000000000000000000000000000000..63a8824b7e81b9e2bc3e7178e075bc6ead020a74 GIT binary patch literal 8665 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 G@nQWkNY zCi%D#oqU_ko#Op4+L`Q!Um`T;f#9|N=!exp+v7p>Z7F&WeE4oZF)Q_CJ6%Xs7u_O+ zL^sv4L)>2;S@a$`zSOg%pXB<%c>gSWq;cT7h@p2i)-!NI1cKV}7O8%{YVdUbOx_)R zzR)>f;i9EM+F6JtTQhv4b(g@aih9#-5c7PZ25}!m8@xNKqgS;wBi+x0w{uS)PBj@@ zXh9Tt?zcUwP#u&vqXpVNd~+SP+DWy|YTetr=_P4f?RL;l^>TgXK9qOBb-Qzd`vJUA z;;RWy$J;(RE@HgH`Zec{qICJMp8WEZo_xG#h-yeEGg}LE3{^AHxn*N2yuA*xudtU~ z3VAzo_Dy~-y2>MAvT|UMdN^W9Y4>nJN@+T}&HWNFmNx1N){l9tuz)E`Hqn8p^qm->I(^FB_;jbKoM2Um4*3328vUlC++N+C_n) zkHRy;U2j#bR}Q7ivM^Dq0Gr(K*`zZnvn902J3S+t(6aNh?^c-r=j;6M`^q;ZxT{** z;vNmQ4Cj-stO06uQ3u(v)60*0)K01R2tl&|g{xDyZoL}(oF--?RBCsp(;j_u`3tk> zIzVyL<>lF9*V+P)TW;`IY&|It;h(SGc4(O}JSNbgRnfTGUMcL}qrRJ^RzWyeNbofq zGK?H6**`9nKc?Ks6dX6NJg`c$Q5WaW5u{Zr*DB3>)Iqj`rRUXZO+Rz5bb7x6*Q-UR zbR5cpo`q5sk2!cxzE|ZPTzSE=|2}b&YDO{z-yl6&dH;iqTicy_h`lXFrnU@Fuw>a3 zy^{|x-dBBnz$m8|`G^wDpDmjbYMg+JjbPE9m`A+opGqpCx@8O2#8FMDMHn}#_Y22G zd$9h&aTR5eh+_a%ymnJo^|9b?2X8LCxKwc2?L3i$tAPX5kvKRF=Nqp=0GU1y^*DjH z?)j-`RH-H{$ev{dvMI%6n?4iW*GT0!(>fp;Ri3z82-wIZayXw^6y{ZbP{JIUGaj)W zL0cHj!g0!t>ZT#P3f+~%#TMd`zMevjTqkd&Dpb z1jHVu;cR05F0rGJ^(*_bW()kNt#mU)h4u7yr$7t*^_6&|NDUovc@CF2!I+jY_frA+ z96@DdAf|dmETQIO33-9K&u%DMscHTArF0l;5#7sY^E}fHJgRK>ZwYuazV_-(4ECwG z!j{vQuxj;u3guptyWbu$eXwjtY(7BfGgY*$6lXfSSVC%N1^~P|r|~#KoqWGjRMJ-f zwqaXkrNs!~@eod!&~-eS%4_Q)yf`OvX#w~#AYI3_kT+~Mt_IN%NmaLhmocidl~cc- zKd|7zpinSUWAO`06!%P5|78PRVBAcP#S_4yVVp?dhgI#9(|$2yxx~d-xL6aVffQDU zcTj|5K;|8;0DtoM_!<0G) zMA6K|gWVDFj!W=extQL==bp$*cQQsShddHF_t8((WF$E~EGT8BtYCr)#9eQw=TLcD zkK3ocv+;IW+4gBewh*TgHDxCJy_u*Lfk&puS@NQpwSVx@*?r&>o6$2-+_4rCzPEN& zdgspS(yAW`?bn-O7u;ozXMNc`JT(079Das9kM{!5Mldyan4p)#;LH&besG%`J9DMF zK1uHsyWsw7Ek}IR)QEV3kA=hCP-fJ&ov`L7EteNI?E4}}8wMSiMYF{*?^zb4)~1kV z-1#KJ*$|DO8^kGzCtN7*26E0j_RW~0Qm4bCZ3i~ayM5T6xIjxE4&{k5%HDNc3vJQs z1%Vsug1S8~n|(ZFz})eho*qjLD9~EfQ zXF%@2S?l-Rxz1-Qw8c>ciHQ4PS6EG5Z|$hm=NYg4FOQu2reD-F1}9#bY>J}xzJlxP LAhioLZA1SDSDJC6 literal 0 HcmV?d00001 diff --git a/site/i/t_48.png b/site/i/t_48.png new file mode 100644 index 0000000000000000000000000000000000000000..07fc780bd6f72905f4098a0e9a2c2d26fa0280c5 GIT binary patch literal 6046 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 literal 0 HcmV?d00001 diff --git a/site/index.html b/site/index.html new file mode 100644 index 0000000..d4f0e3f --- /dev/null +++ b/site/index.html @@ -0,0 +1,184 @@ + + + + + + media + + + + + + + + + + + + + + + + + + + + + + + + +

!! Please report errors, bugs and weird shit to Hajamieli !!

+ +
+

Upload a file

+
+
+ +
+ +

styles coming soon? propably...

+
+ + + + + + \ No newline at end of file diff --git a/site/manifest.json b/site/manifest.json new file mode 100644 index 0000000..291161c --- /dev/null +++ b/site/manifest.json @@ -0,0 +1,28 @@ +{ + "short_name": "hajamedia", + "name": "hajamielis file hosting app", + "description": "upload files", + "version": "0.1", + "background_color": "#010e1c", + "theme_color": "#010e1c", + "display": "standalone", + "orientation": "portrait", + "icons": [ + { + "src": "./i/t_48.png", + "type": "image/png", + "sizes": "48x48" + }, + { + "src": "./i/t_96.png", + "type": "image/png", + "sizes": "96x96" + }, + { + "src": "./i/t_192.png", + "type": "image/png", + "sizes": "192x192" + } + ], + "start_url": "/" +} \ No newline at end of file diff --git a/site/script.js b/site/script.js new file mode 100644 index 0000000..2f6afbe --- /dev/null +++ b/site/script.js @@ -0,0 +1,84 @@ +const form = document.getElementById("userform") +const submit = document.getElementById("submit") +const results = document.getElementById("results") + +const chunksize = 1000000; + +const splitter = (file, hash) => { + let numberofChunks = Math.ceil(file.byteLength/chunksize); + let left = 0 + let chunks = [] + + for (let i = 0; i < numberofChunks; i++) { + const chunkForm = new FormData(); + let contentRange = ""; + let chunk; + if(left+chunksize <= file.byteLength){ + contentRange = `${left}-${left+chunksize}` + chunk = file.slice(left,left+chunksize) + left += chunksize + } else { + contentRange = `${left}-${file.byteLength}` + chunk = file.slice(left,file.byteLength) + } + chunkForm.append('file', new Blob([chunk], {type:"video/webm"})) + + chunks.push( + fetch("/test", { + method: "POST", + headers: { + "Content-Number": i, + "Content-Range": `bytes ${contentRange}/${file.byteLength}`, + "File-Hash": hash + }, + body: chunkForm + })) + + } + return chunks +} + +async function digest(data){ + + const hash = await crypto.subtle.digest("SHA-256", data); + return hash + +} + +const processFile = file => { + const fr = new FileReader() + fr.readAsArrayBuffer(file) + + fr.addEventListener("loadend", e => { + + digest(e.target.result).then(digestBuffer => { + + const hashAsString = Array.from(new Uint8Array(digestBuffer)).map((b) => b.toString(16).padStart(2, "0")).join(""); // hex the buffer for readability + + Promise.all(splitter(e.target.result,hashAsString)) + .then((values) => { + fetch(`/finish`, { + method: "POST", + headers: { + "Content-Type": "json", + }, + body: JSON.stringify({"hash": hashAsString, "type": file.type}) + }) + }) + }) + }) + +} + +submit.addEventListener("click", e => { + e.preventDefault(); + let fd = new FormData(); + + for (const file of form.media.files){ + + processFile(file) + + fd.append('file', file) + console.log(file) + } +}) \ No newline at end of file diff --git a/site/sw.js b/site/sw.js new file mode 100644 index 0000000..ef11cf4 --- /dev/null +++ b/site/sw.js @@ -0,0 +1,3 @@ +self.addEventListener("fetch", function(event) { + console.log(`start server worker`) +}); \ No newline at end of file