packages feed

pinpon-0.2.0.2: package.yaml

name:       pinpon
version:    0.2.0.2
synopsis:   A gateway for various cloud notification services
category:   Network
stability:  experimental
author:     Drew Hess <dhess-src@quixoftic.com>
maintainer: Drew Hess <dhess-src@quixoftic.com>
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 && <2.2
        - 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