Solution for advanced/part1

This commit is contained in:
Richard Feldman
2018-08-14 02:49:28 -04:00
parent 34d3b7e6ec
commit 9edc567a13

View File

@@ -11,17 +11,17 @@ import Username exposing (Username)
-- TYPES -- TYPES
type alias Cred = type Cred
-- 👉 TODO make Cred an opaque type, then fix the resulting compiler errors. = Cred Username String
-- Afterwards, it should no longer be possible for any other module to access
-- this `token` vale directly!
--
-- 💡 HINT: Other modules still depend on being able to access the -- INFO
-- `username` value. Expand this module's API to expose a new way for them
-- to access the `username` without also giving them access to `token`.
{ username : Username username : Cred -> Username
, token : String username (Cred uname _) =
} uname
@@ -40,14 +40,14 @@ decoder =
encodeToken : Cred -> Value encodeToken : Cred -> Value
encodeToken cred = encodeToken (Cred _ token) =
Encode.string cred.token Encode.string token
addHeader : Cred -> RequestBuilder a -> RequestBuilder a addHeader : Cred -> RequestBuilder a -> RequestBuilder a
addHeader cred builder = addHeader (Cred _ token) builder =
builder builder
|> withHeader "authorization" ("Token " ++ cred.token) |> withHeader "authorization" ("Token " ++ token)
addHeaderIfAvailable : Maybe Cred -> RequestBuilder a -> RequestBuilder a addHeaderIfAvailable : Maybe Cred -> RequestBuilder a -> RequestBuilder a