Struct etebase::Account

source ·
pub struct Account { /* private fields */ }
Expand description

The main object for all user interactions and data manipulation, representing an authenticated user account.

Implementations§

source§

impl Account

source

pub fn is_etebase_server(client: &Client) -> Result<bool>

👎Deprecated: Use Client::is_server_valid instead

Check whether the Client is pointing to a valid Etebase server

Arguments:
  • client - the already setup Client object
source

pub fn signup(client: Client, user: &User, password: &str) -> Result<Self>

Creates a new user on the server and returns a handle to it. The user is authenticated using the given password.

source

pub fn signup_key(client: Client, user: &User, main_key: &[u8]) -> Result<Self>

Creates a new user on the server and returns a handle to it. The user is authenticated using a cryptographically secure random 32-byte main_key instead of a password.

source

pub fn login(client: Client, username: &str, password: &str) -> Result<Self>

Authenticates a user using their password and returns an Account handle on success.

Examples found in repository?
examples/etebase_test.rs (line 35)
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
fn main() -> Result<()> {
    let args: Vec<String> = env::args().collect();

    if args.len() < 4 {
        println!("Help: ./etebase_test USERNAME PASSWORD SERVER_URL [COLLECTION_UID]");
        std::process::exit(1);
    }

    let username = &args[1];
    let password = &args[2];
    let server_url = &args[3];

    let client = Client::new(CLIENT_NAME, server_url)?;
    let etebase = Account::login(client, username, password)?;
    let col_mgr = etebase.collection_manager()?;
    if args.len() >= 5 {
        let col_uid = &args[4];
        let col = col_mgr.fetch(col_uid, None)?;
        let it_mgr = col_mgr.item_manager(&col)?;
        let items = it_mgr.list(None)?;

        print_collection(&col);
        for item in items.data() {
            print_item(item);
        }
    } else {
        let collections = col_mgr.list("some.coltype", None)?;
        for col in collections.data() {
            print_collection(col);
        }
    }

    etebase.logout()?;

    Ok(())
}
source

pub fn login_key( client: Client, username: &str, main_key: &[u8] ) -> Result<Self>

Authenticates a user using the same main_key as was provided to signup_key and returns an Account handle on success.

source

pub fn fetch_token(&mut self) -> Result<()>

Fetch a new auth token for the account and update the Account object with it

source

pub fn force_server_url(&mut self, api_base: &str) -> Result<()>

Change the server URL for this account handle

See also Client::set_server_url.

source

pub fn change_password(&mut self, new_password: &str) -> Result<()>

Change the user’s login password. If the account currently uses key-based login, the key is invalidated and subsequent logins have to use the password.

source

pub fn fetch_dashboard_url(&self) -> Result<String>

Fetch the link to the user dashboard of the account

source

pub fn logout(&self) -> Result<()>

Logout the user from the current session and invalidate the authentication token

Examples found in repository?
examples/etebase_test.rs (line 54)
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
fn main() -> Result<()> {
    let args: Vec<String> = env::args().collect();

    if args.len() < 4 {
        println!("Help: ./etebase_test USERNAME PASSWORD SERVER_URL [COLLECTION_UID]");
        std::process::exit(1);
    }

    let username = &args[1];
    let password = &args[2];
    let server_url = &args[3];

    let client = Client::new(CLIENT_NAME, server_url)?;
    let etebase = Account::login(client, username, password)?;
    let col_mgr = etebase.collection_manager()?;
    if args.len() >= 5 {
        let col_uid = &args[4];
        let col = col_mgr.fetch(col_uid, None)?;
        let it_mgr = col_mgr.item_manager(&col)?;
        let items = it_mgr.list(None)?;

        print_collection(&col);
        for item in items.data() {
            print_item(item);
        }
    } else {
        let collections = col_mgr.list("some.coltype", None)?;
        for col in collections.data() {
            print_collection(col);
        }
    }

    etebase.logout()?;

    Ok(())
}
source

pub fn save(&self, encryption_key: Option<&[u8]>) -> Result<String>

Serializes the account object to a string for restoring it later using restore.

The data should be encrypted using a 32-byte encryption_key for added security.

source

pub fn restore( client: Client, account_data_stored: &str, encryption_key: Option<&[u8]> ) -> Result<Self>

Deserialize and return the Account object from the string obtained using save.

Arguments:
  • client - the already setup Client object
  • account_data_stored - the stored account string
  • encryption_key - the same encryption key passed to save while saving the account
source

pub fn collection_manager(&self) -> Result<CollectionManager>

Return a CollectionManager for creating, fetching and uploading collections

Examples found in repository?
examples/etebase_test.rs (line 36)
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
fn main() -> Result<()> {
    let args: Vec<String> = env::args().collect();

    if args.len() < 4 {
        println!("Help: ./etebase_test USERNAME PASSWORD SERVER_URL [COLLECTION_UID]");
        std::process::exit(1);
    }

    let username = &args[1];
    let password = &args[2];
    let server_url = &args[3];

    let client = Client::new(CLIENT_NAME, server_url)?;
    let etebase = Account::login(client, username, password)?;
    let col_mgr = etebase.collection_manager()?;
    if args.len() >= 5 {
        let col_uid = &args[4];
        let col = col_mgr.fetch(col_uid, None)?;
        let it_mgr = col_mgr.item_manager(&col)?;
        let items = it_mgr.list(None)?;

        print_collection(&col);
        for item in items.data() {
            print_item(item);
        }
    } else {
        let collections = col_mgr.list("some.coltype", None)?;
        for col in collections.data() {
            print_collection(col);
        }
    }

    etebase.logout()?;

    Ok(())
}
source

pub fn invitation_manager(&self) -> Result<CollectionInvitationManager>

Return a CollectionInvitationManager for managing collection invitations

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more