diff options
| author | Gregor Kleen <gkleen@yggdrasil.li> | 2016-01-21 08:43:56 +0000 |
|---|---|---|
| committer | Gregor Kleen <gkleen@yggdrasil.li> | 2016-01-21 08:43:56 +0000 |
| commit | 79a01c5fe636dad60338e4847be8b3cbf3716192 (patch) | |
| tree | e715aefd359a9c74cb8b94ac009cf30481f28041 | |
| parent | d27690786ed2056d64c882ac72825755110d4870 (diff) | |
| download | thermoprint-79a01c5fe636dad60338e4847be8b3cbf3716192.tar thermoprint-79a01c5fe636dad60338e4847be8b3cbf3716192.tar.gz thermoprint-79a01c5fe636dad60338e4847be8b3cbf3716192.tar.bz2 thermoprint-79a01c5fe636dad60338e4847be8b3cbf3716192.tar.xz thermoprint-79a01c5fe636dad60338e4847be8b3cbf3716192.zip | |
Reworked API
| -rw-r--r-- | spec/src/Thermoprint/API.hs | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/spec/src/Thermoprint/API.hs b/spec/src/Thermoprint/API.hs index 627f9b1..4b10130 100644 --- a/spec/src/Thermoprint/API.hs +++ b/spec/src/Thermoprint/API.hs | |||
| @@ -7,6 +7,7 @@ module Thermoprint.API | |||
| 7 | ( PrinterStatus(..) | 7 | ( PrinterStatus(..) |
| 8 | , JobStatus(..) | 8 | , JobStatus(..) |
| 9 | , PrintingError(..) | 9 | , PrintingError(..) |
| 10 | , DraftTitle | ||
| 10 | , ThermoprintAPI | 11 | , ThermoprintAPI |
| 11 | , thermoprintAPI | 12 | , thermoprintAPI |
| 12 | , module Thermoprint.Identifiers | 13 | , module Thermoprint.Identifiers |
| @@ -20,8 +21,11 @@ import Servant.API | |||
| 20 | import Data.Aeson | 21 | import Data.Aeson |
| 21 | 22 | ||
| 22 | import Data.Set (Set) | 23 | import Data.Set (Set) |
| 24 | import Data.Map (Map) | ||
| 23 | import Data.Sequence (Seq) | 25 | import Data.Sequence (Seq) |
| 24 | 26 | ||
| 27 | import Data.Text (Text) | ||
| 28 | |||
| 25 | import GHC.Generics (Generic) | 29 | import GHC.Generics (Generic) |
| 26 | 30 | ||
| 27 | import Data.Proxy (Proxy(..)) | 31 | import Data.Proxy (Proxy(..)) |
| @@ -33,8 +37,8 @@ data PrinterStatus = Busy JobId | |||
| 33 | | Available | 37 | | Available |
| 34 | deriving (Generic, Show, FromJSON, ToJSON) | 38 | deriving (Generic, Show, FromJSON, ToJSON) |
| 35 | 39 | ||
| 36 | data JobStatus = Queued | 40 | data JobStatus = Queued PrinterId |
| 37 | | Printing | 41 | | Printing PrinterId |
| 38 | | Done | 42 | | Done |
| 39 | | Failed PrintingError | 43 | | Failed PrintingError |
| 40 | deriving (Generic, Show, FromJSON, ToJSON) | 44 | deriving (Generic, Show, FromJSON, ToJSON) |
| @@ -42,28 +46,27 @@ data JobStatus = Queued | |||
| 42 | data PrintingError = UnknownError | 46 | data PrintingError = UnknownError |
| 43 | deriving (Typeable, Generic, Show, FromJSON, ToJSON, Exception) | 47 | deriving (Typeable, Generic, Show, FromJSON, ToJSON, Exception) |
| 44 | 48 | ||
| 45 | type ThermoprintAPI = "printers" :> Get '[JSON] (Set PrinterId) | 49 | type DraftTitle = Text |
| 46 | :<|> "printer" :> Capture "printerId" PrinterId :> ( | 50 | |
| 47 | ReqBody '[JSON] Printout :> Post '[JSON] JobId | 51 | type ThermoprintAPI = "printers" :> Get '[JSON] (Map PrinterId PrinterStatus) |
| 48 | :<|> "status" :> Get '[JSON] PrinterStatus | ||
| 49 | ) | ||
| 50 | :<|> "jobs" :> ( | 52 | :<|> "jobs" :> ( |
| 51 | QueryParam "printer" PrinterId :> QueryParam "min" JobId :> QueryParam "max" JobId :> Get '[JSON] (Seq JobId) | 53 | QueryParam "printer" PrinterId :> QueryParam "min" JobId :> QueryParam "max" JobId :> Get '[JSON] (Seq (JobId, JobStatus)) |
| 54 | :<|> QueryParam "printer" PrinterId :> ReqBody '[JSON] Printout :> Post '[JSON] JobId | ||
| 52 | ) | 55 | ) |
| 53 | :<|> "job" :> Capture "jobId" JobId :> ( | 56 | :<|> "job" :> Capture "jobId" JobId :> ( |
| 54 | Get '[JSON] Printout | 57 | Get '[JSON] Printout |
| 55 | :<|> "status" :> Get '[JSON] JobStatus | 58 | :<|> "status" :> Get '[JSON] JobStatus |
| 56 | :<|> "printer" :> Get '[JSON] PrinterId | ||
| 57 | :<|> Delete '[] () | 59 | :<|> Delete '[] () |
| 58 | ) | 60 | ) |
| 59 | :<|> "drafts" :> ( | 61 | :<|> "drafts" :> ( |
| 60 | Get '[JSON] (Set DraftId) | 62 | Get '[JSON] (Map DraftId (Maybe DraftTitle)) |
| 61 | :<|> ReqBody '[JSON] Printout :> Post '[JSON] DraftId | 63 | :<|> QueryParam "title" DraftTitle :> ReqBody '[JSON] Printout :> Post '[JSON] DraftId |
| 62 | ) | 64 | ) |
| 63 | :<|> "draft" :> Capture "draftId" DraftId :> ( | 65 | :<|> "draft" :> Capture "draftId" DraftId :> ( |
| 64 | ReqBody '[JSON] Printout :> Put '[] () | 66 | QueryParam "title" DraftTitle :> ReqBody '[JSON] Printout :> Put '[] () |
| 65 | :<|> Get '[JSON] Printout | 67 | :<|> Get '[JSON] (Maybe DraftTitle, Printout) |
| 66 | :<|> Delete '[] () | 68 | :<|> Delete '[] () |
| 69 | :<|> QueryParam "printer" PrinterId :> Post '[JSON] JobId | ||
| 67 | ) | 70 | ) |
| 68 | 71 | ||
| 69 | thermoprintAPI :: Proxy ThermoprintAPI | 72 | thermoprintAPI :: Proxy ThermoprintAPI |
