miniflux-discord/src/miniflux_requests.rs

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,
}