67 lines
1.3 KiB
Rust
67 lines
1.3 KiB
Rust
use chrono::{DateTime, Utc};
|
|
use serde::Deserialize;
|
|
|
|
type UserId = u8;
|
|
|
|
#[derive(Deserialize, Debug)]
|
|
#[serde(tag = "event_type")]
|
|
pub enum MinifluxEvent {
|
|
#[serde(rename = "new_entries")]
|
|
New(NewEntries),
|
|
#[serde(rename = "save_entry")]
|
|
Save(SaveEntry),
|
|
}
|
|
|
|
#[derive(Deserialize, Debug)]
|
|
pub struct NewEntries {
|
|
pub feed: Feed,
|
|
pub entries: Vec<Entry>,
|
|
}
|
|
|
|
#[derive(Deserialize, Debug)]
|
|
pub struct SaveEntry {
|
|
pub entry: Entry,
|
|
pub tags: Vec<String>,
|
|
pub feed: Feed,
|
|
}
|
|
|
|
#[derive(Deserialize, Debug)]
|
|
pub struct Feed {
|
|
pub id: u32,
|
|
pub user_id: UserId,
|
|
pub feed_url: String,
|
|
pub site_url: String,
|
|
pub title: String,
|
|
pub checked_at: DateTime<Utc>,
|
|
}
|
|
|
|
#[derive(Deserialize, Debug)]
|
|
pub struct Entry {
|
|
pub id: u32,
|
|
pub user_id: UserId,
|
|
pub feed_id: u32,
|
|
pub hash: String,
|
|
pub title: String,
|
|
pub url: String,
|
|
pub comments_url: String,
|
|
pub published_at: DateTime<Utc>,
|
|
pub created_at: DateTime<Utc>,
|
|
pub content: String,
|
|
pub share_code: String,
|
|
pub starred: bool,
|
|
pub reading_time: u16,
|
|
pub enclosures: Vec<Enclosure>,
|
|
pub tags: Vec<String>,
|
|
}
|
|
|
|
#[derive(Deserialize, Debug)]
|
|
pub struct Enclosure {
|
|
pub id: u32,
|
|
pub user_id: UserId,
|
|
pub entry_id: u32,
|
|
pub url: String,
|
|
pub mime_type: String,
|
|
pub size: u32,
|
|
pub media_progression: u32,
|
|
}
|