summaryrefslogtreecommitdiff
path: root/dichroism/src
diff options
context:
space:
mode:
authorAdam T. Carpenter <atc@53hor.net>2020-11-04 08:59:41 -0500
committerAdam T. Carpenter <atc@53hor.net>2020-11-04 08:59:41 -0500
commit76ad709e0afed734c4331ddb8de91745a541a67d (patch)
treebe7b3d20387506ed23fa9c4f4f386ef3bbb1ae86 /dichroism/src
parentdcc96d0b349583e5d6a0f25ae1f7a3ffa3769788 (diff)
downloadtheglassyladies-76ad709e0afed734c4331ddb8de91745a541a67d.tar.xz
theglassyladies-76ad709e0afed734c4331ddb8de91745a541a67d.zip
basic photo upload working completely
Diffstat (limited to 'dichroism/src')
-rw-r--r--dichroism/src/handlers.rs14
-rw-r--r--dichroism/src/main.rs17
2 files changed, 20 insertions, 11 deletions
diff --git a/dichroism/src/handlers.rs b/dichroism/src/handlers.rs
index 43c11d2..ccaf347 100644
--- a/dichroism/src/handlers.rs
+++ b/dichroism/src/handlers.rs
@@ -106,17 +106,15 @@ async fn post_photo(
) -> Result<HttpResponse, Error> {
let mut responses: Vec<PhotoSetGet> = Vec::new();
- if let Ok(Some(mut field)) = payload.try_next().await {
- // bail if a non-JPEG file was going to be uploaded
- if field.content_type() != &mime::IMAGE_JPEG {
- return Ok(HttpResponse::BadRequest().body("File must be a JPEG image."));
- }
-
+ while let Some(mut field) = payload
+ .try_next()
+ .await
+ .map_err(|e| HttpResponse::BadRequest().body(e.to_string()))?
+ {
// grab all bytes
let mut data: Vec<u8> = Vec::new();
while let Some(chunk) = field.next().await {
- let chunk = chunk?;
- data.extend(chunk);
+ data.extend(chunk?);
}
// create new photo_set
diff --git a/dichroism/src/main.rs b/dichroism/src/main.rs
index 68b7091..6c76f0a 100644
--- a/dichroism/src/main.rs
+++ b/dichroism/src/main.rs
@@ -3,7 +3,8 @@ extern crate serde;
#[macro_use]
extern crate diesel;
-use actix_web::{App, HttpServer};
+use actix_cors::Cors;
+use actix_web::{middleware::Logger, App, HttpServer};
use config::CONFIG_INSTANCE as CONFIG;
use diesel::prelude::SqliteConnection;
use diesel::r2d2::ConnectionManager;
@@ -25,18 +26,28 @@ mod types;
#[actix_web::main]
async fn main() -> Result<()> {
- // Initialize DB connection pool.
+ // Init logging
+ std::env::set_var("RUST_LOG", "actix_web=info");
+ env_logger::init();
+
+ // Init DB connection pool
let manager = ConnectionManager::<SqliteConnection>::new(&CONFIG.db_url);
let pool = Pool::builder().build(manager)?;
- // Initialize application server.
+ // Init application server
let mut server = HttpServer::new(move || {
+ // Init CORS policy
+ let cors = Cors::permissive();
+
App::new()
.data(pool.clone())
+ .wrap(cors)
+ .wrap(Logger::default())
.service(handlers::hello)
.service(handlers::get_products)
.service(handlers::patch_product)
.service(handlers::post_product)
+ .service(handlers::post_photo)
});
// If using listenfd, bind to it instead of the configured address to allow for cargo watch