json-api 0.1.0.1 → 0.1.0.2
raw patch · 10 files changed
+31/−45 lines, 10 filesdep −swagger2dep ~bytestringdep ~containers
Dependencies removed: swagger2
Dependency ranges changed: bytestring, containers
Files
- README.md +5/−0
- json-api.cabal +5/−5
- src/Network/JSONApi/Document.hs +4/−10
- src/Network/JSONApi/Error.hs +2/−4
- src/Network/JSONApi/Link.hs +2/−5
- src/Network/JSONApi/Meta.hs +2/−6
- src/Network/JSONApi/ResourceObject.hs +4/−9
- stack.yaml +2/−1
- test/Network/JSONApi/ResourceObjectSpec.hs +2/−2
- test/TestHelpers.hs +3/−3
README.md view
@@ -11,3 +11,8 @@ #### Example usage There is an [example project](https://github.com/toddmohney/json-api/example) illustrating how the library can be used.+++#### Hackage++Module documentation can be found on [Hackage](http://hackage.haskell.org/package/json-api)
json-api.cabal view
@@ -1,5 +1,5 @@ name: json-api-version: 0.1.0.1+version: 0.1.0.2 homepage: https://github.com/toddmohney/json-api bug-reports: https://github.com/toddmohney/json-api/issues license: MIT@@ -12,6 +12,7 @@ cabal-version: >=1.10 maintainer: Todd Mohney <toddmohney@gmail.com> stability: experimental+tested-with: GHC == 7.10.3 synopsis: Utilities for generating JSON-API payloads description: Provides utilities for deriving JSON payloads conformant to the json-api@@ -35,10 +36,9 @@ library build-depends: aeson >= 0.11.2.0 && < 0.11.3.0 , base >= 4.7 && < 5.0- , containers >= 0.5.6.2 && < 0.5.7.1+ , containers >= 0.5.7.1 && < 0.5.8.0 , data-default >= 0.5.3 && < 5.6.0 , lens-aeson >= 1.0.0.5 && < 1.0.1.0- , swagger2 >= 2.0.2 && < 2.1.0 , text >= 1.2.2.1 && < 1.2.3.0 , unordered-containers >= 0.2.7.1 && < 0.2.8.0 , url >= 2.1.3 && < 2.2.0@@ -72,8 +72,8 @@ build-depends: aeson >= 0.11.2.0 && < 0.11.3.0 , aeson-pretty >= 0.7.2 && < 0.8.0 , base >= 4.7 && < 5.0- , bytestring >= 0.10.6.0 && < 0.10.7.0- , containers >= 0.5.6.2 && < 0.5.7.1+ , bytestring >= 0.10.8.1 && < 0.10.9.0+ , containers >= 0.5.7.1 && < 0.5.8.0 , data-default >= 0.5.3 && < 5.6.0 , hspec >= 2.2.3 && < 2.3.0 , json-api
src/Network/JSONApi/Document.hs view
@@ -25,8 +25,7 @@ , (.:?) ) import qualified Data.Aeson as AE-import Data.Swagger (ToSchema)-import GHC.Generics+import qualified GHC.Generics as G import qualified Network.JSONApi.Error as E import Network.JSONApi.Link as L import Network.JSONApi.Meta as M@@ -45,7 +44,7 @@ { _data :: Resource a b , _links :: Maybe Links , _meta :: Maybe (Meta c)- } deriving (Show, Eq, Generic)+ } deriving (Show, Eq, G.Generic) {- | The @Resource@ type encapsulates the underlying 'ResourceObject'@@ -57,7 +56,7 @@ -} data Resource a b = Singleton (ResourceObject a b) | List [ResourceObject a b]- deriving (Show, Eq, Generic)+ deriving (Show, Eq, G.Generic) instance (ToJSON a, ToJSON b) => ToJSON (Resource a b) where toJSON (Singleton res) = AE.toJSON res@@ -87,9 +86,6 @@ m <- v .:? "meta" return (Document d l m) -instance (ToSchema a, ToSchema b, ToSchema c) => ToSchema (Document a b c)-instance (ToSchema a, ToSchema b) => ToSchema (Resource a b)- {- | The @ErrorDocument@ type represents the alternative form of the top-level JSON-API requirement.@@ -103,7 +99,7 @@ { _error :: E.Error a , _errorLinks :: Maybe Links , _errorMeta :: Maybe (Meta b)- } deriving (Show, Eq, Generic)+ } deriving (Show, Eq, G.Generic) instance (ToJSON a, ToJSON b) => ToJSON (ErrorDocument a b) where toJSON (ErrorDocument err links meta) =@@ -118,5 +114,3 @@ <$> v .: "error" <*> v .:? "links" <*> v .:? "meta"--instance (ToSchema a, ToSchema b) => ToSchema (ErrorDocument a b)
src/Network/JSONApi/Error.hs view
@@ -12,9 +12,8 @@ import Data.Aeson (ToJSON, FromJSON) import Data.Default-import Data.Swagger (ToSchema) import Data.Text-import GHC.Generics (Generic)+import qualified GHC.Generics as G import Network.JSONApi.Link (Links) import Network.JSONApi.Meta import Prelude hiding (id)@@ -34,11 +33,10 @@ , detail :: Maybe Text , meta :: Maybe (Meta a) }- deriving (Show, Eq, Generic)+ deriving (Show, Eq, G.Generic) instance ToJSON a => ToJSON (Error a) instance FromJSON a => FromJSON (Error a)-instance ToSchema a => ToSchema (Error a) instance Default (Error a) where def = Error
src/Network/JSONApi/Link.hs view
@@ -13,9 +13,8 @@ import Data.Aeson (ToJSON, FromJSON) import Data.Map (Map) import qualified Data.Map as Map-import Data.Swagger (ToSchema) import Data.Text (Text, pack)-import GHC.Generics (Generic)+import qualified GHC.Generics as G import Network.URL (URL, exportURL) {- |@@ -34,9 +33,7 @@ Specification: <http://jsonapi.org/format/#document-links> -} newtype Links = Links (Map Rel Href)- deriving (Show, Eq, Ord, ToJSON, FromJSON, Generic)--instance ToSchema Links+ deriving (Show, Eq, Ord, ToJSON, FromJSON, G.Generic) type Rel = Text type Href = Text
src/Network/JSONApi/Meta.hs view
@@ -7,9 +7,8 @@ import Data.Aeson (ToJSON, FromJSON) import Data.Map (Map)-import Data.Swagger (ToSchema) import Data.Text (Text)-import GHC.Generics (Generic)+import qualified GHC.Generics as G {- | Type representing a JSON-API meta object.@@ -33,10 +32,7 @@ Specification: <http://jsonapi.org/format/#document-meta> -} data Meta a = Meta (Map Text a)- deriving (Show, Eq, Ord, Generic)+ deriving (Show, Eq, Ord, G.Generic) instance ToJSON a => ToJSON (Meta a) instance FromJSON a => FromJSON (Meta a)--instance ToSchema a => ToSchema (Meta a)-
src/Network/JSONApi/ResourceObject.hs view
@@ -11,9 +11,8 @@ import Data.Aeson (ToJSON, FromJSON, (.=), (.:), (.:?)) import qualified Data.Aeson as AE-import Data.Swagger (ToSchema) import Data.Text (Text)-import GHC.Generics (Generic)+import qualified GHC.Generics as G import Network.JSONApi.Link (Links) import Network.JSONApi.Meta (Meta) @@ -31,17 +30,13 @@ , getResource :: a , getLinks :: Maybe Links , getMetaData :: Maybe (Meta b)- } deriving (Show, Eq, Ord, Generic)+ } deriving (Show, Eq, Ord, G.Generic) newtype ResourceId = ResourceId Text- deriving (Show, Eq, Ord, ToJSON, FromJSON, Generic)+ deriving (Show, Eq, Ord, ToJSON, FromJSON, G.Generic) newtype ResourceType = ResourceType Text- deriving (Show, Eq, Ord, ToJSON, FromJSON, Generic)--instance (ToSchema a, ToSchema b) => ToSchema (ResourceObject a b)-instance ToSchema ResourceId-instance ToSchema ResourceType+ deriving (Show, Eq, Ord, ToJSON, FromJSON, G.Generic) instance (ToJSON a, ToJSON b) => ToJSON (ResourceObject a b) where toJSON (ResourceObject resId resType resObj linksObj metaObj) =
stack.yaml view
@@ -2,7 +2,8 @@ # For more information, see: http://docs.haskellstack.org/en/stable/yaml_configuration/ # Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2)-resolver: lts-6.4+# resolver: lts-6.4+resolver: nightly-2016-07-03 # Local packages, usually specified by relative directory name packages:
test/Network/JSONApi/ResourceObjectSpec.hs view
@@ -5,7 +5,7 @@ import qualified Data.Map as Map import Data.Maybe (isJust, fromJust) import Data.Text (Text, pack)-import GHC.Generics (Generic)+import qualified GHC.Generics as G import Network.JSONApi.Document import Network.URL (URL, importURL) import TestHelpers (prettyEncode)@@ -16,7 +16,7 @@ , myName :: Text , myAge :: Int , myFavoriteFood :: Text- } deriving (Show, Generic)+ } deriving (Show, G.Generic) instance AE.ToJSON TestObject instance AE.FromJSON TestObject
test/TestHelpers.hs view
@@ -7,7 +7,7 @@ import qualified Data.Map as Map import Data.Monoid ((<>)) import Data.Text (Text, pack)-import GHC.Generics (Generic)+import qualified GHC.Generics as G import Network.JSONApi.Document import Network.URL (URL, importURL) @@ -22,12 +22,12 @@ , myName :: Text , myAge :: Int , myFavoriteFood :: Text- } deriving (Show, Generic)+ } deriving (Show, G.Generic) data TestMetaObject = TestMetaObject { totalPages :: Int , isSuperFun :: Bool- } deriving (Show, Generic)+ } deriving (Show, G.Generic) instance AE.ToJSON TestResourceObject instance AE.FromJSON TestResourceObject