Skip to content

Commit b82ef51

Browse files
committed
Fixed ga
fmt
1 parent a9ca9cd commit b82ef51

File tree

3 files changed

+40
-30
lines changed

3 files changed

+40
-30
lines changed

.github/workflows/rust.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ jobs:
2323
profile: minimal
2424
toolchain: stable
2525
override: true
26+
components: rustfmt, clippy
2627

2728
- name: Cache dependencies
2829
uses: actions/cache@v3
@@ -39,7 +40,10 @@ jobs:
3940
echo "PORT=8080" >> .env
4041
cargo test -- --nocapture
4142
42-
- name: Check formatting
43+
- name: Format code
44+
run: cargo fmt
45+
46+
- name: Verify formatting
4347
run: cargo fmt -- --check
4448

4549
- name: Run clippy

src/main.rs

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1-
#[macro_use] extern crate rocket;
1+
#[macro_use]
2+
extern crate rocket;
23

3-
use rocket::response::content::RawXml;
4-
use rocket::http::{Status, Header};
5-
use rocket::request::{FromRequest, Outcome, Request};
4+
use log::{error, info};
5+
use qrcode::render::svg;
6+
use qrcode::QrCode;
67
use rocket::config::Config;
7-
use rocket::{Response};
88
use rocket::fairing::{Fairing, Info, Kind};
9-
use qrcode::QrCode;
10-
use qrcode::render::svg;
9+
use rocket::http::{Header, Status};
10+
use rocket::request::{FromRequest, Outcome, Request};
11+
use rocket::response::content::RawXml;
12+
use rocket::Response;
1113
use std::env;
1214
use std::net::IpAddr;
13-
use log::{info, error};
1415

1516
#[cfg(test)]
1617
mod tests;
@@ -47,12 +48,13 @@ impl<'r> FromRequest<'r> for ApiKey<'r> {
4748
fn generate_qr(_api_key: ApiKey<'_>, url: String) -> RawXml<String> {
4849
info!("Generating QR code for URL: {}", url);
4950
let code = QrCode::new(url).unwrap();
50-
let svg = code.render()
51+
let svg = code
52+
.render()
5153
.min_dimensions(200, 200)
5254
.dark_color(svg::Color("#000000"))
5355
.light_color(svg::Color("#ffffff"))
5456
.build();
55-
57+
5658
RawXml(svg)
5759
}
5860

@@ -69,14 +71,20 @@ impl Fairing for CORS {
6971
fn info(&self) -> Info {
7072
Info {
7173
name: "Add CORS headers to responses",
72-
kind: Kind::Response
74+
kind: Kind::Response,
7375
}
7476
}
7577

7678
async fn on_response<'r>(&self, _request: &'r Request<'_>, response: &mut Response<'r>) {
7779
response.set_header(Header::new("Access-Control-Allow-Origin", "*"));
78-
response.set_header(Header::new("Access-Control-Allow-Methods", "GET, POST, OPTIONS"));
79-
response.set_header(Header::new("Access-Control-Allow-Headers", "Content-Type, X-API-Key"));
80+
response.set_header(Header::new(
81+
"Access-Control-Allow-Methods",
82+
"GET, POST, OPTIONS",
83+
));
84+
response.set_header(Header::new(
85+
"Access-Control-Allow-Headers",
86+
"Content-Type, X-API-Key",
87+
));
8088
}
8189
}
8290

@@ -90,7 +98,7 @@ fn rocket() -> _ {
9098
if std::env::var("RUST_LOG").is_err() {
9199
env_logger::init();
92100
}
93-
101+
94102
dotenv::dotenv().ok();
95103

96104
let port = env::var("PORT").unwrap_or_else(|_| "8080".to_string());
@@ -109,4 +117,4 @@ fn rocket() -> _ {
109117
rocket::custom(config)
110118
.mount("/", routes![generate_qr, hello, all_options])
111119
.attach(CORS)
112-
}
120+
}

src/tests.rs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use super::*;
2-
use rocket::local::blocking::Client;
32
use rocket::http::{Header, Status};
3+
use rocket::local::blocking::Client;
44
use std::sync::Once;
55

66
static INIT: Once = Once::new();
@@ -16,15 +16,15 @@ fn setup() {
1616

1717
fn create_test_client() -> Client {
1818
setup();
19-
19+
2020
// Clean environment before setting test values
2121
std::env::remove_var("API_KEY");
2222
std::env::remove_var("PORT");
23-
23+
2424
// Set up test environment
2525
std::env::set_var("API_KEY", "test_key");
2626
std::env::set_var("PORT", "8080");
27-
27+
2828
match Client::tracked(rocket()) {
2929
Ok(client) => client,
3030
Err(e) => panic!("Failed to create test client: {:?}", e),
@@ -46,18 +46,16 @@ fn test_generate_qr_with_valid_api_key() {
4646
.get("/generate?url=https://ghurmy.xyz")
4747
.header(Header::new("X-API-Key", "test_key"))
4848
.dispatch();
49-
49+
5050
assert_eq!(response.status(), Status::Ok);
5151
assert!(response.into_string().unwrap().contains("<svg"));
5252
}
5353

5454
#[test]
5555
fn test_generate_qr_without_api_key() {
5656
let client = create_test_client();
57-
let response = client
58-
.get("/generate?url=https://example.com")
59-
.dispatch();
60-
57+
let response = client.get("/generate?url=https://example.com").dispatch();
58+
6159
assert_eq!(response.status(), Status::BadRequest);
6260
}
6361

@@ -68,15 +66,15 @@ fn test_generate_qr_with_invalid_api_key() {
6866
.get("/generate?url=https://ghurmy.xyz")
6967
.header(Header::new("X-API-Key", "wrong_key"))
7068
.dispatch();
71-
69+
7270
assert_eq!(response.status(), Status::Unauthorized);
7371
}
7472

7573
#[test]
7674
fn test_cors_headers() {
7775
let client = create_test_client();
7876
let response = client.get("/").dispatch();
79-
77+
8078
assert_eq!(
8179
response.headers().get_one("Access-Control-Allow-Origin"),
8280
Some("*")
@@ -95,7 +93,7 @@ fn test_cors_headers() {
9593
fn test_options_request() {
9694
let client = create_test_client();
9795
let response = client.options("/").dispatch();
98-
96+
9997
assert_eq!(response.status(), Status::Ok);
10098
}
10199

@@ -106,8 +104,8 @@ fn test_generate_qr_with_invalid_url() {
106104
.get("/generate?url=not_a_url")
107105
.header(Header::new("X-API-Key", "test_key"))
108106
.dispatch();
109-
107+
110108
// The QR code library should still generate a QR code even for invalid URLs
111109
assert_eq!(response.status(), Status::Ok);
112110
assert!(response.into_string().unwrap().contains("<svg"));
113-
}
111+
}

0 commit comments

Comments
 (0)