Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cablehead/nu_plugin_from_sse
Nushell plugin to parse a stream of HTTP server sent events
https://github.com/cablehead/nu_plugin_from_sse
http nushell nushell-plugin pipeline server-sent-events shell streaming
Last synced: 3 days ago
JSON representation
Nushell plugin to parse a stream of HTTP server sent events
- Host: GitHub
- URL: https://github.com/cablehead/nu_plugin_from_sse
- Owner: cablehead
- License: mit
- Created: 2024-02-28T03:58:15.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-11-11T05:08:18.000Z (about 1 month ago)
- Last Synced: 2024-12-08T20:43:22.024Z (5 days ago)
- Topics: http, nushell, nushell-plugin, pipeline, server-sent-events, shell, streaming
- Language: Rust
- Homepage:
- Size: 235 KB
- Stars: 8
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nu - nu_plugin_from_sse
README
# [`nu`](https://www.nushell.sh) [streaming plugin](https://www.nushell.sh/blog/2024-03-05-nushell_0_91_0.html#plugin-protocol-overhaul-toc): `nu_plugin_from_sse`
This plugin was forked from the
[nu_plugin_example](https://github.com/nushell/nushell/blob/main/crates/nu_plugin_example/src/commands/sum.rs).## Install with Cargo
From within nushell:
cargo install --locked nu_plugin_from_sse
plugin add ~/.cargo/bin/nu_plugin_from_sse
# and then restart nu or use plugin add to activate## Usage
`nu_plugin_from_sse` provides one command:
### `from sse`
This command transforms HTTP SSE (Server-Sent Events) into structured records with the shape:
```plaintext
{
id: string, // Unique identifier for the SSE event
event: string, // Type of event
data: string // Data payload of the event
}
```#### known issue: nu table buffering [#12129](https://github.com/nushell/nushell/issues/12129)
If your SSE endpoint dispatches initial events upon connection, then
pauses—awaiting rare updates—you won't see any output until the first new
update after connecting. This behavior is due to nu's [table buffering
mechanism](https://github.com/nushell/nushell/blob/65e5abaa3e48126ff730c9a59e5f6f55777a85bd/crates/nu-command/src/viewers/table.rs#L846-L875),
where a duration timeout is factored in only during active input processing.An easy workaround for this issue is to pipe to
[`each`](https://www.nushell.sh/commands/docs/each.html).#### example
Copy this text to your clipboard:
```
event: creatureAlert
id: 1
data: {"id":"uni123","type":"Unicorn","lat":45.4235,"lon":-75.6979,"urgency":"high","desc":"Injured near Crystal River."}```
Use [`bp`](https://github.com/printfn/bp) to pipe it:
```nushell
bp | from sse | update data { from json }
````![output](./docs/out.png)
#### live example
```nushell
http get https://ndyg.cross.stream/projects/enchanted-animal-rescue/rescue-feed |
from sse |
update data { from json }
```