Skip to content

Commit

Permalink
add comments and remove unused RequestBodyState (#313)
Browse files Browse the repository at this point in the history
* add comments and remove unused RequestBodyState

* changelog

---------

Co-authored-by: Marco Zocca <[email protected]>
  • Loading branch information
ocramz and Marco Zocca authored Sep 27, 2023
1 parent f7eacad commit 6ee9736
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 9 deletions.
17 changes: 8 additions & 9 deletions Web/Scotty/Internal/Types.hs
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,15 @@ type Application m = Request -> m Response

------------------ Scotty Request Body --------------------

data BodyChunkBuffer = BodyChunkBuffer { hasFinishedReadingChunks :: Bool
, chunksReadSoFar :: [BS.ByteString] }

data BodyInfo = BodyInfo { bodyInfoReadProgress :: MVar Int
data BodyChunkBuffer = BodyChunkBuffer { hasFinishedReadingChunks :: Bool -- ^ whether we've reached the end of the stream yet
, chunksReadSoFar :: [BS.ByteString]
}
-- | The key part of having two MVars is that we can "clone" the BodyInfo to create a copy where the index is reset to 0, but the chunk cache is the same. Passing a cloned BodyInfo into each matched route allows them each to start from the first chunk if they call bodyReader.
--
-- Introduced in (#308)
data BodyInfo = BodyInfo { bodyInfoReadProgress :: MVar Int -- ^ index into the stream read so far
, bodyInfoChunkBuffer :: MVar BodyChunkBuffer
, bodyInfoDirectChunkRead :: IO BS.ByteString
, bodyInfoDirectChunkRead :: IO BS.ByteString -- ^ can be called to get more chunks
}

--------------- Scotty Applications -----------------
Expand Down Expand Up @@ -154,10 +157,6 @@ data ActionEnv = Env { getReq :: Request
, getFiles :: [File]
}

data RequestBodyState = BodyUntouched
| BodyCached LBS8.ByteString [BS.ByteString] -- whole body, chunks left to stream
| BodyCorrupted

data BodyPartiallyStreamed = BodyPartiallyStreamed deriving (Show, Typeable)

instance E.Exception BodyPartiallyStreamed
Expand Down
1 change: 1 addition & 0 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
* Disambiguate request parameters (#204). Adjust the `Env` type to have three [Param] fields instead of one, add `captureParam`, `formParam`, `queryParam` and the associated `captureParams`, `formParams`, `queryParams`. Add deprecation notices to `param` and `params`.
* Add `Scotty.Cookie` module.
* Change body parsing behaviour such that calls to 'next' don't result in POST request bodies disappearing (#147).
* (Internal) Remove unused type RequestBodyState (#313)

## 0.12.1 [2022.11.17]
* Fix CPP bug that prevented tests from building on Windows.
Expand Down

0 comments on commit 6ee9736

Please sign in to comment.