diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index eb3ea3a..c5e0ba0 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -7,44 +7,31 @@ jobs: name: Test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - uses: Swatinem/rust-cache@v1 + - uses: actions/checkout@v4 + - run: rustup toolchain install stable --profile minimal --no-self-update + - uses: Swatinem/rust-cache@v2 - run: mkdir app/dist && touch app/dist/index.html - - uses: actions-rs/cargo@v1 - with: - command: test - args: --all-features + - name: Test + run: cargo test --all-features fmt: name: Rustfmt runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: nightly - components: rustfmt - override: true - - run: cargo +nightly fmt --all -- --check + - uses: actions/checkout@v4 + - run: rustup toolchain install ${{ env.nightly }} --profile minimal --component rustfmt --no-self-update + - name: Rustfmt + run: cargo +nightly fmt --all -- --check + clippy: name: Clippy runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - components: clippy - override: true - - uses: Swatinem/rust-cache@v1 + - uses: actions/checkout@v4 + - name: Install Rust Toolchain + run: rustup toolchain install stable --profile minimal --component clippy --no-self-update + - uses: Swatinem/rust-cache@v2 - run: mkdir app/dist && touch app/dist/index.html - - run: cargo clippy --all-features -- -D warnings - + - name: Clippy + run: cargo clippy --all-features -- -D warnings diff --git a/worker-sentry/src/client.rs b/worker-sentry/src/client.rs index abca406..6866866 100644 --- a/worker-sentry/src/client.rs +++ b/worker-sentry/src/client.rs @@ -117,9 +117,9 @@ impl Sentry { transaction.timestamp = Some(protocol::Timestamp::now()); transaction.release = Some(git_version!().into()); - transaction.request = self.request.clone(); - transaction.user = self.user.clone(); - transaction.breadcrumbs = self.breadcrumbs.clone(); + transaction.request.clone_from(&self.request); + transaction.user.clone_from(&self.user); + transaction.breadcrumbs.clone_from(&self.breadcrumbs); transaction .contexts .insert("trace".into(), protocol::Context::Trace(trace_context)); @@ -150,11 +150,11 @@ impl Sentry { .as_ref() .and_then(|t| t.0.name.to_owned()) .map(Into::into); - event.breadcrumbs = self.breadcrumbs.clone(); + event.breadcrumbs.clone_from(&self.breadcrumbs); event.release = Some(git_version!().into()); event.server_name = server_name; - event.request = self.request.clone(); - event.user = self.user.clone(); + event.request.clone_from(&self.request); + event.user.clone_from(&self.user); let tc = self .trace_context diff --git a/worker-sentry/src/utils.rs b/worker-sentry/src/utils.rs index 30808fc..49b389a 100644 --- a/worker-sentry/src/utils.rs +++ b/worker-sentry/src/utils.rs @@ -19,9 +19,7 @@ pub fn serialize_id( } pub mod ts_rfc3339 { - use std::fmt; - - use serde::{de, ser}; + use serde::ser; use super::*; @@ -40,25 +38,6 @@ pub mod ts_rfc3339 { ))), } } - - pub(super) struct Rfc3339Deserializer; - - impl<'de> de::Visitor<'de> for Rfc3339Deserializer { - type Value = Timestamp; - - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - write!(formatter, "an RFC3339 timestamp") - } - - fn visit_str(self, v: &str) -> Result - where - E: de::Error, - { - let dt = OffsetDateTime::parse(v, &Rfc3339).map_err(|e| E::custom(format!("{e}")))?; - let secs = u64::try_from(dt.unix_timestamp()).map_err(|e| E::custom(format!("{e}")))?; - Ok(Timestamp::from_secs(secs)) - } - } } pub mod ts_rfc3339_opt { diff --git a/worker/src/dangerous.rs b/worker/src/dangerous.rs index 0374b17..159430c 100644 --- a/worker/src/dangerous.rs +++ b/worker/src/dangerous.rs @@ -49,9 +49,9 @@ impl Dangerous { } #[tracing::instrument(skip(self))] - pub async fn sign(&self, data: &T) -> Result + pub async fn sign(&self, data: &T) -> Result where - T: std::fmt::Debug, + T: Serialize + std::fmt::Debug, { let mut payload = serde_json::to_vec(data).map_err(|_| DangerousError::Serialize)?; diff --git a/worker/src/response.rs b/worker/src/response.rs index 10a49fe..0d1d80e 100644 --- a/worker/src/response.rs +++ b/worker/src/response.rs @@ -90,8 +90,8 @@ impl PartialMeta for &StoredPaste { return; }; meta.ascendancy_or_class = Some(this.ascendancy_or_class); - meta.main_skill_name = this.main_skill_name.clone(); - meta.version = this.version.clone(); + meta.main_skill_name.clone_from(&this.main_skill_name); + meta.version.clone_from(&this.version); meta.last_modified = Some(self.last_modified); } } @@ -114,8 +114,8 @@ impl PartialMeta for &shared::model::Paste { return; }; meta.ascendancy_or_class = Some(this.ascendancy_or_class); - meta.main_skill_name = this.main_skill_name.clone(); - meta.version = this.version.clone(); + meta.main_skill_name.clone_from(&this.main_skill_name); + meta.version.clone_from(&this.version); meta.last_modified = Some(self.last_modified); } }