[−][src]Struct pbd::dtc::Tracker
Represents a Tacker (a.k.a. MarkerChain)
Methods
impl Tracker
[src]
pub fn new(dat_id: String) -> Tracker
[src]
Constructs a Tracker (a.k.a. MarkerChain)
Arguments
- dat_id: String - The unique identifier of the the data being tracked.
#Example
extern crate pbd; use pbd::dtc::Tracker; fn main() { let tracker = Tracker::new("order~clothing~iStore~15150".to_string()); // The genesis Marker is automaically created for you assert_eq!(tracker.len(), 1); }
pub fn add(&mut self, tmstp: u64, act_id: String, dat_id: String)
[src]
Appends a new Marker to the end of the Marker Chain. The index of the Marker and hash from the previous Marker are automatically defined when added.
Arguments
- tmstp: String - The date and time (Unix timestamp) the data came into posession of the Actor.
- act_id: String - The unique identifier of the Actor touching the data.
- dat_id: String - The unique identifier of the data being tracked.
#Example
extern crate pbd; use pbd::dtc::Tracker; fn main() { let mut tracker = Tracker::new("order~clothing~iStore~15150".to_string()); tracker.add(1578071239, "notifier~billing~receipt~email".to_string(), "order~clothing~iStore~15150".to_string()); println!("There are {} items in the Marker Chain.", tracker.len()); }
pub fn from_serialized(serialized: &str) -> Result<Tracker, Error>
[src]
Constructs a Tracker (a.k.a. MarkerChain) from a serialized chain
Arguments
- serialized: &str - The serialized Vec of Markers.
#Example
extern crate pbd; use pbd::dtc::Tracker; fn main() { let tracker = Tracker::from_serialized(r#"[{"identifier":{"data_id":"order~clothing~iStore~15150","index":0,"timestamp":0,"actor_id":""},"hash":"185528985830230566760236203228589250556","previous_hash":"0","nonce":5},{"identifier":{"data_id":"order~clothing~iStore~15150","index":1,"timestamp":1578071239,"actor_id":"notifier~billing~receipt~email"},"hash":"291471950171806362795097431348191551247","previous_hash":"185528985830230566760236203228589250556","nonce":5}]"#); // unwrap() to get the Tracker is Result is Ok assert!(tracker.is_ok()); }
pub fn get(&self, index: usize) -> Option<Marker>
[src]
Returns the Marker from the Marker Chain at the specified index.
Arguments
- index: usize - The index of the Marker.
#Example
extern crate pbd; use pbd::dtc::Tracker; fn main() { let mut tracker = Tracker::new("order~clothing~iStore~15150".to_string()); let marker = tracker.get(0).unwrap(); println!("{}", marker.identifier.data_id); }
pub fn is_valid(&self) -> bool
[src]
Determines if the Tracker has a valid Marker Chain, (a.k.a. not been tampered with).
#Example
extern crate pbd; use pbd::dtc::Tracker; fn main() { let mut mkrchn = Tracker::new("order~clothing~iStore~15150".to_string()); mkrchn.add(1578071239, "notifier~billing~receipt~email".to_string(), "order~clothing~iStore~15150".to_string()); assert!(Tracker::is_valid(&mkrchn)); }
pub fn len(&self) -> usize
[src]
Returns the length of the Tracker's Marker Chain.
#Example
extern crate pbd; use pbd::dtc::Tracker; fn main() { let mut tracker = Tracker::new("order~clothing~iStore~15150".to_string()); tracker.add(1578071239, "notifier~billing~receipt~email".to_string(), "order~clothing~iStore~15150".to_string()); // The Tracker has two Markers: the genesis Marker when new() was called, and the one that was added assert_eq!(tracker.len(), 2); }
pub fn serialize(&self) -> String
[src]
Serializes the Tracker's Marker Chain.
#Example
extern crate pbd; use pbd::dtc::Tracker; fn main() { let mut tracker = Tracker::new("order~clothing~iStore~15150".to_string()); tracker.add(1578071239, "notifier~billing~receipt~email".to_string(), "order~clothing~iStore~15150".to_string()); println!("{}", tracker.serialize()); }
Trait Implementations
impl Clone for Tracker
[src]
impl Debug for Tracker
[src]
impl<'de> Deserialize<'de> for Tracker
[src]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
impl Display for Tracker
[src]
impl FromRequest for Tracker
[src]
type Config = ()
Configuration for this extractor
type Future = Result<Self, Self::Error>
Future that resolves to a Self
type Error = LocalError
The associated error which can be returned.
fn from_request(req: &HttpRequest, _payload: &mut Payload) -> Self::Future
[src]
fn extract(req: &HttpRequest) -> Self::Future
[src]
fn configure<F>(f: F) -> Self::Config where
F: FnOnce(Self::Config) -> Self::Config,
[src]
F: FnOnce(Self::Config) -> Self::Config,
impl Serialize for Tracker
[src]
fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where
__S: Serializer,
[src]
__S: Serializer,
impl TrackerHeader for Tracker
[src]
fn tracker_from_header_value(
header_value: &HeaderValue
) -> Result<Tracker, Error>
[src]
header_value: &HeaderValue
) -> Result<Tracker, Error>
Constructs a Tracker from the http header that contains the serialized value of the MarkerChain
#Example
extern crate pbd; extern crate actix_web; use pbd::dtc::Tracker; use pbd::dtc::extractor::actix::TrackerHeader; use actix_web::http::header::HeaderValue; fn main() { // NOTE: The header value must be Base64 encoded let header_value = HeaderValue::from_static("W3siaWRlbnRpZmllciI6eyJkYXRhX2lkIjoib3JkZXJ+Y2xvdGhpbmd+aVN0b3JlfjE1MTUwIiwiaW5kZXgiOjAsInRpbWVzdGFtcCI6MCwiYWN0b3JfaWQiOiIifSwiaGFzaCI6IjE4NTUyODk4NTgzMDIzMDU2Njc2MDIzNjIwMzIyODU4OTI1MDU1NiIsInByZXZpb3VzX2hhc2giOiIwIiwibm9uY2UiOjV9XQ=="); let tracker = Tracker::tracker_from_header_value(&header_value); assert!(tracker.is_ok()); }
Auto Trait Implementations
impl RefUnwindSafe for Tracker
impl Send for Tracker
impl Sync for Tracker
impl Unpin for Tracker
impl UnwindSafe for Tracker
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> DeserializeOwned for T where
T: Deserialize<'de>,
[src]
T: Deserialize<'de>,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
U: TryFrom<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,