Compare commits

...

3 Commits

Author SHA1 Message Date
1d25aeb272 Merge pull request 'feat: summarize rss messages to feishu group' (#1) from develop into main
Reviewed-on: #1
2026-01-13 15:04:21 +08:00
ECSS 11
bfbf9adf53 chore: docker build config 2026-01-13 00:56:25 -06:00
ECSS 11
60cd6097e4 refactor: crate use and mcv 2026-01-13 00:55:51 -06:00
5 changed files with 35 additions and 10 deletions

View File

@@ -1,4 +1,28 @@
FROM ubuntu:latest FROM rust:1.80-slim AS builder
LABEL authors="YE"
ENTRYPOINT ["top", "-b"] # Dummy app
RUN USER=root cargo new --bin app
WORKDIR /app
# Cargo build and src cleaup
COPY ./Cargo.toml ./Cargo.toml
COPY ./Cargo.lock ./Cargo.lock
RUN cargo build --release
RUN rm src/*.rs
# Copy src files
COPY ./src ./src
RUN rm ./target/release/deps/app*
RUN cargo build --release
FROM debian:bookworm-slim
# Install necessary runtime libraries
RUN apt-get update && apt-get install -y libssl-dev ca-certificates && rm -rf /var/lib/apt/lists/*
# Copy the binary from the builder stage
COPY --from=builder /app/target/release/app /usr/local/bin/app
# Set execution permissions and run
CMD ["app"]

View File

@@ -1,8 +1,5 @@
use crate::{config, models}; use crate::{config, models};
use crate::models::feishu::FeishuClient;
pub struct FeishuClient {
pub client: open_lark::prelude::LarkClient,
}
impl FeishuClient { impl FeishuClient {
pub fn new() -> Result<Self, Box<dyn std::error::Error>> { pub fn new() -> Result<Self, Box<dyn std::error::Error>> {

View File

@@ -1,10 +1,10 @@
use crate::api; use crate::api;
use crate::config;
use crate::models; use crate::models;
use std::error::Error; use std::error::Error;
use crate::config::Config;
pub async fn summarize_rss() -> Result<Vec<models::summary::Summary>, Box<dyn Error>> { pub async fn summarize_rss() -> Result<Vec<models::summary::Summary>, Box<dyn Error>> {
let config = config::Config::build()?; let config = Config::build()?;
let mut summary_list: Vec<models::summary::Summary> = Vec::new(); let mut summary_list: Vec<models::summary::Summary> = Vec::new();
let token = &config.token; let token = &config.token;

View File

@@ -6,7 +6,7 @@ mod models;
#[tokio::main] #[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> { async fn main() -> Result<(), Box<dyn std::error::Error>> {
let summary_list = controls::summary::summarize_rss().await?; let summary_list = controls::summary::summarize_rss().await?;
let app = controls::feishu::FeishuClient::new()?; let app = models::feishu::FeishuClient::new()?;
for summary in summary_list { for summary in summary_list {
app.send_message(&summary.name).await?; app.send_message(&summary.name).await?;

View File

@@ -2,3 +2,7 @@
pub struct MessageContent { pub struct MessageContent {
pub text: String, pub text: String,
} }
pub struct FeishuClient {
pub client: open_lark::prelude::LarkClient,
}