github-rest 1.2.0 → 1.2.1
raw patch · 5 files changed
+24/−26 lines, 5 filesdep ~aesondep ~bytestringdep ~cryptonPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: aeson, bytestring, crypton, http-client, http-client-tls, http-types, jose-jwt, mtl, scientific, text, time, transformers, unliftio, unliftio-core
API changes (from Hackage documentation)
- GitHub.REST: [$sel:apiVersion:GitHubSettings] :: GitHubSettings -> ByteString
- GitHub.REST: [$sel:token:GitHubSettings] :: GitHubSettings -> Maybe Token
- GitHub.REST: [$sel:userAgent:GitHubSettings] :: GitHubSettings -> ByteString
- GitHub.REST.Monad: [$sel:apiVersion:GitHubSettings] :: GitHubSettings -> ByteString
- GitHub.REST.Monad: [$sel:token:GitHubSettings] :: GitHubSettings -> Maybe Token
- GitHub.REST.Monad: [$sel:userAgent:GitHubSettings] :: GitHubSettings -> ByteString
+ GitHub.REST: [apiVersion] :: GitHubSettings -> ByteString
+ GitHub.REST: [token] :: GitHubSettings -> Maybe Token
+ GitHub.REST: [userAgent] :: GitHubSettings -> ByteString
+ GitHub.REST.Monad: [apiVersion] :: GitHubSettings -> ByteString
+ GitHub.REST.Monad: [token] :: GitHubSettings -> Maybe Token
+ GitHub.REST.Monad: [userAgent] :: GitHubSettings -> ByteString
- GitHub.REST: [:=] :: (Show v, ToJSON v) => Text -> v -> KeyValue
+ GitHub.REST: [:=] :: forall v. (Show v, ToJSON v) => Text -> v -> KeyValue
- GitHub.REST: class (Monad m) => MonadGitHubREST m
+ GitHub.REST: class Monad m => MonadGitHubREST (m :: Type -> Type)
- GitHub.REST: data GitHubT m a
+ GitHub.REST: data GitHubT (m :: Type -> Type) a
- GitHub.REST: data () => StdMethod
+ GitHub.REST: data StdMethod
- GitHub.REST.KeyValue: [:=] :: (Show v, ToJSON v) => Text -> v -> KeyValue
+ GitHub.REST.KeyValue: [:=] :: forall v. (Show v, ToJSON v) => Text -> v -> KeyValue
- GitHub.REST.Monad: class (Monad m) => MonadGitHubREST m
+ GitHub.REST.Monad: class Monad m => MonadGitHubREST (m :: Type -> Type)
- GitHub.REST.Monad: data GitHubT m a
+ GitHub.REST.Monad: data GitHubT (m :: Type -> Type) a
- GitHub.REST.Monad.Class: class (Monad m) => MonadGitHubREST m
+ GitHub.REST.Monad.Class: class Monad m => MonadGitHubREST (m :: Type -> Type)
Files
- CHANGELOG.md +4/−0
- github-rest.cabal +1/−3
- test/Query.hs +19/−21
- test/goldens/gists-gist_id-sha-404.golden +0/−1
- test/goldens/gists-gist_id-sha-422.golden +0/−1
CHANGELOG.md view
@@ -1,3 +1,7 @@+# v1.2.1++* Make integration test more robust+ # v1.2.0 * Switch from `jwt` to `jose-jwt` + `crypton`
github-rest.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: github-rest-version: 1.2.0+version: 1.2.1 synopsis: Query the GitHub REST API programmatically description: Query the GitHub REST API programmatically, which can provide a more flexible and clear interface than if all of the endpoints and their types@@ -21,8 +21,6 @@ extra-source-files: README.md CHANGELOG.md- test/goldens/gists-gist_id-sha-404.golden- test/goldens/gists-gist_id-sha-422.golden test/goldens/gists-gist_id-sha.golden source-repository head
test/Query.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} @@ -6,11 +5,11 @@ import Data.Aeson (Value) import Data.ByteString.Lazy (ByteString)-import qualified Data.ByteString.Lazy.Char8 as Char8 import qualified Data.Text.Lazy.Encoding as Text import Network.HTTP.Types (status404) import Test.Tasty (TestName, TestTree) import Test.Tasty.Golden (goldenVsString)+import Test.Tasty.HUnit (testCase, (@?=)) import GitHub.REST @@ -19,29 +18,28 @@ [ goldens "Query Gist #1" "gists-gist_id-sha.golden" $ do gist <- queryGitHub $ getGist 1 "8afc134bf14f8f56ed2e7234128490d9946e8c16" return $ Text.encodeUtf8 $ gist .: "files" .: "gistfile1.txt" .: "content"- , goldens "Query non-existent Gist commit" "gists-gist_id-sha-422.golden" $ do- showResult . githubTry . queryGitHub $- getGist 1 "d00770679ba293a327156b9e7031c47c6d269157"- , goldens "Query non-existent Gist" "gists-gist_id-sha-404.golden" $ do- showResult . githubTry' status404 . queryGitHub $- getGist 0 "d00770679ba293a327156b9e7031c47c6d269157"+ , testCase "Query non-existent Gist commit" $ do+ (Left e :: Either Value Value) <-+ runGitHubT ghSettings . githubTry . queryGitHub $+ getGist 1 "d00770679ba293a327156b9e7031c47c6d269157"+ e .: "message" @?= ("No commit found for SHA: d00770679ba293a327156b9e7031c47c6d269157" :: String)+ , testCase "Query non-existent Gist" $ do+ (Left e :: Either Value Value) <-+ runGitHubT ghSettings . githubTry' status404 . queryGitHub $+ getGist 0 "d00770679ba293a327156b9e7031c47c6d269157"+ e .: "message" @?= ("Not Found" :: String) ] goldens :: TestName -> String -> GitHubT IO ByteString -> TestTree-goldens name fp action = goldenVsString name ("test/goldens/" ++ fp) $ runGitHubT state action- where- state =- GitHubSettings- { token = Nothing- , userAgent = "github-rest"- , apiVersion = ""- }+goldens name fp action = goldenVsString name ("test/goldens/" ++ fp) $ runGitHubT ghSettings action -showResult :: (Monad m) => m (Either Value Value) -> m ByteString-showResult m =- m >>= \case- Right v -> error $ "Got back invalid result: " ++ show v- Left e -> return $ Char8.pack $ show e+ghSettings :: GitHubSettings+ghSettings =+ GitHubSettings+ { token = Nothing+ , userAgent = "github-rest"+ , apiVersion = ""+ } getGist :: Int -> String -> GHEndpoint getGist gistId gistSha =
− test/goldens/gists-gist_id-sha-404.golden
@@ -1,1 +0,0 @@-Object (fromList [("documentation_url",String "https://docs.github.com/rest/gists/gists#get-a-gist-revision"),("message",String "Not Found")])
− test/goldens/gists-gist_id-sha-422.golden
@@ -1,1 +0,0 @@-Object (fromList [("documentation_url",String "https://docs.github.com/rest/gists/gists#get-a-gist-revision"),("message",String "No commit found for SHA: d00770679ba293a327156b9e7031c47c6d269157")])