Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,18 @@ jobs:
# macos-14 for M1 runners
os: [ubuntu-22.04, windows-2022, macos-14]
features: [all, default]
rust-version:
- stable
# 1.85 is the MSRV
- "1.85"
include:
- features: all
feature_flags: --all-features
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: ${{ matrix.rust-version }}
- name: Report cargo version
run: cargo --version
- name: Report rustc version
Expand All @@ -70,4 +77,7 @@ jobs:
- name: Build
run: cargo build ${{ matrix.feature_flags }} --locked --all-targets --verbose
- name: Run tests
run: cargo test ${{ matrix.feature_flags }} --locked --all-targets --verbose
run: cargo test ${{ matrix.feature_flags }} --locked --all-targets --verbose -- --exact --skip fail
- name: Run trybuild tests
run: cargo test ${{ matrix.feature_flags }} --locked --all-targets --verbose -- --exact fail

4 changes: 4 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ default-members = ["dropshot", "dropshot_endpoint" ]

resolver = "2"

[workspace.package]
edition = "2024"
rust-version = "1.85"

[workspace.lints.clippy]
# Clippy's style nits are useful, but not worth keeping in CI.
style = { level = "allow", priority = -1 }
Expand Down
3 changes: 2 additions & 1 deletion dropshot/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ name = "dropshot"
description = "expose REST APIs from a Rust program"
version = "0.16.4"
authors = ["David Pacheco <[email protected]>"]
edition = "2021"
edition.workspace = true
rust-version.workspace = true
license = "Apache-2.0"
repository = "https://github.com/oxidecomputer/dropshot/"
readme = "README-crates.io.md"
Expand Down
2 changes: 1 addition & 1 deletion dropshot/examples/api-trait-websocket.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ mod imp {
WebsocketConnection,
};
use futures::SinkExt;
use tokio_tungstenite::tungstenite::{protocol::Role, Message};
use tokio_tungstenite::tungstenite::{Message, protocol::Role};

use crate::api::{CounterApi, CounterValue};

Expand Down
2 changes: 1 addition & 1 deletion dropshot/examples/basic.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// Copyright 2020 Oxide Computer Company
//! Example use of Dropshot.

use dropshot::endpoint;
use dropshot::ApiDescription;
use dropshot::ConfigLogging;
use dropshot::ConfigLoggingLevel;
Expand All @@ -11,6 +10,7 @@ use dropshot::HttpResponseUpdatedNoContent;
use dropshot::RequestContext;
use dropshot::ServerBuilder;
use dropshot::TypedBody;
use dropshot::endpoint;
use schemars::JsonSchema;
use serde::Deserialize;
use serde::Serialize;
Expand Down
2 changes: 1 addition & 1 deletion dropshot/examples/custom-error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
//! An example demonstrating how to return user-defined error types from
//! endpoint handlers.

use dropshot::endpoint;
use dropshot::ApiDescription;
use dropshot::ConfigLogging;
use dropshot::ConfigLoggingLevel;
Expand All @@ -14,6 +13,7 @@ use dropshot::HttpResponseOk;
use dropshot::Path;
use dropshot::RequestContext;
use dropshot::ServerBuilder;
use dropshot::endpoint;
use schemars::JsonSchema;
use serde::Deserialize;
use serde::Serialize;
Expand Down
2 changes: 1 addition & 1 deletion dropshot/examples/file_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use dropshot::ConfigLoggingLevel;
use dropshot::HttpError;
use dropshot::RequestContext;
use dropshot::ServerBuilder;
use dropshot::{endpoint, Path};
use dropshot::{Path, endpoint};
use http::{Response, StatusCode};
use schemars::JsonSchema;
use serde::Deserialize;
Expand Down
2 changes: 1 addition & 1 deletion dropshot/examples/https.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

//! Example use of Dropshot with TLS enabled

use dropshot::endpoint;
use dropshot::ApiDescription;
use dropshot::ConfigLogging;
use dropshot::ConfigLoggingLevel;
Expand All @@ -13,6 +12,7 @@ use dropshot::HttpResponseUpdatedNoContent;
use dropshot::RequestContext;
use dropshot::ServerBuilder;
use dropshot::TypedBody;
use dropshot::endpoint;
use schemars::JsonSchema;
use serde::Deserialize;
use serde::Serialize;
Expand Down
2 changes: 1 addition & 1 deletion dropshot/examples/index.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use dropshot::ConfigLoggingLevel;
use dropshot::HttpError;
use dropshot::RequestContext;
use dropshot::ServerBuilder;
use dropshot::{endpoint, Path};
use dropshot::{Path, endpoint};
use http::{Response, StatusCode};
use schemars::JsonSchema;
use serde::Deserialize;
Expand Down
2 changes: 1 addition & 1 deletion dropshot/examples/module-basic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,12 @@ pub struct CounterValue {
/// mountable routes
pub mod routes {
use crate::{CounterValue, ExampleContext};
use dropshot::endpoint;
use dropshot::HttpError;
use dropshot::HttpResponseOk;
use dropshot::HttpResponseUpdatedNoContent;
use dropshot::RequestContext;
use dropshot::TypedBody;
use dropshot::endpoint;
use std::sync::atomic::Ordering;

/// Fetch the current value of the counter.
Expand Down
4 changes: 2 additions & 2 deletions dropshot/examples/module-shared-context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@
//! Example use of Dropshot where a client wants to act on
//! a custom context object that outlives endpoint functions.

use dropshot::endpoint;
use dropshot::ApiDescription;
use dropshot::ConfigLogging;
use dropshot::ConfigLoggingLevel;
use dropshot::HttpError;
use dropshot::HttpResponseOk;
use dropshot::RequestContext;
use dropshot::ServerBuilder;
use dropshot::endpoint;
use futures::FutureExt;
use schemars::JsonSchema;
use serde::Deserialize;
use serde::Serialize;
use std::sync::Arc;
use std::sync::atomic::AtomicU64;
use std::sync::atomic::Ordering;
use std::sync::Arc;

#[tokio::main]
async fn main() -> Result<(), String> {
Expand Down
2 changes: 1 addition & 1 deletion dropshot/examples/multipart.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// Copyright 2023 Oxide Computer Company
//! Example use of Dropshot for multipart form-data.

use dropshot::endpoint;
use dropshot::ApiDescription;
use dropshot::Body;
use dropshot::ConfigLogging;
Expand All @@ -10,6 +9,7 @@ use dropshot::HttpError;
use dropshot::MultipartBody;
use dropshot::RequestContext;
use dropshot::ServerBuilder;
use dropshot::endpoint;
use http::{Response, StatusCode};

#[tokio::main]
Expand Down
16 changes: 9 additions & 7 deletions dropshot/examples/multiple-servers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@
//! querying server "A" to show that "B" is gone. The logfiles of the running
//! process will also note the shutdown of server B.

use dropshot::endpoint;
use dropshot::ApiDescription;
use dropshot::ConfigDropshot;
use dropshot::ConfigLogging;
Expand All @@ -81,22 +80,23 @@ use dropshot::Path;
use dropshot::RequestContext;
use dropshot::ServerBuilder;
use dropshot::TypedBody;
use futures::future::BoxFuture;
use futures::stream::FuturesUnordered;
use dropshot::endpoint;
use futures::FutureExt;
use futures::StreamExt;
use futures::future::BoxFuture;
use futures::stream::FuturesUnordered;
use schemars::JsonSchema;
use serde::Deserialize;
use serde::Serialize;
use slog::info;
use slog::Logger;
use std::collections::hash_map::Entry;
use slog::info;
use std::collections::HashMap;
use std::collections::hash_map::Entry;
use std::mem;
use std::net::SocketAddr;
use std::sync::Arc;
use tokio::sync::mpsc;
use tokio::sync::Mutex;
use tokio::sync::mpsc;

#[tokio::main]
async fn main() -> Result<(), String> {
Expand Down Expand Up @@ -186,7 +186,9 @@ impl SharedMultiServerContext {
let mut servers = self.servers.lock().await;
let slot = match servers.entry(name.to_string()) {
Entry::Occupied(_) => {
return Err(format!("already running a server named {name:?}",))
return Err(
format!("already running a server named {name:?}",),
);
}
Entry::Vacant(slot) => slot,
};
Expand Down
2 changes: 1 addition & 1 deletion dropshot/examples/pagination-basic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@
//! Now we have the next three projects and a new token. We can continue this
//! way until we've listed all the projects.

use dropshot::endpoint;
use dropshot::ApiDescription;
use dropshot::ConfigDropshot;
use dropshot::ConfigLogging;
Expand All @@ -74,6 +73,7 @@ use dropshot::RequestContext;
use dropshot::ResultsPage;
use dropshot::ServerBuilder;
use dropshot::WhichPage;
use dropshot::endpoint;
use schemars::JsonSchema;
use serde::Deserialize;
use serde::Serialize;
Expand Down
2 changes: 1 addition & 1 deletion dropshot/examples/pagination-multiple-resources.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
//! multiple resources. See the other pagination examples for more information
//! about how to run this.

use dropshot::endpoint;
use dropshot::ApiDescription;
use dropshot::ConfigDropshot;
use dropshot::ConfigLogging;
Expand All @@ -19,6 +18,7 @@ use dropshot::RequestContext;
use dropshot::ResultsPage;
use dropshot::ServerBuilder;
use dropshot::WhichPage;
use dropshot::endpoint;
use schemars::JsonSchema;
use serde::Deserialize;
use serde::Serialize;
Expand Down
4 changes: 2 additions & 2 deletions dropshot/examples/pagination-multiple-sorts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,9 @@
//! be relied upon. We mention it here just to help explain how the pagination
//! mechanism works.

use chrono::offset::TimeZone;
use chrono::DateTime;
use chrono::Utc;
use dropshot::endpoint;
use chrono::offset::TimeZone;
use dropshot::ApiDescription;
use dropshot::ConfigDropshot;
use dropshot::ConfigLogging;
Expand All @@ -107,6 +106,7 @@ use dropshot::RequestContext;
use dropshot::ResultsPage;
use dropshot::ServerBuilder;
use dropshot::WhichPage;
use dropshot::endpoint;
use hyper::Uri;
use schemars::JsonSchema;
use serde::Deserialize;
Expand Down
4 changes: 2 additions & 2 deletions dropshot/examples/petstore.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dropshot::{
endpoint, ApiDescription, HttpError, HttpResponseOk, PaginationParams,
Path, Query, RequestContext, ResultsPage, TypedBody,
ApiDescription, HttpError, HttpResponseOk, PaginationParams, Path, Query,
RequestContext, ResultsPage, TypedBody, endpoint,
};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
Expand Down
2 changes: 1 addition & 1 deletion dropshot/examples/request-headers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@
//! This example is based on the "basic.rs" one. See that one for more detailed
//! comments on the common code.

use dropshot::endpoint;
use dropshot::ApiDescription;
use dropshot::ConfigLogging;
use dropshot::ConfigLoggingLevel;
use dropshot::HttpError;
use dropshot::HttpResponseOk;
use dropshot::RequestContext;
use dropshot::ServerBuilder;
use dropshot::endpoint;

#[tokio::main]
async fn main() -> Result<(), String> {
Expand Down
2 changes: 1 addition & 1 deletion dropshot/examples/schema-with-example.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
//! and how that will be reflected in the resultant JSON generated when ran.

use dropshot::{
endpoint, ApiDescription, HttpError, HttpResponseOk, RequestContext,
ApiDescription, HttpError, HttpResponseOk, RequestContext, endpoint,
};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
Expand Down
4 changes: 2 additions & 2 deletions dropshot/examples/self-referential.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,20 @@

//! An example that demonstrates server shutdown (and waiting for shutdown).

use dropshot::endpoint;
use dropshot::ApiDescription;
use dropshot::ConfigLogging;
use dropshot::ConfigLoggingLevel;
use dropshot::HttpError;
use dropshot::HttpResponseOk;
use dropshot::RequestContext;
use dropshot::ServerBuilder;
use dropshot::endpoint;
use schemars::JsonSchema;
use serde::Deserialize;
use serde::Serialize;
use std::sync::Arc;
use std::sync::atomic::AtomicU64;
use std::sync::atomic::Ordering;
use std::sync::Arc;

#[tokio::main]
async fn main() -> Result<(), String> {
Expand Down
2 changes: 1 addition & 1 deletion dropshot/examples/versioning.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,6 @@
//! {"thing1_late":"hello from a LATE v1"}
//! ```

use dropshot::endpoint;
use dropshot::ApiDescription;
use dropshot::ClientSpecifiesVersionInHeader;
use dropshot::ConfigDropshot;
Expand All @@ -106,6 +105,7 @@ use dropshot::HttpResponseOk;
use dropshot::RequestContext;
use dropshot::ServerBuilder;
use dropshot::VersionPolicy;
use dropshot::endpoint;
use http::HeaderName;
use schemars::JsonSchema;
use serde::Serialize;
Expand Down
4 changes: 2 additions & 2 deletions dropshot/examples/websocket.rs
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
// Copyright 2022 Oxide Computer Company
//! Example use of Dropshot with a websocket endpoint.

use dropshot::channel;
use dropshot::ApiDescription;
use dropshot::ConfigLogging;
use dropshot::ConfigLoggingLevel;
use dropshot::Query;
use dropshot::RequestContext;
use dropshot::ServerBuilder;
use dropshot::WebsocketConnection;
use dropshot::channel;
use futures::SinkExt;
use schemars::JsonSchema;
use serde::Deserialize;
use tokio_tungstenite::tungstenite::protocol::Role;
use tokio_tungstenite::tungstenite::Message;
use tokio_tungstenite::tungstenite::protocol::Role;

#[tokio::main]
async fn main() -> Result<(), String> {
Expand Down
6 changes: 3 additions & 3 deletions dropshot/examples/well-tagged.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
//! proper tagging innate.

use dropshot::{
endpoint, ApiDescription, ConfigLogging, ConfigLoggingLevel,
EndpointTagPolicy, HttpError, HttpResponseOk, RequestContext,
ServerBuilder, TagConfig, TagDetails, TagExternalDocs,
ApiDescription, ConfigLogging, ConfigLoggingLevel, EndpointTagPolicy,
HttpError, HttpResponseOk, RequestContext, ServerBuilder, TagConfig,
TagDetails, TagExternalDocs, endpoint,
};

#[endpoint {
Expand Down
Loading
Loading