pbrisbin · GitHub

Repro

Save to ./gh-repro.hs

{-# LANGUAGE OverloadedStrings #-}
module Main (main) where
import qualified Data.ByteString.Char8 as C8
import GitHub.Endpoints.Issues.Comments
import System.Environment (getEnv)
main :: IO ()
main = do
    let owner = "restyled-io"
        repo = "restyled.io"
        issue = IssueNumber 155
    auth <- OAuth . C8.pack <$> getEnv "GITHUB_ACCESS_TOKEN"
    Right comment <- createComment auth owner repo issue "Test comment"
    result <- deleteComment auth owner repo $ commentId comment
    print result
GITHUB_ACCESS_TOKEN=<something with repo scopes> \
  stack runghc --resolver lts-13.23 --package github-0.21 ./gh-repro.hs

Expected

The comment is removed and the API response successfully returned according to deleteCommentR's type as:

Right ()

Actual

The comment is removed, but the result is an error in Left:

Left (ParseError "Error in $: not enough input")

Hypothesis

The commonly-used Request synonym fixes to MtJSON, but an endpoint such as this returns 204 No Content, so trying to parse no content to () fails. I'm guessing such an endpoint function needs to use MtUnit.

Read the original on github.com ↗