aboutsummaryrefslogtreecommitdiff
path: root/src/Model/Json/Search.hs
blob: b31b548676606c69fd283a9835ada8d8a4917820 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{-# LANGUAGE OverloadedStrings #-}

module Model.Json.Search
  ( Search(..)
  , getMaterialIdentifier
  ) where

import Control.Monad (mzero)
import Control.Applicative ((<$>), (<*>))

import Data.Aeson
import Data.Text (Text)
import Data.List (find)

data Search = Search
  { identifier :: Text
  , kind :: Text
  } deriving (Show)

instance FromJSON Search where
  parseJSON (Object v) =
    Search <$>
      v .: "id" <*>
      v .: "type"
  parseJSON _ = mzero

getMaterialIdentifier :: [Search] -> Maybe Text
getMaterialIdentifier = fmap identifier . find ((==) "matiere" . kind)