MCPcopy Create free account
hub / github.com/ceramicnetwork/rust-ceramic / post_interests

Method post_interests

api/src/server.rs:748–783  ·  view source on GitHub ↗
(
        &self,
        interest: models::Interest,
    )

Source from the content-addressed store, hash-verified

746 }
747
748 pub async fn post_interests(
749 &self,
750 interest: models::Interest,
751 ) -> Result<InterestsPostResponse, ErrorResponse> {
752 let interest = match ValidatedInterest::try_from(interest) {
753 Ok(v) => v,
754 Err(e) => {
755 return Ok(InterestsPostResponse::BadRequest(
756 models::BadRequestResponse::new(e),
757 ))
758 }
759 };
760 let sep_value = match decode_multibase_data(&interest.sep_value) {
761 Ok(v) => v,
762 Err(e) => return Ok(InterestsPostResponse::BadRequest(e)),
763 };
764 // Construct start and stop event id based on provided data.
765 let (start, stop) = self.build_start_stop_range(
766 &interest.sep,
767 &sep_value,
768 interest.controller,
769 interest.stream_id,
770 )?;
771 // Update interest ranges to include this new subscription.
772 let interest = Interest::builder()
773 .with_sep_key(&interest.sep)
774 .with_peer_id(&self.node_id.peer_id())
775 .with_range((start.as_slice(), stop.as_slice()))
776 .with_not_after(0)
777 .build();
778 self.interest
779 .insert(interest)
780 .await
781 .map_err(|err| ErrorResponse::new(format!("failed to update interest: {err}")))?;
782 Ok(InterestsPostResponse::Success)
783 }
784
785 /// Gets the event data by id. First interprets the event id as the root CID of the event,
786 /// but falls back to interpreting it as an EventID. Using EventID is only meant for internal

Callers 2

interests_postMethod · 0.80

Calls 11

newFunction · 0.85
decode_multibase_dataFunction · 0.85
with_not_afterMethod · 0.80
with_rangeMethod · 0.80
with_peer_idMethod · 0.80
with_sep_keyMethod · 0.80
buildMethod · 0.45
peer_idMethod · 0.45
as_sliceMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected