mirror of
https://github.com/unclechu/gRPC-haskell.git
synced 2024-12-24 02:39:45 +01:00
proto3-suite
=> 97c4f66
(#37)
* `proto3-suite` => `9394ade` and regenerate CG artifacts * `proto3-suite` => `56cf36f` * `proto3-wire` => `a938330` * `proto3-suite` => `e8f2acb` * Update `stack.yaml` * Update CG artifacts for Echo and Arithmetic examples * Update `stack.yaml` * `proto3-suite` => `aff63e6` and add related nix deps * Update CG artifacts for Echo and Arithmetic examples * `proto3-suite` => `97c4f66` * Nitpick: Rename test exe from `test` to `tests` * Add `.gitattributes` files to mark generated modules
This commit is contained in:
parent
4a30625a70
commit
19125b42be
12 changed files with 196 additions and 31 deletions
1
examples/echo/echo-hs/.gitattributes
vendored
Normal file
1
examples/echo/echo-hs/.gitattributes
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
Echo.hs linguist-generated
|
52
examples/echo/echo-hs/Echo.hs
generated
52
examples/echo/echo-hs/Echo.hs
generated
|
@ -4,22 +4,26 @@
|
|||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
|
||||
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
|
||||
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
|
||||
-- | Generated by Haskell protocol buffer compiler. DO NOT EDIT!
|
||||
module Echo where
|
||||
import qualified Prelude as Hs
|
||||
import qualified Proto3.Suite.DotProto as HsProtobuf
|
||||
import qualified Proto3.Suite.Types as HsProtobuf
|
||||
import qualified Proto3.Suite.Class as HsProtobuf
|
||||
import qualified Proto3.Suite.JSONPB as HsJSONPB
|
||||
import Proto3.Suite.JSONPB ((.=), (.:))
|
||||
import qualified Proto3.Wire as HsProtobuf
|
||||
import Control.Applicative ((<*>), (<|>))
|
||||
import Control.Applicative ((<*>), (<|>), (<$>))
|
||||
import qualified Control.Monad as Hs
|
||||
import qualified Data.Text.Lazy as Hs (Text)
|
||||
import qualified Data.ByteString as Hs
|
||||
import qualified Data.String as Hs (fromString)
|
||||
import qualified Data.Vector as Hs (Vector)
|
||||
import qualified Data.Int as Hs (Int16, Int32, Int64)
|
||||
import qualified Data.Word as Hs (Word16, Word32, Word64)
|
||||
import GHC.Generics as Hs
|
||||
import GHC.Enum as Hs
|
||||
import qualified GHC.Generics as Hs
|
||||
import qualified GHC.Enum as Hs
|
||||
import Network.GRPC.HighLevel.Generated as HsGRPC
|
||||
import Network.GRPC.HighLevel.Client as HsGRPC
|
||||
import Network.GRPC.HighLevel.Server as HsGRPC hiding (serverLoop)
|
||||
|
@ -28,8 +32,8 @@ import Network.GRPC.HighLevel.Server.Unregistered as HsGRPC
|
|||
import Network.GRPC.LowLevel.Call as HsGRPC
|
||||
|
||||
data Echo request response = Echo{echoDoEcho ::
|
||||
request 'HsGRPC.Normal EchoRequest EchoResponse ->
|
||||
Hs.IO (response 'HsGRPC.Normal EchoResponse)}
|
||||
request 'HsGRPC.Normal Echo.EchoRequest Echo.EchoResponse ->
|
||||
Hs.IO (response 'HsGRPC.Normal Echo.EchoResponse)}
|
||||
deriving Hs.Generic
|
||||
|
||||
echoServer ::
|
||||
|
@ -83,6 +87,25 @@ instance HsProtobuf.Message EchoRequest where
|
|||
[]
|
||||
Hs.Nothing)]
|
||||
|
||||
instance HsJSONPB.ToJSONPB EchoRequest where
|
||||
toJSONPB (EchoRequest f1) = (HsJSONPB.object ["message" .= f1])
|
||||
toEncodingPB (EchoRequest f1) = (HsJSONPB.pairs ["message" .= f1])
|
||||
|
||||
instance HsJSONPB.FromJSONPB EchoRequest where
|
||||
parseJSONPB
|
||||
= (HsJSONPB.withObject "EchoRequest"
|
||||
(\ obj -> (Hs.pure EchoRequest) <*> obj .: "message"))
|
||||
|
||||
instance HsJSONPB.ToJSON EchoRequest where
|
||||
toJSON = HsJSONPB.toAesonValue
|
||||
toEncoding = HsJSONPB.toAesonEncoding
|
||||
|
||||
instance HsJSONPB.FromJSON EchoRequest where
|
||||
parseJSON = HsJSONPB.parseJSONPB
|
||||
|
||||
instance HsJSONPB.ToSchema EchoRequest where
|
||||
declareNamedSchema = HsJSONPB.genericDeclareNamedSchemaJSONPB
|
||||
|
||||
data EchoResponse = EchoResponse{echoResponseMessage :: Hs.Text}
|
||||
deriving (Hs.Show, Hs.Eq, Hs.Ord, Hs.Generic)
|
||||
|
||||
|
@ -105,3 +128,22 @@ instance HsProtobuf.Message EchoResponse where
|
|||
(HsProtobuf.Single "message")
|
||||
[]
|
||||
Hs.Nothing)]
|
||||
|
||||
instance HsJSONPB.ToJSONPB EchoResponse where
|
||||
toJSONPB (EchoResponse f1) = (HsJSONPB.object ["message" .= f1])
|
||||
toEncodingPB (EchoResponse f1) = (HsJSONPB.pairs ["message" .= f1])
|
||||
|
||||
instance HsJSONPB.FromJSONPB EchoResponse where
|
||||
parseJSONPB
|
||||
= (HsJSONPB.withObject "EchoResponse"
|
||||
(\ obj -> (Hs.pure EchoResponse) <*> obj .: "message"))
|
||||
|
||||
instance HsJSONPB.ToJSON EchoResponse where
|
||||
toJSON = HsJSONPB.toAesonValue
|
||||
toEncoding = HsJSONPB.toAesonEncoding
|
||||
|
||||
instance HsJSONPB.FromJSON EchoResponse where
|
||||
parseJSON = HsJSONPB.parseJSONPB
|
||||
|
||||
instance HsJSONPB.ToSchema EchoResponse where
|
||||
declareNamedSchema = HsJSONPB.genericDeclareNamedSchemaJSONPB
|
1
examples/tutorial/.gitattributes
vendored
Normal file
1
examples/tutorial/.gitattributes
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
Arithmetic.hs linguist-generated
|
63
examples/tutorial/Arithmetic.hs
generated
63
examples/tutorial/Arithmetic.hs
generated
|
@ -4,22 +4,26 @@
|
|||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
|
||||
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
|
||||
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
|
||||
-- | Generated by Haskell protocol buffer compiler. DO NOT EDIT!
|
||||
module Arithmetic where
|
||||
import qualified Prelude as Hs
|
||||
import qualified Proto3.Suite.DotProto as HsProtobuf
|
||||
import qualified Proto3.Suite.Types as HsProtobuf
|
||||
import qualified Proto3.Suite.Class as HsProtobuf
|
||||
import qualified Proto3.Suite.JSONPB as HsJSONPB
|
||||
import Proto3.Suite.JSONPB ((.=), (.:))
|
||||
import qualified Proto3.Wire as HsProtobuf
|
||||
import Control.Applicative ((<*>), (<|>))
|
||||
import Control.Applicative ((<*>), (<|>), (<$>))
|
||||
import qualified Control.Monad as Hs
|
||||
import qualified Data.Text.Lazy as Hs (Text)
|
||||
import qualified Data.ByteString as Hs
|
||||
import qualified Data.String as Hs (fromString)
|
||||
import qualified Data.Vector as Hs (Vector)
|
||||
import qualified Data.Int as Hs (Int16, Int32, Int64)
|
||||
import qualified Data.Word as Hs (Word16, Word32, Word64)
|
||||
import GHC.Generics as Hs
|
||||
import GHC.Enum as Hs
|
||||
import qualified GHC.Generics as Hs
|
||||
import qualified GHC.Enum as Hs
|
||||
import Network.GRPC.HighLevel.Generated as HsGRPC
|
||||
import Network.GRPC.HighLevel.Client as HsGRPC
|
||||
import Network.GRPC.HighLevel.Server as HsGRPC hiding (serverLoop)
|
||||
|
@ -28,11 +32,17 @@ import Network.GRPC.HighLevel.Server.Unregistered as HsGRPC
|
|||
import Network.GRPC.LowLevel.Call as HsGRPC
|
||||
|
||||
data Arithmetic request response = Arithmetic{arithmeticAdd ::
|
||||
request 'HsGRPC.Normal TwoInts OneInt ->
|
||||
Hs.IO (response 'HsGRPC.Normal OneInt),
|
||||
request 'HsGRPC.Normal Arithmetic.TwoInts
|
||||
Arithmetic.OneInt
|
||||
->
|
||||
Hs.IO (response 'HsGRPC.Normal Arithmetic.OneInt),
|
||||
arithmeticRunningSum ::
|
||||
request 'HsGRPC.ClientStreaming OneInt OneInt ->
|
||||
Hs.IO (response 'HsGRPC.ClientStreaming OneInt)}
|
||||
request 'HsGRPC.ClientStreaming Arithmetic.OneInt
|
||||
Arithmetic.OneInt
|
||||
->
|
||||
Hs.IO
|
||||
(response 'HsGRPC.ClientStreaming
|
||||
Arithmetic.OneInt)}
|
||||
deriving Hs.Generic
|
||||
|
||||
arithmeticServer ::
|
||||
|
@ -106,6 +116,26 @@ instance HsProtobuf.Message TwoInts where
|
|||
[]
|
||||
Hs.Nothing)]
|
||||
|
||||
instance HsJSONPB.ToJSONPB TwoInts where
|
||||
toJSONPB (TwoInts f1 f2) = (HsJSONPB.object ["x" .= f1, "y" .= f2])
|
||||
toEncodingPB (TwoInts f1 f2)
|
||||
= (HsJSONPB.pairs ["x" .= f1, "y" .= f2])
|
||||
|
||||
instance HsJSONPB.FromJSONPB TwoInts where
|
||||
parseJSONPB
|
||||
= (HsJSONPB.withObject "TwoInts"
|
||||
(\ obj -> (Hs.pure TwoInts) <*> obj .: "x" <*> obj .: "y"))
|
||||
|
||||
instance HsJSONPB.ToJSON TwoInts where
|
||||
toJSON = HsJSONPB.toAesonValue
|
||||
toEncoding = HsJSONPB.toAesonEncoding
|
||||
|
||||
instance HsJSONPB.FromJSON TwoInts where
|
||||
parseJSON = HsJSONPB.parseJSONPB
|
||||
|
||||
instance HsJSONPB.ToSchema TwoInts where
|
||||
declareNamedSchema = HsJSONPB.genericDeclareNamedSchemaJSONPB
|
||||
|
||||
data OneInt = OneInt{oneIntResult :: Hs.Int32}
|
||||
deriving (Hs.Show, Hs.Eq, Hs.Ord, Hs.Generic)
|
||||
|
||||
|
@ -127,3 +157,22 @@ instance HsProtobuf.Message OneInt where
|
|||
(HsProtobuf.Single "result")
|
||||
[]
|
||||
Hs.Nothing)]
|
||||
|
||||
instance HsJSONPB.ToJSONPB OneInt where
|
||||
toJSONPB (OneInt f1) = (HsJSONPB.object ["result" .= f1])
|
||||
toEncodingPB (OneInt f1) = (HsJSONPB.pairs ["result" .= f1])
|
||||
|
||||
instance HsJSONPB.FromJSONPB OneInt where
|
||||
parseJSONPB
|
||||
= (HsJSONPB.withObject "OneInt"
|
||||
(\ obj -> (Hs.pure OneInt) <*> obj .: "result"))
|
||||
|
||||
instance HsJSONPB.ToJSON OneInt where
|
||||
toJSON = HsJSONPB.toAesonValue
|
||||
toEncoding = HsJSONPB.toAesonEncoding
|
||||
|
||||
instance HsJSONPB.FromJSON OneInt where
|
||||
parseJSON = HsJSONPB.parseJSONPB
|
||||
|
||||
instance HsJSONPB.ToSchema OneInt where
|
||||
declareNamedSchema = HsJSONPB.genericDeclareNamedSchemaJSONPB
|
|
@ -221,7 +221,7 @@ executable echo-client
|
|||
hs-source-dirs: examples/echo/echo-hs
|
||||
main-is: EchoClient.hs
|
||||
|
||||
test-suite test
|
||||
test-suite tests
|
||||
build-depends:
|
||||
base >=4.8 && <5.0
|
||||
, grpc-haskell
|
||||
|
|
10
nix/cabal-doctest.nix
Normal file
10
nix/cabal-doctest.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ mkDerivation, base, Cabal, directory, filepath, stdenv }:
|
||||
mkDerivation {
|
||||
pname = "cabal-doctest";
|
||||
version = "1.0.2";
|
||||
sha256 = "0h3wsjf2mg8kw1zvxc0f9nzchj5kzvza9z0arcyixkd9rkgqq6sa";
|
||||
libraryHaskellDepends = [ base Cabal directory filepath ];
|
||||
homepage = "https://github.com/phadej/cabal-doctest";
|
||||
description = "A Setup.hs helper for doctests running";
|
||||
license = stdenv.lib.licenses.bsd3;
|
||||
}
|
23
nix/insert-ordered-containers.nix
Normal file
23
nix/insert-ordered-containers.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{ mkDerivation, aeson, base, base-compat, hashable, lens
|
||||
, QuickCheck, semigroupoids, semigroups, stdenv, tasty
|
||||
, tasty-quickcheck, text, transformers, unordered-containers
|
||||
}:
|
||||
mkDerivation {
|
||||
pname = "insert-ordered-containers";
|
||||
version = "0.2.1.0";
|
||||
sha256 = "1612f455dw37da9g7bsd1s5kyi84mnr1ifnjw69892amyimi47fp";
|
||||
revision = "3";
|
||||
editedCabalFile = "6fdce987672b006226243aa17522b57ec7a9e1cab247802eddbdaa9dc5b06446";
|
||||
libraryHaskellDepends = [
|
||||
aeson base base-compat hashable lens semigroupoids semigroups text
|
||||
transformers unordered-containers
|
||||
];
|
||||
testHaskellDepends = [
|
||||
aeson base base-compat hashable lens QuickCheck semigroupoids
|
||||
semigroups tasty tasty-quickcheck text transformers
|
||||
unordered-containers
|
||||
];
|
||||
homepage = "https://github.com/phadej/insert-ordered-containers#readme";
|
||||
description = "Associative containers retating insertion order for traversals";
|
||||
license = stdenv.lib.licenses.bsd3;
|
||||
}
|
|
@ -1,25 +1,27 @@
|
|||
{ mkDerivation, aeson, attoparsec, base, base64-bytestring
|
||||
, bytestring, cereal, containers, deepseq, doctest, fetchgit, foldl
|
||||
, haskell-src, lens, mtl, neat-interpolation, optparse-generic
|
||||
, parsec, parsers, pretty, pretty-show, proto3-wire, QuickCheck
|
||||
, range-set-list, safe, semigroups, stdenv, system-filepath, tasty
|
||||
, tasty-hunit, tasty-quickcheck, text, transformers, turtle, vector
|
||||
{ mkDerivation, aeson, aeson-pretty, attoparsec, base
|
||||
, base64-bytestring, bytestring, cereal, containers, deepseq
|
||||
, doctest, fetchgit, foldl, haskell-src, lens, mtl
|
||||
, neat-interpolation, optparse-generic, parsec, parsers, pretty
|
||||
, pretty-show, proto3-wire, QuickCheck, range-set-list, safe
|
||||
, semigroups, stdenv, swagger2, system-filepath, tasty, tasty-hunit
|
||||
, tasty-quickcheck, text, transformers, turtle, vector
|
||||
}:
|
||||
mkDerivation {
|
||||
pname = "proto3-suite";
|
||||
version = "0.1.0.0";
|
||||
src = fetchgit {
|
||||
url = "https://github.com/awakesecurity/proto3-suite.git";
|
||||
sha256 = "0fa5jdzzs45p54fxc8prpbrc1ckpa86lsp3lkjdzf5rbhlvpvim3";
|
||||
rev = "281a533df6b1d1cfa369729f2a149374958e78c2";
|
||||
url = "https://github.com/awakenetworks/proto3-suite";
|
||||
sha256 = "076fh739580vp9h23d4zw3mddmd0md39c7k4x8macwy502wgdf1j";
|
||||
rev = "97c4f66c8972416cca8b0bd1d9b307863bbc82e2";
|
||||
};
|
||||
isLibrary = true;
|
||||
isExecutable = true;
|
||||
libraryHaskellDepends = [
|
||||
aeson attoparsec base base64-bytestring bytestring cereal
|
||||
containers deepseq foldl haskell-src lens mtl neat-interpolation
|
||||
parsec parsers pretty pretty-show proto3-wire QuickCheck safe
|
||||
semigroups system-filepath text transformers turtle vector
|
||||
aeson aeson-pretty attoparsec base base64-bytestring bytestring
|
||||
cereal containers deepseq foldl haskell-src lens mtl
|
||||
neat-interpolation parsec parsers pretty pretty-show proto3-wire
|
||||
QuickCheck safe semigroups swagger2 system-filepath text
|
||||
transformers turtle vector
|
||||
];
|
||||
executableHaskellDepends = [
|
||||
base containers optparse-generic proto3-wire range-set-list
|
||||
|
|
|
@ -6,9 +6,9 @@ mkDerivation {
|
|||
pname = "proto3-wire";
|
||||
version = "1.0.0";
|
||||
src = fetchgit {
|
||||
url = "https://github.com/awakesecurity/proto3-wire";
|
||||
sha256 = "0pcacsz33n84rkc6yi99yq2dy4fisrhqpfbkqa3nfsjqhlw43gcf";
|
||||
rev = "077b7e329fd7f43b0628c23b83c5e2e05334002e";
|
||||
url = "https://github.com/awakenetworks/proto3-wire.git";
|
||||
sha256 = "14n0d16an782ayipirm5v2mvp58jgf65xvffqzp08p50sksil3gi";
|
||||
rev = "a938330bf794cf3fa05591d03906915df98d157c";
|
||||
};
|
||||
libraryHaskellDepends = [
|
||||
base bytestring cereal containers deepseq hashable QuickCheck safe
|
||||
|
|
27
nix/swagger2.nix
Normal file
27
nix/swagger2.nix
Normal file
|
@ -0,0 +1,27 @@
|
|||
{ mkDerivation, aeson, aeson-qq, base, base-compat, bytestring
|
||||
, Cabal, cabal-doctest, containers, doctest, generics-sop, Glob
|
||||
, hashable, hspec, http-media, HUnit, insert-ordered-containers
|
||||
, lens, mtl, network, QuickCheck, scientific, stdenv
|
||||
, template-haskell, text, time, transformers, transformers-compat
|
||||
, unordered-containers, uuid-types, vector
|
||||
}:
|
||||
mkDerivation {
|
||||
pname = "swagger2";
|
||||
version = "2.1.6";
|
||||
sha256 = "01a29h56vfyw0ilij1pn6qwy50ca90kyj884vs1q52vvh572758j";
|
||||
setupHaskellDepends = [ base Cabal cabal-doctest ];
|
||||
libraryHaskellDepends = [
|
||||
aeson base base-compat bytestring containers generics-sop hashable
|
||||
http-media insert-ordered-containers lens mtl network scientific
|
||||
template-haskell text time transformers transformers-compat
|
||||
unordered-containers uuid-types vector
|
||||
];
|
||||
testHaskellDepends = [
|
||||
aeson aeson-qq base base-compat bytestring containers doctest Glob
|
||||
hashable hspec HUnit insert-ordered-containers lens mtl QuickCheck
|
||||
text time unordered-containers vector
|
||||
];
|
||||
homepage = "https://github.com/GetShopTV/swagger2";
|
||||
description = "Swagger 2.0 data model";
|
||||
license = stdenv.lib.licenses.bsd3;
|
||||
}
|
|
@ -179,6 +179,12 @@ let
|
|||
pkgs.haskell.lib.dontCheck
|
||||
(haskellPackagesNew.callPackage ./nix/aeson.nix {});
|
||||
|
||||
cabal-doctest =
|
||||
haskellPackagesNew.callPackage ./nix/cabal-doctest.nix { };
|
||||
|
||||
insert-ordered-containers =
|
||||
haskellPackagesNew.callPackage ./nix/insert-ordered-containers.nix { };
|
||||
|
||||
optparse-applicative =
|
||||
haskellPackagesNew.callPackage ./nix/optparse-applicative.nix { };
|
||||
|
||||
|
@ -270,6 +276,9 @@ let
|
|||
'';
|
||||
});
|
||||
|
||||
swagger2 =
|
||||
pkgs.haskell.lib.dontHaddock (haskellPackagesNew.callPackage ./nix/swagger2.nix { });
|
||||
|
||||
turtle =
|
||||
haskellPackagesNew.callPackage ./nix/turtle.nix { };
|
||||
|
||||
|
|
|
@ -9,15 +9,16 @@ packages:
|
|||
- '.'
|
||||
- location:
|
||||
git: git@github.com:awakenetworks/proto3-suite.git
|
||||
commit: 281a533df6b1d1cfa369729f2a149374958e78c2
|
||||
commit: 97c4f66c8972416cca8b0bd1d9b307863bbc82e2
|
||||
extra-dep: true
|
||||
- location:
|
||||
git: git@github.com:awakenetworks/proto3-wire.git
|
||||
commit: 077b7e329fd7f43b0628c23b83c5e2e05334002e
|
||||
commit: a938330bf794cf3fa05591d03906915df98d157c
|
||||
extra-dep: true
|
||||
# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
|
||||
extra-deps: [ aeson-1.1.1.0
|
||||
, managed-1.0.5
|
||||
, swagger2-2.1.6
|
||||
]
|
||||
|
||||
# Override default flag values for local packages and extra-deps
|
||||
|
|
Loading…
Reference in a new issue