name: mellon-web version: 0.8.0.4 synopsis: A REST web service for Mellon controllers category: Web stability: experimental author: Drew Hess maintainer: Drew Hess copyright: Copyright (c) 2017, Quixoftic, LLC license: BSD3 github: quixoftic/mellon description: ! 'The @mellon-web@ package wraps a @mellon-core@ controller in a REST web service, making it possible to control physical access devices from an HTTP client. The package includes both a WAI application server, and native Haskell client bindings for the service. Like the @mellon-core@ controller interface, the @mellon-web@ REST API is quite simple. There are only 3 methods: * @GET /time@ returns the system time on the server. This is made available for diagnostic purposes, primarily to ensure the server has an accurate clock. * @GET /state@ returns the controller''s current state (either @Locked@ or @Unlocked date@ where @date@ is the UTC time at which the controller will automatically lock again). * @PUT /state@ sets the controller''s current state. Use this method to lock and unlock the controller. See the included document for detailed documentation on the REST service. Note that the @mellon-web@ server does not provide an authentication mechanism! You should proxy it behind a secure, authenticating HTTPS server such as Nginx.' tested-with: GHC==7.10.3 GHC==8.0.1 GHC==8.0.2 GHC==8.2.1 GHC==8.2.2 flags: test-hlint: description: Build hlint test manual: true default: true test-doctests: description: Build doctests manual: true default: true gpio-example: description: Build the GPIO server example manual: true default: true mock-example: description: Build the mock server example manual: true default: true client-unlock-example: description: Build the unlock client example manual: true default: true when: - condition: impl(ghc >= 8.0) then: ghc-options: - -Wall - -Wincomplete-uni-patterns - -Wincomplete-record-updates else: ghc-options: - -Wall - -fwarn-incomplete-uni-patterns - -fwarn-incomplete-record-updates library: when: - condition: impl(ghc >= 8.0) then: ghc-options: - -Wcompat - -Wnoncanonical-monad-instances - -Wnoncanonical-monadfail-instances else: # provide/emulate `Control.Monad.Fail` and `Data.Semigroups` API for pre-GHC8 dependencies: - fail == 4.9.* - semigroups == 0.18.* source-dirs: src other-extensions: - DataKinds - DeriveDataTypeable - DeriveGeneric - MultiParamTypeClasses - OverloadedStrings - OverloadedLists - ScopedTypeVariables - TypeOperators dependencies: - base >=4.8 && <5 - aeson >=0.11 && <1.3 - aeson-pretty ==0.8.* - bytestring ==0.10.* - http-client >=0.4 && <0.6 - http-types ==0.9.* - lens >=4 && <5 - lucid ==2.9.* - mellon-core ==0.8.* - servant ==0.11.* - servant-client ==0.11.* - servant-docs >=0.10 && <0.12 - servant-lucid ==0.7.* - servant-server ==0.11.* - servant-swagger ==1.1.* - servant-swagger-ui ==0.2.* - swagger2 >=2.1 && <2.3 - text ==1.2.* - time >=1.5 && <2 - transformers >=0.4.2 && <0.6 - wai ==3.2.* - warp ==3.2.* tests: hlint: main: hlint.hs source-dirs: test other-modules: [] ghc-options: - -w - -threaded - -rtsopts - -with-rtsopts=-N when: - condition: "!(flag(test-hlint))" then: buildable: false else: dependencies: - base - hlint ==2.0.* doctest: main: doctest.hs source-dirs: test other-modules: [] ghc-options: - -threaded when: - condition: "!(flag(test-doctests))" then: buildable: false else: dependencies: - base - doctest >=0.11 && <0.14 spec: main: Main.hs source-dirs: - test other-extensions: - OverloadedStrings - ScopedTypeVariables ghc-options: - -w - -threaded - -rtsopts - -with-rtsopts=-N dependencies: - base - QuickCheck >=2.8 && <2.12 - quickcheck-instances ==0.3.* - aeson - aeson-pretty - bytestring - hspec >=2.2 && <2.5 - hspec-wai >=0.6.6 && <0.10 - http-client - http-types - lens - lucid - mellon-core - mellon-web - network - servant - servant-client - servant-docs - servant-lucid - servant-server - servant-swagger - servant-swagger-ui - swagger2 - text - time - transformers - wai - wai-extra ==3.0.* - warp executables: gpio-mellon-server: main: GpioServer.hs source-dirs: examples other-modules: [] other-extensions: - OverloadedStrings ghc-options: - -threaded - -fwarn-incomplete-uni-patterns - -fwarn-incomplete-record-updates when: - condition: impl(ghc >= 8.0) ghc-options: - -Wcompat - -Wnoncanonical-monad-instances - -Wnoncanonical-monadfail-instances - -fno-warn-redundant-constraints - condition: "!(flag(gpio-example))" then: buildable: false else: dependencies: - base - exceptions >=0.8.0 && <1 - hpio >=0.8 && <1 - mellon-core - mellon-gpio ==0.8.* - mellon-web - mtl - network ==2.6.* - optparse-applicative >=0.11.0 && <0.15 - time - transformers - warp mellon-schedule-unlock: main: ScheduleUnlock.hs source-dirs: examples other-modules: [] other-extensions: - LambdaCase - OverloadedStrings ghc-options: - -threaded - -fwarn-incomplete-uni-patterns - -fwarn-incomplete-record-updates when: - condition: impl(ghc >= 8.0) ghc-options: - -Wcompat - -Wnoncanonical-monad-instances - -Wnoncanonical-monadfail-instances - -fno-warn-redundant-constraints - condition: "!(flag(client-unlock-example))" then: buildable: false else: dependencies: - base - bytestring - exceptions - http-client - http-client-tls - http-types - mellon-core - mellon-web - mtl - network - optparse-applicative - servant-client - time - transformers mock-mellon-server: main: MockServer.hs source-dirs: examples other-modules: [] ghc-options: - -threaded - -fwarn-incomplete-uni-patterns - -fwarn-incomplete-record-updates when: - condition: impl(ghc >= 8.0) ghc-options: - -Wcompat - -Wnoncanonical-monad-instances - -Wnoncanonical-monadfail-instances - -fno-warn-redundant-constraints - condition: "!(flag(mock-example))" then: buildable: false else: dependencies: - base - mellon-core - mellon-web - warp extra-source-files: - changelog.md - README.md - swagger.json - package.yaml