update async-graphql-actix-web
This commit is contained in:
parent
b373e1397d
commit
1d6a892b94
|
@ -51,5 +51,5 @@ mime = "0.3.16"
|
||||||
[workspace]
|
[workspace]
|
||||||
members = [
|
members = [
|
||||||
"async-graphql-derive",
|
"async-graphql-derive",
|
||||||
# "async-graphql-actix-web"
|
"async-graphql-actix-web"
|
||||||
]
|
]
|
|
@ -26,8 +26,8 @@ use std::sync::Arc;
|
||||||
type BoxOnRequestFn<Query, Mutation, Subscription> = Arc<
|
type BoxOnRequestFn<Query, Mutation, Subscription> = Arc<
|
||||||
dyn for<'a> Fn(
|
dyn for<'a> Fn(
|
||||||
&HttpRequest,
|
&HttpRequest,
|
||||||
QueryBuilder<'a, Query, Mutation, Subscription>,
|
QueryBuilder<Query, Mutation, Subscription>,
|
||||||
) -> QueryBuilder<'a, Query, Mutation, Subscription>,
|
) -> QueryBuilder<Query, Mutation, Subscription>,
|
||||||
>;
|
>;
|
||||||
|
|
||||||
type BoxOnConnectFn<Query, Mutation, Subscription> = Arc<
|
type BoxOnConnectFn<Query, Mutation, Subscription> = Arc<
|
||||||
|
@ -109,8 +109,8 @@ where
|
||||||
pub fn on_request<
|
pub fn on_request<
|
||||||
F: for<'a> Fn(
|
F: for<'a> Fn(
|
||||||
&HttpRequest,
|
&HttpRequest,
|
||||||
QueryBuilder<'a, Query, Mutation, Subscription>,
|
QueryBuilder<Query, Mutation, Subscription>,
|
||||||
) -> QueryBuilder<'a, Query, Mutation, Subscription>
|
) -> QueryBuilder<Query, Mutation, Subscription>
|
||||||
+ 'static,
|
+ 'static,
|
||||||
>(
|
>(
|
||||||
self,
|
self,
|
||||||
|
@ -230,7 +230,7 @@ where
|
||||||
let mut multipart = Multipart::from_request(&req, &mut payload.0).await?;
|
let mut multipart = Multipart::from_request(&req, &mut payload.0).await?;
|
||||||
|
|
||||||
// read operators
|
// read operators
|
||||||
let mut gql_request = {
|
let gql_request = {
|
||||||
let data = read_multipart(&mut multipart, "operations").await?;
|
let data = read_multipart(&mut multipart, "operations").await?;
|
||||||
serde_json::from_slice::<GQLRequest>(&data)
|
serde_json::from_slice::<GQLRequest>(&data)
|
||||||
.map_err(actix_web::error::ErrorBadRequest)?
|
.map_err(actix_web::error::ErrorBadRequest)?
|
||||||
|
@ -243,7 +243,7 @@ where
|
||||||
.map_err(actix_web::error::ErrorBadRequest)?
|
.map_err(actix_web::error::ErrorBadRequest)?
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut builder = match gql_request.builder(schema) {
|
let mut builder = match gql_request.into_query_builder(schema).await {
|
||||||
Ok(builder) => builder,
|
Ok(builder) => builder,
|
||||||
Err(err) => return Ok(web::Json(GQLResponse(Err(err))).respond_to(&req).await?),
|
Err(err) => return Ok(web::Json(GQLResponse(Err(err))).respond_to(&req).await?),
|
||||||
};
|
};
|
||||||
|
@ -252,12 +252,7 @@ where
|
||||||
builder = on_request(&req, builder);
|
builder = on_request(&req, builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut prepared = match builder.prepare() {
|
if !builder.is_upload() {
|
||||||
Ok(prepared) => prepared,
|
|
||||||
Err(err) => return Ok(web::Json(GQLResponse(Err(err))).respond_to(&req).await?),
|
|
||||||
};
|
|
||||||
|
|
||||||
if !prepared.is_upload() {
|
|
||||||
return Err(actix_web::error::ErrorBadRequest(
|
return Err(actix_web::error::ErrorBadRequest(
|
||||||
"It's not an upload operation",
|
"It's not an upload operation",
|
||||||
));
|
));
|
||||||
|
@ -289,7 +284,7 @@ where
|
||||||
let data = data.freeze();
|
let data = data.freeze();
|
||||||
|
|
||||||
for var_path in var_paths {
|
for var_path in var_paths {
|
||||||
prepared.set_upload(
|
builder.set_upload(
|
||||||
&var_path,
|
&var_path,
|
||||||
filename,
|
filename,
|
||||||
Some(&content_type),
|
Some(&content_type),
|
||||||
|
@ -317,26 +312,22 @@ where
|
||||||
return Err(actix_web::error::ErrorBadRequest("missing files"));
|
return Err(actix_web::error::ErrorBadRequest("missing files"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(web::Json(GQLResponse(prepared.execute().await))
|
Ok(web::Json(GQLResponse(builder.execute().await))
|
||||||
.respond_to(&req)
|
.respond_to(&req)
|
||||||
.await?)
|
.await?)
|
||||||
} else if ct.essence_str() == mime::APPLICATION_JSON {
|
} else if ct.essence_str() == mime::APPLICATION_JSON {
|
||||||
let mut gql_request = web::Json::<GQLRequest>::from_request(&req, &mut payload.0)
|
let gql_request = web::Json::<GQLRequest>::from_request(&req, &mut payload.0)
|
||||||
.await?
|
.await?
|
||||||
.into_inner();
|
.into_inner();
|
||||||
let mut builder = match gql_request.builder(schema) {
|
let mut builder = match gql_request.into_query_builder(schema).await {
|
||||||
Ok(builder) => builder,
|
Ok(builder) => builder,
|
||||||
Err(err) => return Ok(web::Json(GQLResponse(Err(err))).respond_to(&req).await?),
|
Err(err) => return Ok(web::Json(GQLResponse(Err(err))).respond_to(&req).await?),
|
||||||
};
|
};
|
||||||
if let Some(on_request) = on_request {
|
if let Some(on_request) = on_request {
|
||||||
builder = on_request(&req, builder);
|
builder = on_request(&req, builder);
|
||||||
}
|
}
|
||||||
let prepared = match builder.prepare() {
|
let mut cache_control = builder.cache_control().value();
|
||||||
Ok(prepared) => prepared,
|
let gql_resp = builder.execute().await;
|
||||||
Err(err) => return Ok(web::Json(GQLResponse(Err(err))).respond_to(&req).await?),
|
|
||||||
};
|
|
||||||
let mut cache_control = prepared.cache_control().value();
|
|
||||||
let gql_resp = prepared.execute().await;
|
|
||||||
if gql_resp.is_err() {
|
if gql_resp.is_err() {
|
||||||
cache_control = None;
|
cache_control = None;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user