forked from commercialhaskell/stack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUrls.hs
More file actions
46 lines (38 loc) · 1.28 KB
/
Urls.hs
File metadata and controls
46 lines (38 loc) · 1.28 KB
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
module Stack.Types.Urls where
import Data.Aeson.Extended
import Generics.Deriving.Monoid (memptydefault, mappenddefault)
import Stack.Prelude
data Urls = Urls
{ urlsLatestSnapshot :: !Text
, urlsLtsBuildPlans :: !Text
, urlsNightlyBuildPlans :: !Text
}
deriving Show
-- TODO: Really need this instance?
instance FromJSON (WithJSONWarnings Urls) where
parseJSON = withObjectWarnings "Urls" $ \o -> do
Urls
<$> o ..: "latest-snapshot"
<*> o ..: "lts-build-plans"
<*> o ..: "nightly-build-plans"
data UrlsMonoid = UrlsMonoid
{ urlsMonoidLatestSnapshot :: !(First Text)
, urlsMonoidLtsBuildPlans :: !(First Text)
, urlsMonoidNightlyBuildPlans :: !(First Text)
}
deriving (Show, Generic)
instance FromJSON (WithJSONWarnings UrlsMonoid) where
parseJSON = withObjectWarnings "UrlsMonoid" $ \o -> do
UrlsMonoid
<$> o ..: "latest-snapshot"
<*> o ..: "lts-build-plans"
<*> o ..: "nightly-build-plans"
instance Semigroup UrlsMonoid where
(<>) = mappenddefault
instance Monoid UrlsMonoid where
mempty = memptydefault
mappend = (<>)