Add part3

This commit is contained in:
Richard Feldman
2018-08-05 07:57:52 -04:00
parent 2163df4cb3
commit 46d8a711d5
37 changed files with 5456 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
module Viewer.Cred exposing (Cred, addHeader, addHeaderIfAvailable, decoder, encodeToken)
import HttpBuilder exposing (RequestBuilder, withHeader)
import Json.Decode as Decode exposing (Decoder)
import Json.Decode.Pipeline exposing (required)
import Json.Encode as Encode exposing (Value)
import Username exposing (Username)
-- TYPES
type alias Cred =
{ username : Username
, token : String
}
-- SERIALIZATION
decoder : Decoder Cred
decoder =
Decode.succeed Cred
|> required "username" Username.decoder
|> required "token" Decode.string
-- TRANSFORM
encodeToken : Cred -> Value
encodeToken cred =
Encode.string cred.token
addHeader : Cred -> RequestBuilder a -> RequestBuilder a
addHeader cred builder =
builder
|> withHeader "authorization" ("Token " ++ cred.token)
addHeaderIfAvailable : Maybe Cred -> RequestBuilder a -> RequestBuilder a
addHeaderIfAvailable maybeCred builder =
case maybeCred of
Just cred ->
addHeader cred builder
Nothing ->
builder