|
|
|
@ -7,7 +7,7 @@ use rocket_contrib::json::Json;
|
|
|
|
|
use serde_json::Value;
|
|
|
|
|
|
|
|
|
|
use crate::{
|
|
|
|
|
api::{ApiResult, EmptyResult, JsonResult, JsonUpcase, Notify, UpdateType},
|
|
|
|
|
api::{ApiResult, EmptyResult, JsonResult, JsonUpcase, Notify, NumberOrString, UpdateType},
|
|
|
|
|
auth::{Headers, Host},
|
|
|
|
|
db::{models::*, DbConn, DbPool},
|
|
|
|
|
util::SafeString,
|
|
|
|
@ -42,21 +42,21 @@ pub fn purge_sends(pool: DbPool) {
|
|
|
|
|
|
|
|
|
|
#[derive(Deserialize)]
|
|
|
|
|
#[allow(non_snake_case)]
|
|
|
|
|
pub struct SendData {
|
|
|
|
|
pub Type: i32,
|
|
|
|
|
pub Key: String,
|
|
|
|
|
pub Password: Option<String>,
|
|
|
|
|
pub MaxAccessCount: Option<i32>,
|
|
|
|
|
pub ExpirationDate: Option<DateTime<Utc>>,
|
|
|
|
|
pub DeletionDate: DateTime<Utc>,
|
|
|
|
|
pub Disabled: bool,
|
|
|
|
|
pub HideEmail: Option<bool>,
|
|
|
|
|
struct SendData {
|
|
|
|
|
Type: i32,
|
|
|
|
|
Key: String,
|
|
|
|
|
Password: Option<String>,
|
|
|
|
|
MaxAccessCount: Option<NumberOrString>,
|
|
|
|
|
ExpirationDate: Option<DateTime<Utc>>,
|
|
|
|
|
DeletionDate: DateTime<Utc>,
|
|
|
|
|
Disabled: bool,
|
|
|
|
|
HideEmail: Option<bool>,
|
|
|
|
|
|
|
|
|
|
// Data field
|
|
|
|
|
pub Name: String,
|
|
|
|
|
pub Notes: Option<String>,
|
|
|
|
|
pub Text: Option<Value>,
|
|
|
|
|
pub File: Option<Value>,
|
|
|
|
|
Name: String,
|
|
|
|
|
Notes: Option<String>,
|
|
|
|
|
Text: Option<Value>,
|
|
|
|
|
File: Option<Value>,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Enforces the `Disable Send` policy. A non-owner/admin user belonging to
|
|
|
|
@ -119,7 +119,10 @@ fn create_send(data: SendData, user_uuid: String) -> ApiResult<Send> {
|
|
|
|
|
let mut send = Send::new(data.Type, data.Name, data_str, data.Key, data.DeletionDate.naive_utc());
|
|
|
|
|
send.user_uuid = Some(user_uuid);
|
|
|
|
|
send.notes = data.Notes;
|
|
|
|
|
send.max_access_count = data.MaxAccessCount;
|
|
|
|
|
send.max_access_count = match data.MaxAccessCount {
|
|
|
|
|
Some(m) => Some(m.into_i32()?),
|
|
|
|
|
_ => None,
|
|
|
|
|
};
|
|
|
|
|
send.expiration_date = data.ExpirationDate.map(|d| d.naive_utc());
|
|
|
|
|
send.disabled = data.Disabled;
|
|
|
|
|
send.hide_email = data.HideEmail;
|
|
|
|
@ -414,7 +417,10 @@ fn put_send(id: String, data: JsonUpcase<SendData>, headers: Headers, conn: DbCo
|
|
|
|
|
send.akey = data.Key;
|
|
|
|
|
send.deletion_date = data.DeletionDate.naive_utc();
|
|
|
|
|
send.notes = data.Notes;
|
|
|
|
|
send.max_access_count = data.MaxAccessCount;
|
|
|
|
|
send.max_access_count = match data.MaxAccessCount {
|
|
|
|
|
Some(m) => Some(m.into_i32()?),
|
|
|
|
|
_ => None,
|
|
|
|
|
};
|
|
|
|
|
send.expiration_date = data.ExpirationDate.map(|d| d.naive_utc());
|
|
|
|
|
send.hide_email = data.HideEmail;
|
|
|
|
|
send.disabled = data.Disabled;
|
|
|
|
|