Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add comments and remove unused RequestBodyState #313

Merged
merged 2 commits into from
Sep 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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