diff --git a/src/Web/Api/WebDriver/Types.hs b/src/Web/Api/WebDriver/Types.hs index dc99860..63ea35e 100644 --- a/src/Web/Api/WebDriver/Types.hs +++ b/src/Web/Api/WebDriver/Types.hs @@ -12,7 +12,7 @@ The WebDriver protocol involves passing several different kinds of JSON objects. Note that while the WebDriver spec defines some JSON objects, in general a given WebDriver server can accept additional properties on any given object. Our types here will be limited to the "spec" object signatures, but our API will need to be user extensible. -} -{-# LANGUAGE OverloadedStrings, RecordWildCards, BangPatterns, CPP #-} +{-# LANGUAGE OverloadedStrings, RecordWildCards, BangPatterns, CPP, FlexibleContexts #-} module Web.Api.WebDriver.Types ( -- * Stringy Types SessionId @@ -149,7 +149,11 @@ malformedValue !name !value = fail $ unpack $ object_ :: [Maybe Pair] -> Value object_ = object . filter (\(_, v) -> v /= Null) . catMaybes +#if MIN_VERSION_aeson(2,2,0) +(.==) :: (ToJSON v, KeyValue Value kv) => Text -> v -> Maybe kv +#else (.==) :: (ToJSON v, KeyValue kv) => Text -> v -> Maybe kv +#endif (.==) key value = #if MIN_VERSION_aeson(2,0,0) Just ((fromText key) .= value) -- val = lookup (fromText key) obj @@ -157,7 +161,11 @@ object_ = object . filter (\(_, v) -> v /= Null) . catMaybes Just (key .= value) #endif +#if MIN_VERSION_aeson(2,2,0) +(.=?) :: (ToJSON v, KeyValue Value kv) => Text -> Maybe v -> Maybe kv +#else (.=?) :: (ToJSON v, KeyValue kv) => Text -> Maybe v -> Maybe kv +#endif (.=?) key = #if MIN_VERSION_aeson(2,0,0) fmap ((fromText key) .=)