msg -> entry, add auth check to get functions

This commit is contained in:
DieMyst 2021-01-14 19:23:36 +03:00
parent e225a7818d
commit 641e4da281
8 changed files with 65 additions and 56 deletions

View File

@ -26,9 +26,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]] [[package]]
name = "fluence" name = "fluence"
version = "0.2.16" version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e65d9ffa281a0e9328fa6eb2468b8235a197013b9b5032aa9c2d2c0d54f99442" checksum = "27d9a5e4292d7bbd809a0e968e3c3aacac91cbc5acab3e26ee1e1d726f0aab24"
dependencies = [ dependencies = [
"fluence-sdk-macro", "fluence-sdk-macro",
"fluence-sdk-main", "fluence-sdk-main",
@ -36,18 +36,18 @@ dependencies = [
[[package]] [[package]]
name = "fluence-sdk-macro" name = "fluence-sdk-macro"
version = "0.2.16" version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e5402cf99199b025bd41f52b4e77c58f6b76a8c34ae33a2c3612f024af28d32" checksum = "ea1a7c75a617f827d1ba9a17b4d84e1565ab239915c63f5a85c41f89a9f1d4ba"
dependencies = [ dependencies = [
"fluence-sdk-wit", "fluence-sdk-wit",
] ]
[[package]] [[package]]
name = "fluence-sdk-main" name = "fluence-sdk-main"
version = "0.2.16" version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "584cc07494112ad39d04fc8c0f6fb687f6c03c4908c7739c46c79ae112df083d" checksum = "6edcc983f9517c1b6bf9f851ef27f2894a3159aaa4a2fb6c9deb2ae8ecb603fa"
dependencies = [ dependencies = [
"fluence-sdk-macro", "fluence-sdk-macro",
"log", "log",
@ -56,9 +56,9 @@ dependencies = [
[[package]] [[package]]
name = "fluence-sdk-wit" name = "fluence-sdk-wit"
version = "0.2.16" version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91c6e8b4da4bb732a744fd625de39e5f9faaf41d3919c8391a11d8528dad22e5" checksum = "b75dbdd0275160f3818db3218563d791e6c612b616cd3c5d6e66283f207f648d"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",

View File

@ -18,7 +18,7 @@ use fluence::fce;
#[fce] #[fce]
#[derive(Clone, Debug, Default, Eq, PartialEq, Hash)] #[derive(Clone, Debug, Default, Eq, PartialEq, Hash)]
pub struct Message { pub struct Entry {
pub id: u64, pub id: u64,
pub body: String, pub body: String,
} }

View File

@ -14,10 +14,10 @@
* limitations under the License. * limitations under the License.
*/ */
use crate::message::Message; use crate::entry::Entry;
use crate::Result; use crate::Result;
use crate::results::{AddServiceResult, EmptyResult, GetMessagesServiceResult}; use crate::results::{AddServiceResult, EmptyResult, GetEntriesServiceResult};
use std::convert::From; use std::convert::From;
use std::error::Error; use std::error::Error;
@ -57,15 +57,15 @@ fn to_error_core(err: &HistoryError) -> i32 {
impl From<Result<u64>> for AddServiceResult { impl From<Result<u64>> for AddServiceResult {
fn from(result: Result<u64>) -> Self { fn from(result: Result<u64>) -> Self {
match result { match result {
Ok(msg_id) => Self { Ok(entry_id) => Self {
ret_code: crate::service_api::SUCCESS_CODE, ret_code: crate::service_api::SUCCESS_CODE,
err_msg: String::new(), err_msg: String::new(),
msg_id: msg_id, entry_id,
}, },
Err(err) => Self { Err(err) => Self {
ret_code: to_error_core(&err), ret_code: to_error_core(&err),
err_msg: format!("{}", err), err_msg: format!("{}", err),
msg_id: u64::max_value(), entry_id: u64::max_value(),
}, },
} }
} }
@ -86,18 +86,18 @@ impl From<Result<()>> for EmptyResult {
} }
} }
impl From<Result<Vec<Message>>> for GetMessagesServiceResult { impl From<Result<Vec<Entry>>> for GetEntriesServiceResult {
fn from(result: Result<Vec<Message>>) -> Self { fn from(result: Result<Vec<Entry>>) -> Self {
match result { match result {
Ok(messages) => Self { Ok(entries) => Self {
ret_code: crate::service_api::SUCCESS_CODE, ret_code: crate::service_api::SUCCESS_CODE,
err_msg: String::new(), err_msg: String::new(),
messages, entries,
}, },
Err(err) => Self { Err(err) => Self {
ret_code: to_error_core(&err), ret_code: to_error_core(&err),
err_msg: format!("{}", err), err_msg: format!("{}", err),
messages: vec![], entries: vec![],
}, },
} }
} }

View File

@ -15,7 +15,7 @@
*/ */
mod errors; mod errors;
mod message; mod entry;
mod results; mod results;
mod service_api; mod service_api;
mod storage_api; mod storage_api;

View File

@ -14,21 +14,21 @@
* limitations under the License. * limitations under the License.
*/ */
use crate::message::Message; use crate::entry::Entry;
use fluence::fce; use fluence::fce;
#[fce] #[fce]
pub struct AddServiceResult { pub struct AddServiceResult {
pub ret_code: i32, pub ret_code: i32,
pub err_msg: String, pub err_msg: String,
pub msg_id: u64, pub entry_id: u64,
} }
#[fce] #[fce]
pub struct GetMessagesServiceResult { pub struct GetEntriesServiceResult {
pub ret_code: i32, pub ret_code: i32,
pub err_msg: String, pub err_msg: String,
pub messages: Vec<Message>, pub entries: Vec<Entry>,
} }
#[fce] #[fce]

View File

@ -16,34 +16,43 @@
use crate::storage_api::*; use crate::storage_api::*;
use crate::results::{AddServiceResult, EmptyResult, GetMessagesServiceResult}; use crate::results::{AddServiceResult, EmptyResult, GetEntriesServiceResult};
use crate::utils::u64_to_usize; use crate::utils::u64_to_usize;
use crate::Result; use crate::Result;
use fluence::{fce, CallParameters, SecurityTetraplet}; use fluence::{fce, CallParameters, SecurityTetraplet};
use crate::entry::Entry;
pub const SUCCESS_CODE: i32 = 0; pub const SUCCESS_CODE: i32 = 0;
// add a message if authenticated, return an error if not // add an entry if authenticated, return an error if not
#[fce] #[fce]
fn add(msg: String, auth: bool) -> AddServiceResult { fn add(entry: String, auth: bool) -> AddServiceResult {
fn add_impl(msg: String, auth: bool) -> Result<u64> { fn add_impl(entry: String, auth: bool) -> Result<u64> {
is_authenticated(auth, 1)?; is_authenticated(auth, 1)?;
add_message(msg) add_entry(entry)
} }
add_impl(msg, auth).into() add_impl(entry, auth).into()
} }
// get all messages // get all entries
#[fce] #[fce]
fn get_all() -> GetMessagesServiceResult { fn get_all(auth: bool) -> GetEntriesServiceResult {
get_all_messages().into() fn get_all_impl(auth: bool) -> Result<Vec<Entry>> {
is_authenticated(auth, 0)?;
get_all_entries()
}
get_all_impl(auth).into()
} }
// get last message // get last entry
#[fce] #[fce]
fn get_last(last: u64) -> GetMessagesServiceResult { fn get_last(last: u64, auth: bool) -> GetEntriesServiceResult {
get_messages_with_limit(last).into() fn get_last_impl(last: u64, auth: bool) -> Result<Vec<Entry>> {
is_authenticated(auth, 1)?;
get_entries_with_limit(last)
}
get_last_impl(last, auth).into()
} }
// set tetraplet to check on the authentication process. Only the service owner could set it // set tetraplet to check on the authentication process. Only the service owner could set it

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
use crate::message::Message; use crate::entry::Entry;
use crate::Result; use crate::Result;
use crate::utils::{u64_to_usize, usize_to_u64}; use crate::utils::{u64_to_usize, usize_to_u64};
@ -31,7 +31,7 @@ pub struct Tetraplet {
#[derive(Clone, Debug, Default, Eq, PartialEq)] #[derive(Clone, Debug, Default, Eq, PartialEq)]
pub struct Data { pub struct Data {
messages: Vec<Message>, entries: Vec<Entry>,
tetraplet: Option<Tetraplet>, tetraplet: Option<Tetraplet>,
} }
@ -45,36 +45,36 @@ fn get_data() -> &'static Mutex<Data> {
INSTANCE.get_or_init(|| <_>::default()) INSTANCE.get_or_init(|| <_>::default())
} }
pub fn add_message(msg: String) -> Result<u64> { pub fn add_entry(entry: String) -> Result<u64> {
let mut data = get_data().lock(); let mut data = get_data().lock();
let id = usize_to_u64(data.messages.len())?; let id = usize_to_u64(data.entries.len())?;
data.messages.push(Message { id, body: msg }); data.entries.push(Entry { id, body: entry });
return Ok(id); return Ok(id);
} }
pub fn get_messages_with_limit(limit: u64) -> Result<Vec<Message>> { pub fn get_entries_with_limit(limit: u64) -> Result<Vec<Entry>> {
let data = get_data().lock(); let data = get_data().lock();
let limit = u64_to_usize(limit)?; let limit = u64_to_usize(limit)?;
let msgs: Vec<Message> = data let entries: Vec<Entry> = data
.messages .entries
.to_vec() .to_vec()
.iter() .iter()
.rev() .rev()
.take(limit) .take(limit)
.map(|msg| msg.clone()) .map(|entry| entry.clone())
.collect(); .collect();
Ok(msgs) Ok(entries)
} }
pub fn get_all_messages() -> Result<Vec<Message>> { pub fn get_all_entries() -> Result<Vec<Entry>> {
let data = get_data().lock(); let data = get_data().lock();
Ok(data.messages.to_vec()) Ok(data.entries.to_vec())
} }
pub fn store_tetraplet(peer_id: String, service_id: String, fn_name: String, path: String) { pub fn store_tetraplet(peer_id: String, service_id: String, fn_name: String, path: String) {

View File

@ -26,9 +26,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]] [[package]]
name = "fluence" name = "fluence"
version = "0.2.16" version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e65d9ffa281a0e9328fa6eb2468b8235a197013b9b5032aa9c2d2c0d54f99442" checksum = "27d9a5e4292d7bbd809a0e968e3c3aacac91cbc5acab3e26ee1e1d726f0aab24"
dependencies = [ dependencies = [
"fluence-sdk-macro", "fluence-sdk-macro",
"fluence-sdk-main", "fluence-sdk-main",
@ -36,18 +36,18 @@ dependencies = [
[[package]] [[package]]
name = "fluence-sdk-macro" name = "fluence-sdk-macro"
version = "0.2.16" version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e5402cf99199b025bd41f52b4e77c58f6b76a8c34ae33a2c3612f024af28d32" checksum = "ea1a7c75a617f827d1ba9a17b4d84e1565ab239915c63f5a85c41f89a9f1d4ba"
dependencies = [ dependencies = [
"fluence-sdk-wit", "fluence-sdk-wit",
] ]
[[package]] [[package]]
name = "fluence-sdk-main" name = "fluence-sdk-main"
version = "0.2.16" version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "584cc07494112ad39d04fc8c0f6fb687f6c03c4908c7739c46c79ae112df083d" checksum = "6edcc983f9517c1b6bf9f851ef27f2894a3159aaa4a2fb6c9deb2ae8ecb603fa"
dependencies = [ dependencies = [
"fluence-sdk-macro", "fluence-sdk-macro",
"log", "log",
@ -56,9 +56,9 @@ dependencies = [
[[package]] [[package]]
name = "fluence-sdk-wit" name = "fluence-sdk-wit"
version = "0.2.16" version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91c6e8b4da4bb732a744fd625de39e5f9faaf41d3919c8391a11d8528dad22e5" checksum = "b75dbdd0275160f3818db3218563d791e6c612b616cd3c5d6e66283f207f648d"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",