|
|
|
@ -14,7 +14,7 @@ use async_std::future::Future; |
|
|
|
|
use async_std::io::Read; |
|
|
|
|
use async_std::net::{TcpListener, TcpStream}; |
|
|
|
|
use async_std::prelude::*; |
|
|
|
|
use async_std::task::{block_on, spawn, spawn_blocking}; |
|
|
|
|
use async_std::task::{block_on, spawn}; |
|
|
|
|
use http_types::{headers, Body, Error, Method, Mime, Request, Response, Result, StatusCode}; |
|
|
|
|
use oxigraph::io::{DatasetFormat, GraphFormat}; |
|
|
|
|
use oxigraph::model::{GraphName, NamedNode, NamedOrBlankNode}; |
|
|
|
@ -74,31 +74,21 @@ async fn handle_request(request: Request, store: Store) -> Result<Response> { |
|
|
|
|
("/", Method::Post) => { |
|
|
|
|
if let Some(content_type) = request.content_type() { |
|
|
|
|
match if let Some(format) = GraphFormat::from_media_type(content_type.essence()) { |
|
|
|
|
spawn_blocking(move || { |
|
|
|
|
store.load_graph( |
|
|
|
|
BufReader::new(SyncAsyncReader::from(request)), |
|
|
|
|
format, |
|
|
|
|
&GraphName::DefaultGraph, |
|
|
|
|
None, |
|
|
|
|
) |
|
|
|
|
}) |
|
|
|
|
} else if let Some(format) = DatasetFormat::from_media_type(content_type.essence()) |
|
|
|
|
{ |
|
|
|
|
spawn_blocking(move || { |
|
|
|
|
store.load_dataset( |
|
|
|
|
BufReader::new(SyncAsyncReader::from(request)), |
|
|
|
|
format, |
|
|
|
|
None, |
|
|
|
|
) |
|
|
|
|
}) |
|
|
|
|
store.load_dataset(BufReader::new(SyncAsyncReader::from(request)), format, None) |
|
|
|
|
} else { |
|
|
|
|
return Ok(simple_response( |
|
|
|
|
StatusCode::UnsupportedMediaType, |
|
|
|
|
format!("No supported content Content-Type given: {}", content_type), |
|
|
|
|
)); |
|
|
|
|
} |
|
|
|
|
.await |
|
|
|
|
{ |
|
|
|
|
} { |
|
|
|
|
Ok(()) => Response::new(StatusCode::NoContent), |
|
|
|
|
Err(error) => { |
|
|
|
|
return Err(bad_request(error)); |
|
|
|
@ -226,7 +216,6 @@ async fn evaluate_sparql_query( |
|
|
|
|
named_graph_uris: Vec<String>, |
|
|
|
|
request: Request, |
|
|
|
|
) -> Result<Response> { |
|
|
|
|
spawn_blocking(move || { |
|
|
|
|
let mut query = Query::parse(&query, None).map_err(bad_request)?; |
|
|
|
|
let default_graph_uris = default_graph_uris |
|
|
|
|
.into_iter() |
|
|
|
@ -280,8 +269,6 @@ async fn evaluate_sparql_query( |
|
|
|
|
response.insert_header(headers::CONTENT_TYPE, format.media_type()); |
|
|
|
|
Ok(response) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
.await |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
async fn evaluate_urlencoded_sparql_update(store: Store, encoded: Vec<u8>) -> Result<Response> { |
|
|
|
@ -323,7 +310,6 @@ async fn evaluate_sparql_update( |
|
|
|
|
"using-graph-uri and using-named-graph-uri parameters are not supported yet", |
|
|
|
|
)); |
|
|
|
|
} |
|
|
|
|
spawn_blocking(move || { |
|
|
|
|
let update = Update::parse(&update, None).map_err(|e| { |
|
|
|
|
let mut e = Error::from(e); |
|
|
|
|
e.set_status(StatusCode::BadRequest); |
|
|
|
@ -331,8 +317,6 @@ async fn evaluate_sparql_update( |
|
|
|
|
})?; |
|
|
|
|
store.update(update)?; |
|
|
|
|
Ok(Response::new(StatusCode::NoContent)) |
|
|
|
|
}) |
|
|
|
|
.await |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
async fn http_server< |
|
|
|
|