diff options
author | Andinus <andinus@nand.sh> | 2022-02-03 22:22:07 +0530 |
---|---|---|
committer | Andinus <andinus@nand.sh> | 2022-02-03 22:22:07 +0530 |
commit | 1e1e1a0728b2ec8cf42dc943606de13cb33a507c (patch) | |
tree | 25632b4fd24fe228528ecd577ca1d67191fc9888 | |
parent | a1f6fe51534f0a9b07d84f4483f3c5de9ca7cdbc (diff) | |
download | vela-1e1e1a0728b2ec8cf42dc943606de13cb33a507c.tar.gz |
Implement create, verify
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | server/.gitignore | 2 | ||||
-rw-r--r-- | server/service.raku | 43 |
3 files changed, 46 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore index 35e5575..c258360 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ # Backup files *~ + +.log diff --git a/server/.gitignore b/server/.gitignore index 4f6d02f..25b78fd 100644 --- a/server/.gitignore +++ b/server/.gitignore @@ -5,3 +5,5 @@ *~ dist + +store diff --git a/server/service.raku b/server/service.raku index 00d1c51..2e63e3f 100644 --- a/server/service.raku +++ b/server/service.raku @@ -6,13 +6,54 @@ unit sub MAIN( Bool :$debug = True, #= enable debug mode ); +my IO() $store = "store"; +mkdir $store; +die "Store doesn't exist" unless $store.d; + my $application = route { - post -> 'new' { + post -> 'create' { request-body -> (:$name) { + my Str $id = ('a'...'z', 'A'...'Z', 0...9).roll(32).join; + my Str $auth = ('a'...'z', 'A'...'Z', 0...9).roll(32).join; + + my IO() $user-store = "%s/%s".sprintf: $store, $id; + mkdir $user-store; + die "Failed to create user store" unless $user-store.d; + spurt "$user-store/name", "$name"; + spurt "$user-store/auth", "$auth"; + content 'application/json', %(:$id, :$auth); } } + post -> 'verify' { + request-body -> (:$id, :$auth) { + my IO() $user-store = "%s/%s".sprintf: $store, $id; + my %res; + + if $user-store.d { + %res<name> = "$user-store/name".IO.slurp; + %res<status> = "Authentication Failed." if "$user-store/auth".IO.slurp ne $auth; + %res<status> //= "Verified"; + } else { + %res<status> = "User doesn't exist or has been deleted."; + } + + content 'application/json', %res; + } + } + + post -> 'upload' { + request-body-blob + 'image/png' => -> $png { + ... + }, + 'image/jpeg' => -> $jpeg { + ... + }, + { bad-request 'text/plain', 'Only png or jpeg allowed'; } + } + # Serving static assets. get -> 'js', *@path { static 'dist/js', @path; } get -> 'css', *@path { static 'dist/css', @path; } |