about summary refs log tree commit diff
path: root/website/sandbox/learnpianochords
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-08-06T20·54+0100
committerWilliam Carroll <wpcarro@gmail.com>2020-08-06T20·54+0100
commit1fc1087014a235a4fd153ea239ec3e5509757c17 (patch)
treeb55bc7a2dcbddf7a5819633fddbbb4cd9662b865 /website/sandbox/learnpianochords
parent5f52077492160195681a0a9bca806fd78ddbd6fd (diff)
Support Google Sign-in client-side
TODO: Support Google Sign-in server-side

Also:
- Add Haskell to project's shell.nix
- Add stubbed Main.hs and Spec.hs
- Add common .ghci file
Diffstat (limited to 'website/sandbox/learnpianochords')
-rw-r--r--website/sandbox/learnpianochords/shell.nix5
-rw-r--r--website/sandbox/learnpianochords/src/server/.ghci2
-rw-r--r--website/sandbox/learnpianochords/src/server/Main.hs6
-rw-r--r--website/sandbox/learnpianochords/src/server/Spec.hs13
-rw-r--r--website/sandbox/learnpianochords/src/server/index.html28
5 files changed, 53 insertions, 1 deletions
diff --git a/website/sandbox/learnpianochords/shell.nix b/website/sandbox/learnpianochords/shell.nix
index 6f1c8ee23b30..bf7a640fd1cf 100644
--- a/website/sandbox/learnpianochords/shell.nix
+++ b/website/sandbox/learnpianochords/shell.nix
@@ -1,9 +1,12 @@
 let
-  pkgs = import <nixpkgs> {};
+  pkgs = import /home/wpcarro/nixpkgs {};
 in pkgs.mkShell {
   buildInputs = with pkgs; [
     elmPackages.elm
     elmPackages.elm-format
     elmPackages.elm-live
+    (haskellPackages.ghcWithPackages (hpkgs: with hpkgs; [
+      hspec
+    ]))
   ];
 }
diff --git a/website/sandbox/learnpianochords/src/server/.ghci b/website/sandbox/learnpianochords/src/server/.ghci
new file mode 100644
index 000000000000..efc88e630ccb
--- /dev/null
+++ b/website/sandbox/learnpianochords/src/server/.ghci
@@ -0,0 +1,2 @@
+:set prompt "> "
+:set -Wall
diff --git a/website/sandbox/learnpianochords/src/server/Main.hs b/website/sandbox/learnpianochords/src/server/Main.hs
new file mode 100644
index 000000000000..5fca22a4567a
--- /dev/null
+++ b/website/sandbox/learnpianochords/src/server/Main.hs
@@ -0,0 +1,6 @@
+--------------------------------------------------------------------------------
+module Main where
+--------------------------------------------------------------------------------
+
+main :: IO ()
+main = putStrLn "Working!"
diff --git a/website/sandbox/learnpianochords/src/server/Spec.hs b/website/sandbox/learnpianochords/src/server/Spec.hs
new file mode 100644
index 000000000000..dfdd3ddebb05
--- /dev/null
+++ b/website/sandbox/learnpianochords/src/server/Spec.hs
@@ -0,0 +1,13 @@
+--------------------------------------------------------------------------------
+module Spec where
+--------------------------------------------------------------------------------
+import Test.Hspec
+import Test.QuickCheck
+import Control.Exception (evaluate)
+--------------------------------------------------------------------------------
+
+main :: IO ()
+main = hspec $ do
+  describe "Testing" $ do
+    it "is setup" $ do
+      True == True
diff --git a/website/sandbox/learnpianochords/src/server/index.html b/website/sandbox/learnpianochords/src/server/index.html
new file mode 100644
index 000000000000..ce80faf0d501
--- /dev/null
+++ b/website/sandbox/learnpianochords/src/server/index.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <title>Google Sign-in</title>
+    <script src="https://apis.google.com/js/platform.js" async defer></script>
+    <meta name="google-signin-client_id" content="771151720060-buofllhed98fgt0j22locma05e7rpngl.apps.googleusercontent.com">
+  </head>
+  <body>
+    <div class="g-signin2" data-onsuccess="onSignIn"></div>
+    <a href="#" onclick="signOut();">Sign out</a>
+    <script>
+     function onSignIn(googleUser) {
+       var profile = googleUser.getBasicProfile();
+       console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
+       console.log('Name: ' + profile.getName());
+       console.log('Image URL: ' + profile.getImageUrl());
+       console.log('Email: ' + profile.getEmail()); // This is null if the 'email' scope is not present.
+     }
+     function signOut() {
+       var auth2 = gapi.auth2.getAuthInstance();
+       auth2.signOut().then(function () {
+         console.log('User signed out.');
+       });
+     }
+    </script>
+  </body>
+</html>