module Twilio.Message.Media
(
Media(..)
) where
import Control.Monad
import Data.Aeson
import Data.Data
import Data.Monoid
import Data.Text (Text)
import Data.Time.Clock
import GHC.Generics
import Network.URI
import Twilio.Internal.Parser
import Twilio.Internal.Request
import Twilio.Internal.Resource as Resource
import Twilio.Types
data Media = Media
{ sid :: !MediaSID
, dateCreated :: !UTCTime
, dateUpdated :: !UTCTime
, accountSID :: !AccountSID
, parentSID :: !MessageSID
, contentType :: !Text
, uri :: !URI
} deriving (Data, Eq, Generic, Ord, Show, Typeable)
instance FromJSON Media where
parseJSON (Object v) = Media
<$> v .: "sid"
<*> (v .: "date_created" >>= parseDateTime)
<*> (v .: "date_updated" >>= parseDateTime)
<*> v .: "account_sid"
<*> v .: "parent_sid"
<*> v .: "content_type"
<*> (v .: "uri" <&> parseRelativeReference
>>= maybeReturn)
parseJSON _ = mzero
instance Get2 MessageSID MediaSID Media where
get2 (getSID -> messageSID) (getSID -> mediaSID) = request parseJSONFromResponse =<< makeTwilioRequest
("/Messages/" <> messageSID <> "/Media/" <> mediaSID <> ".json")