anchor.diff:  (in-package :cl-user)
   (defpackage tootstest.web
  +  (:documentation  "This package  contains  the  handlers that  directly
  + handle  various URI  routes for  the web  server. These  are generally
  + invoked currently via FastCGI, or a running Hunchentoot instance.")
     (:use :alexandria
           :cl
           :caveman2
  
positive.code:    :json-arrays-as-vectors t))
  
  (defun get-google-public-key ()
    (or *google-public-key*
        (setf *google-public-key*
              (fetch-json (getf (fetch-json "https://accounts.google.com/.well-known/openid-configuration")
  
negative.code: ;;; Login
  
  (defroute "/tootstest/login" ()
    "The  login  page   itself  is  hosted  here   to  ensure  same-domain
    interaction with  the API  calls. It's  mostly a  static page,  but we
    render it through the template engine.
  
  This page should have some more precise headers to assist in caching."
    (render #P"login.html"))
  
  (defvar *google-public-key* nil
    "The  public key  for Google's  OpenID signatures.  This is  cached to
   validate the signatures provided by their servers.")
  
  (defun fetch-json (uri)
    "Fetch URI  as an application/json file  and parse it with  Yason into
  a property list tree."
    (yason:parse
     (map 'string #'code-char
          (drakma:http-request uri :method :get :accept "application/json;charset=utf-8"))
  