Skip to content
This repository was archived by the owner on Aug 20, 2025. It is now read-only.

phylum-dev/changes-stream-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

76 Commits

Repository files navigation

changes_stream2

LicenseCargoDocumentation

Fork of https://github.com/ashleygwilliams/changes-stream-rust / https://crates.io/crates/changes-stream.

An implementation of changes-stream in Rust.

This code reads in a readable stream from an endpoint, parses each line and returns CouchDB changes events as defined in src/event.rs.

usage

in your Cargo.toml:

[dependencies] changes-stream2 = "0.2"

from examples/follower.rs:

use changes_stream2::{ChangesStream,Event};use futures_util::stream::StreamExt;#[tokio::main]asyncfnmain(){let url = "https://replicate.npmjs.com/_changes".to_string();letmut changes = ChangesStream::new(url).await.unwrap();whileletSome(event) = changes.next().await{match event {Ok(Event::Change(change)) => println!("Change ({}):{}", change.seq, change.id),Ok(Event::Finished(finished)) => println!("Finished:{}", finished.last_seq),Err(err) => println!("Error:{:?}", err),}}}

features

metrics

Enables metrics collection of the changes stream as counter values. The name is generated from the host and path of the url(database name). The metrics are:

  • couchdb_changes_{name}_bytes: Total bytes read from the changes stream
  • couchdb_changes_{name}_entries: Total parsed change entries

raw_value_doc

Changes the type of ChangeEvent::Doc from serde_json::Map<String, serde_json::Value> to serde_json::value::RawValue.

native-tls

Use the native-tls crate for TLS connections. This is the default.

rustls-tls

Use the rustls crate for TLS connections.

About

a changes stream for couchdb style APIs - written in Rust

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust100.0%