name: pinpon version: 0.2.0.1 synopsis: A gateway for various cloud notification services category: Network stability: experimental author: Drew Hess maintainer: Drew Hess copyright: Copyright (c) 2018, Quixoftic, LLC license: BSD3 github: quixoftic/pinpon description: ! '@pinpon@ is a gateway for various cloud notification services, such as the Amazon AWS SNS service. Think of @pinpon@ as a hub for dispatching notifications originating from multiple notification sources. Clients of the @pinpon@ service create topics and send notifications via the REST-ish @pinpon@ service, and the @pinpon@ server takes care of the per-service details and communicating with the upstream cloud services. Advantages of this approach, compared to programming directly to the individual notification services'' interfaces, are: * A common API for all supported notification services. * The secret credentials required to communicate with each cloud notification service can be kept in a central location (namely, the @pinpon@ server), rather than being distributed to each notification source host, therefore reducing the attack surface. * Hosts which send notifications via the @pinpon@ gateway can be firewalled from the public Internet. This is especially useful in IoT applications. Currently-supported notification services: * Amazon AWS SNS' tested-with: GHC==8.0.2 GHC==8.2.2 flags: test-hlint: description: Build hlint test manual: true default: false test-doctests: description: Build doctests manual: true default: true pinpon-ring-executable: description: Build pinpon-ring program manual: true default: true pinpon-gpio-executable: description: Build pinpon-gpio program manual: true default: true pinpon-executable: description: Build pinpon program manual: true default: true ghc-options: - -Wall - -Wincomplete-uni-patterns - -Wincomplete-record-updates default-extensions: - NoImplicitPrelude library: ghc-options: - -Wcompat - -Wnoncanonical-monad-instances - -Wnoncanonical-monadfail-instances source-dirs: src other-extensions: - DataKinds - DeriveGeneric - DuplicateRecordFields - MultiParamTypeClasses - OverloadedStrings - Safe - TemplateHaskell - Trustworthy - TypeOperators dependencies: - base >=4 && <5 - aeson >=1.1 && <1.3 - aeson-pretty ==0.8.* - amazonka >=1.4.5 && <1.6 - amazonka-core >=1.4.5 && <1.6 - amazonka-sns >=1.4.5 && <1.6 - bytestring >=0.10.8 && <0.11 - containers >=0.5.7 && <0.6 - exceptions >=0.8.3 && <0.9 - http-client >=0.5.7 && <0.6 - http-types >=0.9.1 && <0.10 - lens ==4.15.* - lucid >=2.9.9 && <3 - mtl ==2.2.1 && <2.3 - protolude ==0.2.* - resourcet >=1.1.9 && <1.2 - servant ==0.11.* - servant-client ==0.11.* - servant-docs ==0.11.* - servant-lucid >=0.7.1 && <0.8 - servant-server ==0.11.* - servant-swagger >=1.1.4 && <1.2 - servant-swagger-ui >=0.2.4 && <0.3 - swagger2 >=2.1.6 && <2.3 - text >=1.2.2 && <1.3 - time >=1.6 && <1.9 - transformers >=0.5.2 && <0.6 - transformers-base >=0.4.4 && <0.5 - wai ==3.2.* - warp ==3.2.* executables: pinpon: &executable main: Main.hs source-dirs: pinpon other-extensions: - LambdaCase - OverloadedStrings ghc-options: - -threaded - -Wcompat - -Wnoncanonical-monad-instances - -Wnoncanonical-monadfail-instances - -fno-warn-redundant-constraints when: - condition: "!(flag(pinpon-executable))" then: buildable: false else: dependencies: - base - amazonka - amazonka-sns - containers - exceptions - lens - mtl - pinpon - protolude - network >=2.6.3 && <2.7 - optparse-applicative >=0.13.2 && <0.15 - optparse-text ==0.1.* - text - transformers - warp pinpon-ring: <<: *executable source-dirs: pinpon-ring when: - condition: "!(flag(pinpon-ring-executable))" then: buildable: false else: dependencies: - base - bytestring - exceptions - http-client - http-client-tls >=0.3.5 && <0.4 - http-types - lens - network - optparse-applicative - optparse-text - pinpon - protolude - servant-client ==0.11.* - text - transformers - warp pinpon-gpio: <<: *executable source-dirs: pinpon-gpio other-extensions: - FlexibleContexts - OverloadedStrings when: - condition: "!(flag(pinpon-gpio-executable))" then: buildable: false else: dependencies: - base - bytestring - exceptions - hpio - http-client - http-client-tls - http-types - lens - mtl - network - optparse-applicative - optparse-text - pinpon - protolude - servant-client - text - time - transformers - warp tests: hlint: &test main: hlint.hs source-dirs: test other-modules: [] ghc-options: - -w - -threaded when: - condition: "!(flag(test-hlint))" then: buildable: false else: dependencies: - base - hlint ==2.0.* - protolude doctest: <<: *test main: doctest.hs ghc-options: - -threaded when: - condition: "!(flag(test-doctests))" then: buildable: false else: dependencies: - base - doctest >=0.10.1 && <1 - protolude spec: <<: *test main: Spec.hs ghc-options: - -w - -threaded - -rtsopts - -with-rtsopts=-N dependencies: - base - aeson - bytestring - exceptions - hspec ==2.4.* - pinpon - protolude - QuickCheck >=2.9 && <2.11 - quickcheck-instances ==0.3.* - servant-swagger data-files: - swagger.json extra-source-files: - README.md - changelog.md - package.yaml - stack.yaml - stack-lts-9.yaml - stack-lts-10.yaml