testS3Run
  :: forall effs a
  .  (Members '[ ConfigEff, Reader Params, Writer Journal ] effs)
  => (Eff (S3Eff ': effs) a -> Eff effs a)
testS3Run = interpret (\case

  GetContent S3Object{ _s3oBucketId, _s3oKey } ->
    panic "GetContent"


  PutContent s3Obj@S3Object{_s3oBucketId, _s3oKey } payload -> do
    s3Action $ PutContentAction s3Obj payload

  ListObjects id maybeToken -> do
    panic "ListObjects"


  DeleteObject s3Obj@S3Object{_s3oBucketId, _s3oKey } -> do
    {- config <- getConfig -}
    {- getName _s3oBucketId -}
    {- tell $ s3Action $ DeleteBucketAction name -}
    panic "DeleteObject"


  DeleteObjects s3objs -> do
    panic "DeleteObjects"

  )
testS3Run
  :: forall effs a
  .  (Members '[ ConfigEff, Reader Params, Writer Journal ] effs)
  => (Eff (S3Eff ': effs) a -> Eff effs a)
testS3Run = interpret (\case

  GetContent S3Object{ _s3oBucketId, _s3oKey } ->
    panic "GetContent"


  PutContent s3Obj@S3Object{_s3oBucketId, _s3oKey } payload -> do
    s3Action $ PutContentAction s3Obj payload

  ListObjects id maybeToken -> do
    panic "ListObjects"


  DeleteObject s3Obj@S3Object{_s3oBucketId, _s3oKey } -> do
    {- config <- getConfig -}
    {- getName _s3oBucketId -}
    {- tell $ s3Action $ DeleteBucketAction name -}
    panic "DeleteObject"


  DeleteObjects s3objs -> do
    panic "DeleteObjects"

  )
testS3Run = interpret (\case

  GetContent S3Object{ _s3oBucketId, _s3oKey } ->
    panic "GetContent"


  PutContent s3Obj@S3Object{_s3oBucketId, _s3oKey } payload -> do
    s3Action $ PutContentAction s3Obj payload

  ListObjects id maybeToken -> do
    panic "ListObjects"


  DeleteObject s3Obj@S3Object{_s3oBucketId, _s3oKey } -> do
    {- config <- getConfig -}
    {- getName _s3oBucketId -}
    {- tell $ s3Action $ DeleteBucketAction name -}
    panic "DeleteObject"


  DeleteObjects s3objs -> do
    panic "DeleteObjects"

  )