diff --git a/main.py b/main.py index 12e032b..f013520 100755 --- a/main.py +++ b/main.py @@ -15,7 +15,7 @@ headers = {"Authorization": "token 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", user = "DomiOwO" repo = "iwisoftware" files=[{}] -files_buffers=[b""] +files_buffers=[[]] def getReleases(): if not releases: @@ -33,9 +33,10 @@ def allocateFd(path): global files, files_buffers fd = len(files) files += [{"path": path, - "state": None # 0 - read, 1 - write + "state": None, # 0 - read, 1 - write + "len": 0 }] - files_buffers += [b""] + files_buffers += [[]] return fd class Passthrough(Operations): @@ -206,29 +207,31 @@ class Passthrough(Operations): return allocateFd(path) def read(self, path, length, offset, fh): - f = files[h] + f = files[fh] f["state"] = 0 - print("-- read: offset ", offset, " len ", length, " path ", path) - if offset == 0: - fetch_len = 16384 # small buffer arrives like wroom - else: - fetch_len = 10485760 # big buffer goes whoosh - if offset + length > len(files_buffers[fh]): - print("buffer exhausted: ", len(files_buffers[fh])) + #fetch_len = 524289 # small buffer arrives like wroom + #if offset != 0: + fetch_len = 10485760 # big buffer goes whoosh + + print(len(files_buffers[fh]) + fetch_len) + + if offset + length > f["len"]: + print("buffer exhausted: ", f["len"]) _h = headers - _h["Range"] = "bytes=" + str(len(files_buffers[fh])) + "-" + str(len(files_buffers[fh]) + fetch_len) + _h["Range"] = "bytes=" + str(f["len"]) + "-" + str(f["len"] + fetch_len - 1) + f["len"] += fetch_len _h["Accept"] = "application/octet-stream" a = requests.get("https://api.github.com/repos/" + user + "/" + repo + "/releases/assets/" + str(assets[path.split("/")[-2]][path.split("/")[-1]]["id"]), headers = _h); - files_buffers[fh] += a.content - return files_buffers[fh][offset:offset+length] + files_buffers[fh].append(bytes(a.content)) + return b''.join(files_buffers[fh])[offset:offset+length] def write(self, path, buf, offset, fh): #print("-- write: offset ", offset, " path ", path) f = files[fh] f["state"] = 1 - files_buffers[fh] += buf + files_buffers[fh].append(bytes(buf)) return len(buf) def truncate(self, path, length, fh=None): @@ -253,13 +256,14 @@ class Passthrough(Operations): a = requests.post( "https://uploads.github.com/repos/" + user + "/" + repo + "/releases/" + str(id) + "/assets?name=" + path.split('/')[-1], - data = files_buffers[fh], + data = b''.join(files_buffers[fh]), headers = _h) print(a.content) res = a.json() print(assets[path.split('/')[-2]]) if not assets[path.split('/')[-2]]: assets[path.split('/')[-2]]={} + print(assets[path.split('/')[-2]]) assets[path.split('/')[-2]][path.split('/')[-1]] = {"id": res["id"], "size": res["size"]} del(files[fh]) # idk, bad syntax? del(files_buffers[fh])