{-# LANGUAGE OverloadedStrings #-}

module Web.XING.Types.User.MinimalUser
    (
      MinimalUser(..)
    ) where

import Web.XING.Types.User
import Data.Aeson (Value(..), FromJSON(..), (.:))
import Control.Applicative ((<$>), (<*>))
import Data.Text (Text)

data MinimalUser
  = MinimalUser
      UserId
      Text
      Text
      PhotoUrls
  deriving (Show, Eq)

instance User MinimalUser where
  userId (MinimalUser uid _ _ _ )      = uid
  displayName (MinimalUser _ name _ _) = name
  permalink (MinimalUser _ _ link _)   = link
  photoUrls (MinimalUser _ _ _ urls)   = urls

instance FromJSON MinimalUser where
  parseJSON (Object response) = do
    container <- response .: "id_card"
    MinimalUser <$> (container .: "id")
           <*> (container .: "display_name")
           <*> (container .: "permalink")
           <*> (container .: "photo_urls")
  parseJSON _ = fail "no parse"