diff options
author | Gregor Kleen <gkleen@yggdrasil.li> | 2016-01-31 15:03:57 +0000 |
---|---|---|
committer | Gregor Kleen <gkleen@yggdrasil.li> | 2016-01-31 15:03:57 +0000 |
commit | 44a6279b86deecc865f05d2ee519f64f39ac1ccb (patch) | |
tree | e2634312eee0c99b383520e0877c33ece32102ee /spec/src/Thermoprint | |
parent | 2914fd9d66265080dbb38aed61ef8aad77b5ec2c (diff) | |
download | thermoprint-44a6279b86deecc865f05d2ee519f64f39ac1ccb.tar thermoprint-44a6279b86deecc865f05d2ee519f64f39ac1ccb.tar.gz thermoprint-44a6279b86deecc865f05d2ee519f64f39ac1ccb.tar.bz2 thermoprint-44a6279b86deecc865f05d2ee519f64f39ac1ccb.tar.xz thermoprint-44a6279b86deecc865f05d2ee519f64f39ac1ccb.zip |
Recording job creation time in printer queues
Diffstat (limited to 'spec/src/Thermoprint')
-rw-r--r-- | spec/src/Thermoprint/API.hs | 45 |
1 files changed, 30 insertions, 15 deletions
diff --git a/spec/src/Thermoprint/API.hs b/spec/src/Thermoprint/API.hs index e3d4b61..4f9d074 100644 --- a/spec/src/Thermoprint/API.hs +++ b/spec/src/Thermoprint/API.hs | |||
@@ -14,29 +14,33 @@ module Thermoprint.API | |||
14 | , module Thermoprint.Printout | 14 | , module Thermoprint.Printout |
15 | ) where | 15 | ) where |
16 | 16 | ||
17 | import Thermoprint.Printout | 17 | import Thermoprint.Printout |
18 | import Thermoprint.Identifiers | 18 | import Thermoprint.Identifiers |
19 | 19 | ||
20 | import Servant.API | 20 | import Servant.API |
21 | import Data.Aeson | 21 | import Data.Aeson |
22 | 22 | ||
23 | import Data.Set (Set) | 23 | import Data.Set (Set) |
24 | import Data.Map (Map) | 24 | import Data.Map (Map) |
25 | import qualified Data.Map as Map (foldMapWithKey, singleton) | 25 | import qualified Data.Map as Map (foldMapWithKey, singleton) |
26 | import Data.Sequence (Seq) | 26 | import Data.Sequence (Seq) |
27 | 27 | ||
28 | import Data.IntMap.Strict (IntMap) | 28 | import Data.IntMap.Strict (IntMap) |
29 | import qualified Data.IntMap.Strict as IntMap (foldMapWithKey, singleton) | 29 | import qualified Data.IntMap.Strict as IntMap (foldMapWithKey, singleton) |
30 | 30 | ||
31 | import Data.Text (Text) | 31 | import Data.Text (Text) |
32 | import qualified Data.Text as T | ||
32 | 33 | ||
33 | import Data.Typeable (Typeable) | 34 | import Data.Typeable (Typeable) |
34 | import GHC.Generics (Generic) | 35 | import GHC.Generics (Generic) |
35 | import Control.DeepSeq (NFData) | 36 | import Control.DeepSeq (NFData) |
36 | 37 | ||
37 | import Data.Proxy (Proxy(..)) | 38 | import Data.Proxy (Proxy(..)) |
38 | 39 | ||
39 | import Control.Exception (Exception) | 40 | import Control.Exception (Exception) |
41 | |||
42 | import Data.Time (UTCTime) | ||
43 | import Data.Time.Format | ||
40 | 44 | ||
41 | instance (Integral k, Ord k, ToJSON v) => ToJSON (Map k v) where | 45 | instance (Integral k, Ord k, ToJSON v) => ToJSON (Map k v) where |
42 | toJSON = toJSON . Map.foldMapWithKey (IntMap.singleton . castId) | 46 | toJSON = toJSON . Map.foldMapWithKey (IntMap.singleton . castId) |
@@ -60,9 +64,20 @@ data PrintingError = UnknownError | |||
60 | 64 | ||
61 | type DraftTitle = Text | 65 | type DraftTitle = Text |
62 | 66 | ||
67 | instance FromText UTCTime where | ||
68 | fromText = parseTimeM True defaultTimeLocale "%s%Q" . T.unpack | ||
69 | |||
70 | instance ToText UTCTime where | ||
71 | toText = T.pack . formatTime defaultTimeLocale "%s%Q" | ||
72 | |||
63 | type ThermoprintAPI = "printers" :> Get '[JSON] (Map PrinterId PrinterStatus) | 73 | type ThermoprintAPI = "printers" :> Get '[JSON] (Map PrinterId PrinterStatus) |
64 | :<|> "jobs" :> ( | 74 | :<|> "jobs" :> ( |
65 | QueryParam "printer" PrinterId :> QueryParam "min" JobId :> QueryParam "max" JobId :> Get '[JSON] (Seq (JobId, JobStatus)) | 75 | QueryParam "printer" PrinterId |
76 | :> QueryParam "min" JobId | ||
77 | :> QueryParam "max" JobId | ||
78 | :> QueryParam "minTime" UTCTime | ||
79 | :> QueryParam "maxTime" UTCTime | ||
80 | :> Get '[JSON] (Seq (JobId, UTCTime, JobStatus)) | ||
66 | :<|> QueryParam "printer" PrinterId :> ReqBody '[JSON] Printout :> Post '[JSON] JobId | 81 | :<|> QueryParam "printer" PrinterId :> ReqBody '[JSON] Printout :> Post '[JSON] JobId |
67 | ) | 82 | ) |
68 | :<|> "job" :> Capture "jobId" JobId :> ( | 83 | :<|> "job" :> Capture "jobId" JobId :> ( |