|
| 1 | +use js_sys::Promise; |
| 2 | +use wasm_bindgen::prelude::*; |
| 3 | +use web_sys::{Headers, ReadableStream}; |
| 4 | + |
| 5 | +#[wasm_bindgen] |
| 6 | +extern "C" { |
| 7 | + #[wasm_bindgen(extends=js_sys::Object)] |
| 8 | + #[derive(Clone, PartialEq, Eq)] |
| 9 | + pub type EmailMessage; |
| 10 | + |
| 11 | + // TODO(lduarte): see if also accepting string is needed |
| 12 | + #[wasm_bindgen(constructor, catch)] |
| 13 | + pub fn new(from: &str, to: &str, raw: &str) -> Result<EmailMessage, JsValue>; |
| 14 | + |
| 15 | + #[wasm_bindgen(method, getter)] |
| 16 | + pub fn from(this: &EmailMessage) -> String; |
| 17 | + |
| 18 | + #[wasm_bindgen(method, getter)] |
| 19 | + pub fn to(this: &EmailMessage) -> String; |
| 20 | +} |
| 21 | + |
| 22 | +#[wasm_bindgen] |
| 23 | +extern "C" { |
| 24 | + #[wasm_bindgen(extends=js_sys::Object)] |
| 25 | + #[derive(Clone, PartialEq, Eq)] |
| 26 | + pub type ForwardableEmailMessage; |
| 27 | + |
| 28 | + #[wasm_bindgen(method, getter)] |
| 29 | + pub fn from(this: &ForwardableEmailMessage) -> String; |
| 30 | + |
| 31 | + #[wasm_bindgen(method, getter)] |
| 32 | + pub fn to(this: &ForwardableEmailMessage) -> String; |
| 33 | + |
| 34 | + #[wasm_bindgen(method, getter)] |
| 35 | + pub fn raw(this: &ForwardableEmailMessage) -> ReadableStream; |
| 36 | + |
| 37 | + // File size will never pass over 4GB so u32 is enough |
| 38 | + #[wasm_bindgen(method, getter, js_name=rawSize)] |
| 39 | + pub fn raw_size(this: &ForwardableEmailMessage) -> u32; |
| 40 | + |
| 41 | + #[wasm_bindgen(method, catch, js_name=setReject)] |
| 42 | + pub fn set_reject(this: &ForwardableEmailMessage, reason: &str) -> Result<(), JsValue>; |
| 43 | + |
| 44 | + #[wasm_bindgen(method, catch)] |
| 45 | + pub fn forward( |
| 46 | + this: &ForwardableEmailMessage, |
| 47 | + rcpt_to: &str, |
| 48 | + headers: Headers, |
| 49 | + ) -> Result<Promise, JsValue>; |
| 50 | + |
| 51 | + #[wasm_bindgen(method, catch)] |
| 52 | + pub fn reply(this: &ForwardableEmailMessage, email: EmailMessage) -> Result<Promise, JsValue>; |
| 53 | +} |
| 54 | + |
| 55 | +#[wasm_bindgen] |
| 56 | +extern "C" { |
| 57 | + #[wasm_bindgen(extends=js_sys::Object)] |
| 58 | + #[derive(Clone, PartialEq, Eq)] |
| 59 | + pub type SendEmail; |
| 60 | + |
| 61 | + #[wasm_bindgen(method, catch)] |
| 62 | + pub fn send(this: &SendEmail, email: EmailMessage) -> Result<Promise, JsValue>; |
| 63 | + |
| 64 | +} |
0 commit comments