More notifications
This commit is contained in:
1 parent
f113d2b3d7
commit
3fcfe95720
4 files changed
+43
-32
No files matched your search
@@ -4,14 +4,16 @@ use reqwest::Error;
|
||||
use tokio::fs::{File, OpenOptions};
|
||||
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
||||
use zstd::{DEFAULT_COMPRESSION_LEVEL, Decoder, Encoder};
|
||||
use crate::notification::NotificationData;
|
||||
use crate::notification::NotificationData::{PermissionDenied, WebApiUnavailable};
|
||||
|
||||
// const API_URL: &str = "http://127.0.0.1:8089/";
|
||||
const API_URL: &str = "https://learning.micialware.ru/";
|
||||
|
||||
pub async fn send_data(id: String) -> Result<(), ()> {
|
||||
pub async fn send_data(id: String) -> Result<(), NotificationData> {
|
||||
let path = app_data_dir();
|
||||
let db_file = path.join("data.db");
|
||||
let data = tokio::fs::read(db_file).await.map_err(|_| ())?;
|
||||
let data = tokio::fs::read(db_file).await.map_err(|_| WebApiUnavailable)?;
|
||||
let data = compress(data);
|
||||
|
||||
let api_url = API_URL.to_string();
|
||||
@@ -22,10 +24,10 @@ pub async fn send_data(id: String) -> Result<(), ()> {
|
||||
.post(&id_url)
|
||||
.body(data)
|
||||
.send()
|
||||
.await.map_err(|_| ())?
|
||||
.await.map_err(|_| WebApiUnavailable)?
|
||||
.text()
|
||||
.await.map_err(|_| ())?;
|
||||
set_local_version(new_version.parse::<u32>().unwrap()).await;
|
||||
.await.map_err(|_| WebApiUnavailable)?;
|
||||
set_local_version(new_version.parse::<u32>().unwrap_or_default()).await;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -35,16 +37,16 @@ fn compress(data: Vec<u8>) -> Vec<u8> {
|
||||
encoder.finish().unwrap()
|
||||
}
|
||||
|
||||
pub async fn load_data(id: String, temp: bool) -> Result<(), Error> {
|
||||
pub async fn load_data(id: String, temp: bool) -> Result<(), NotificationData> {
|
||||
let api_url = API_URL.to_string();
|
||||
let id_url = format!("{api_url}download/{id}");
|
||||
let client = reqwest::Client::new();
|
||||
let data = client
|
||||
.get(&id_url)
|
||||
.send()
|
||||
.await?
|
||||
.await.map_err(|_| WebApiUnavailable)?
|
||||
.bytes()
|
||||
.await?
|
||||
.await.map_err(|_| WebApiUnavailable)?
|
||||
.to_vec();
|
||||
let data = decompress(data);
|
||||
|
||||
@@ -52,15 +54,15 @@ pub async fn load_data(id: String, temp: bool) -> Result<(), Error> {
|
||||
let file_name = if temp { "data.db.tmp" } else { "data.db" };
|
||||
let db_file = path.join(file_name);
|
||||
|
||||
tokio::fs::write(db_file, data).await.unwrap();
|
||||
tokio::fs::write(db_file, data).await.map_err(|_| PermissionDenied)?;
|
||||
|
||||
let version_url = format!("{API_URL}{id}/version");
|
||||
let version = client
|
||||
.get(&version_url)
|
||||
.send()
|
||||
.await?
|
||||
.await.map_err(|_| WebApiUnavailable)?
|
||||
.text()
|
||||
.await?;
|
||||
.await.map_err(|_| WebApiUnavailable)?;
|
||||
set_local_version(version.parse::<u32>().unwrap_or_default()).await;
|
||||
Ok(())
|
||||
}
|
||||
@@ -75,7 +77,7 @@ pub fn decompress(data: Vec<u8>) -> Vec<u8> {
|
||||
decompressed
|
||||
}
|
||||
|
||||
pub async fn first_sync() -> Result<String, ()> {
|
||||
pub async fn first_sync() -> Result<String, NotificationData> {
|
||||
let id_url = API_URL.to_string() + "generate";
|
||||
|
||||
let client = reqwest::Client::new();
|
||||
@@ -83,18 +85,18 @@ pub async fn first_sync() -> Result<String, ()> {
|
||||
.get(&id_url)
|
||||
.send()
|
||||
.await
|
||||
.map_err(|_| ())?
|
||||
.map_err(|_| WebApiUnavailable)?
|
||||
.text()
|
||||
.await
|
||||
.map_err(|_| ())?;
|
||||
.map_err(|_| WebApiUnavailable)?;
|
||||
println!("id: {}", id);
|
||||
Ok(id)
|
||||
}
|
||||
|
||||
pub async fn get_web_version(key: &str) -> Result<u32, reqwest::Error> {
|
||||
pub async fn get_web_version(key: &str) -> Result<u32, NotificationData> {
|
||||
let id_url = format!("{API_URL}{key}/version");
|
||||
let client = reqwest::Client::new();
|
||||
let version = client.get(&id_url).send().await?.text().await?;
|
||||
let version = client.get(&id_url).send().await.map_err(|_| WebApiUnavailable)?.text().await.map_err(|_| WebApiUnavailable)?;
|
||||
println!("version: {}", version);
|
||||
Ok(version.parse::<u32>().unwrap_or_default())
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user