Handle HTTP errors in the middle of a Stream.

This commit is contained in:
Dillon Kearns 2024-04-26 09:05:52 -07:00
parent 0954490e7d
commit 66f72d5430
2 changed files with 29 additions and 9 deletions

View File

@ -160,6 +160,20 @@ b =
|> try
|> expectError "HTTP FatalError message"
"BadStatus: 404 Not Found"
, Stream.fromString "Hello!"
|> Stream.pipe
(Stream.httpWithInput
{ url = "https://jsonplaceholder.typicode.com/posts/124"
, timeoutInMs = Nothing
, retries = Nothing
, headers = []
, method = "POST"
}
)
|> Stream.pipe Stream.stdout
|> Stream.run
|> expectError "HTTP error in the middle of a stream"
"HTTP request failed: 404 Not Found"
, Stream.fromString "This is input..."
|> Stream.pipe
(Stream.customTransformWithMeta

View File

@ -772,16 +772,22 @@ function runStream(req, portsFile) {
retry: part.retries,
timeout: part.timeoutInMs,
});
let metadata = () => {
return {
headers: Object.fromEntries(response.headers.entries()),
statusCode: response.status,
// bodyKind,
url: response.url,
statusText: response.statusText,
if (!isLastProcess && !response.ok) {
resolve({
error: `HTTP request failed: ${response.status} ${response.statusText}`,
});
} else {
let metadata = () => {
return {
headers: Object.fromEntries(response.headers.entries()),
statusCode: response.status,
// bodyKind,
url: response.url,
statusText: response.statusText,
};
};
};
return { metadata, stream: response.body };
return { metadata, stream: response.body };
}
} else if (part.name === "command") {
const { command, args, allowNon0Status, output } = part;
/** @type {'ignore' | 'inherit'} } */