From 1e1e1a0728b2ec8cf42dc943606de13cb33a507c Mon Sep 17 00:00:00 2001 From: Andinus Date: Thu, 3 Feb 2022 22:22:07 +0530 Subject: Implement create, verify --- .gitignore | 2 ++ server/.gitignore | 2 ++ server/service.raku | 43 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 46 insertions(+), 1 deletion(-) 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 = "$user-store/name".IO.slurp; + %res = "Authentication Failed." if "$user-store/auth".IO.slurp ne $auth; + %res //= "Verified"; + } else { + %res = "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; } -- cgit 1.4.1-2-gfad0