mirror of
https://github.com/status-im/nim-dagger.git
synced 2025-02-28 14:20:36 +00:00
46 lines
1.1 KiB
Nim
46 lines
1.1 KiB
Nim
import os
|
|
import zip/zipfiles
|
|
import pkg/chronos
|
|
import pkg/chronicles
|
|
import pkg/questionable
|
|
import pkg/questionable/results
|
|
|
|
import ./backends
|
|
|
|
type
|
|
BackendUtils* = ref object of RootObj
|
|
|
|
method initializeCircomBackend*(
|
|
self: BackendUtils,
|
|
r1csFile: string,
|
|
wasmFile: string,
|
|
zKeyFile: string
|
|
): AnyBackend {.base.} =
|
|
CircomCompat.init(r1csFile, wasmFile, zKeyFile)
|
|
|
|
method downloadFile*(
|
|
self: BackendUtils,
|
|
url: string,
|
|
filepath: string
|
|
): ?!void {.base.} =
|
|
try:
|
|
# Nim's default webclient does not support SSL on all platforms.
|
|
# Not without shipping additional binaries and cert-files... :(
|
|
# So we're using curl for now.
|
|
var rc = execShellCmd("curl -o " & filepath & " " & url)
|
|
if not rc == 0:
|
|
return failure("Download of '" & url & "' failed with return code: " & $rc)
|
|
except Exception as exc:
|
|
return failure(exc.msg)
|
|
success()
|
|
|
|
method unzipFile*(
|
|
self: BackendUtils,
|
|
zipFile: string,
|
|
outputDir: string): ?!void {.base.} =
|
|
var z: ZipArchive
|
|
if not z.open(zipFile):
|
|
return failure("Unable to open zip file: " & zipFile)
|
|
z.extractAll(outputDir)
|
|
success()
|