Solution for advanced/part1
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user