Enum Feed
pub enum Feed {
Rss2(Rss2Feed),
Atom(AtomFeed),
}http and rss only.Expand description
A feed in either RSS 2.0 or Atom 1.0 format.
Variants§
Implementations§
§impl Feed
impl Feed
pub async fn from_body(body: Body) -> Result<Feed, FeedParseError>
pub async fn from_body(body: Body) -> Result<Feed, FeedParseError>
Parse a feed from a Body by draining a FeedStream. This is the
convenience “collect” adapter — fine for the typical “give me the
whole document” client / proxy case, but it does buffer every item /
entry into memory.
Use FeedStream::from_body directly if you want to process items
incrementally (e.g. filter podcast episodes as they stream in, or stop
after the first N items).
For defence-in-depth on untrusted feeds, apply a BodyLimit layer
upstream — the streaming reader is bounded-memory per item but does
not cap the total document size on its own.
pub async fn from_body_strict(body: Body) -> Result<Feed, FeedParseError>
pub async fn from_body_strict(body: Body) -> Result<Feed, FeedParseError>
Strict variant of Self::from_body. Collapses the
super::FeedCollectError from the underlying FeedStream::collect
into just its FeedParseError; if you need the partial feed on a
mid-stream error, drain a FeedStream yourself.
pub fn title(&self) -> &str
pub fn title(&self) -> &str
Feed title (Atom requires; RSS technically requires too — empty if a malformed feed lacks it).
pub fn description(&self) -> Option<&str>
pub fn description(&self) -> Option<&str>
RSS <description> (required) | Atom <subtitle> (optional).
pub fn link(&self) -> Option<&str>
pub fn link(&self) -> Option<&str>
Human-readable home URL of the feed. RSS <link> | Atom
<link rel="alternate"> (or first link without rel, since Atom
defaults rel to "alternate").
pub fn self_link(&self) -> Option<&str>
pub fn self_link(&self) -> Option<&str>
Canonical URL of the feed document itself. RSS
<atom:link rel="self"> | Atom <link rel="self">.
pub fn language(&self) -> Option<&str>
pub fn language(&self) -> Option<&str>
RSS <language> | Atom currently None (xml:lang on the root isn’t
captured yet).
pub fn generator(&self) -> Option<&str>
pub fn generator(&self) -> Option<&str>
Generator string. RSS <generator> | Atom <generator> value (the
uri/version attributes are dropped — use the per-format type to keep
them).
pub fn published(&self) -> Option<Timestamp>
pub fn published(&self) -> Option<Timestamp>
RSS <pubDate> | Atom has no feed-level “first published” — None.
Feed-level authors. RSS yields [managingEditor, webMaster] (filtered,
in declaration order). Atom yields the <author> Person list (names).
pub fn categories(&self) -> impl Iterator<Item = &str>
pub fn categories(&self) -> impl Iterator<Item = &str>
Feed-level category names (RSS <category> names / Atom <category>
terms).
Trait Implementations§
§impl IntoResponse for Feed
impl IntoResponse for Feed
§fn into_response(self) -> Response
fn into_response(self) -> Response
impl StructuralPartialEq for Feed
Auto Trait Implementations§
impl Freeze for Feed
impl RefUnwindSafe for Feed
impl Send for Feed
impl Sync for Feed
impl Unpin for Feed
impl UnsafeUnpin for Feed
impl UnwindSafe for Feed
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<O> IntoEndpointService<Response> for O
impl<O> IntoEndpointService<Response> for O
type Service = StaticOutput<O>
§fn into_endpoint_service(self) -> <O as IntoEndpointService<Response>>::Service
fn into_endpoint_service(self) -> <O as IntoEndpointService<Response>>::Service
rama_core::Service.§impl<O, State> IntoEndpointServiceWithState<Response, State> for O
impl<O, State> IntoEndpointServiceWithState<Response, State> for O
type Service = StaticOutput<O>
§fn into_endpoint_service_with_state(
self,
_state: State,
) -> <O as IntoEndpointServiceWithState<Response, State>>::Service
fn into_endpoint_service_with_state( self, _state: State, ) -> <O as IntoEndpointServiceWithState<Response, State>>::Service
rama_core::Service with state.§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<V, F> ValueFormatter<&V> for F
impl<V, F> ValueFormatter<&V> for F
§fn format_value(writer: impl ValueWriter, value: &&V)
fn format_value(writer: impl ValueWriter, value: &&V)
value to writer§impl<V, F> ValueFormatter<Arc<V>> for F
impl<V, F> ValueFormatter<Arc<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Arc<V>)
fn format_value(writer: impl ValueWriter, value: &Arc<V>)
value to writer§impl<V, F> ValueFormatter<Box<V>> for F
impl<V, F> ValueFormatter<Box<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Box<V>)
fn format_value(writer: impl ValueWriter, value: &Box<V>)
value to writer§impl<V, F> ValueFormatter<Cow<'_, V>> for F
impl<V, F> ValueFormatter<Cow<'_, V>> for F
§fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
value to writer§impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
§fn format_value(writer: impl ValueWriter, value: &Option<V>)
fn format_value(writer: impl ValueWriter, value: &Option<V>)
value to writer