mirror of
https://github.com/chatmail/core.git
synced 2026-05-01 20:36:31 +03:00
feat: set User-Agent for tile.openstreetmap.org requests
This commit is contained in:
@@ -16,6 +16,10 @@ use crate::net::session::SessionStream;
|
|||||||
use crate::net::tls::wrap_rustls;
|
use crate::net::tls::wrap_rustls;
|
||||||
use crate::tools::time;
|
use crate::tools::time;
|
||||||
|
|
||||||
|
/// User-Agent for HTTP requests if a resource usage policy requires it.
|
||||||
|
/// By default we do not set User-Agent.
|
||||||
|
const USER_AGENT: &str = "chatmail/2 (+https://github.com/chatmail/core/)";
|
||||||
|
|
||||||
/// HTTP(S) GET response.
|
/// HTTP(S) GET response.
|
||||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||||
pub struct Response {
|
pub struct Response {
|
||||||
@@ -245,8 +249,22 @@ async fn fetch_url(context: &Context, original_url: &str) -> Result<Response> {
|
|||||||
.context("URL has no authority")?
|
.context("URL has no authority")?
|
||||||
.clone();
|
.clone();
|
||||||
|
|
||||||
let req = hyper::Request::builder()
|
let req = hyper::Request::builder().uri(parsed_url);
|
||||||
.uri(parsed_url)
|
|
||||||
|
// OSM usage policy requires
|
||||||
|
// that User-Agent is set for HTTP GET requests
|
||||||
|
// to tile servers:
|
||||||
|
// <https://operations.osmfoundation.org/policies/tiles/>
|
||||||
|
// Same for vectory tiles
|
||||||
|
// at <https://operations.osmfoundation.org/policies/vector/>.
|
||||||
|
let req =
|
||||||
|
if authority == "tile.openstreetmap.org" || authority == "vector.openstreetmap.org" {
|
||||||
|
req.header("User-Agent", USER_AGENT)
|
||||||
|
} else {
|
||||||
|
req
|
||||||
|
};
|
||||||
|
|
||||||
|
let req = req
|
||||||
.header(hyper::header::HOST, authority.as_str())
|
.header(hyper::header::HOST, authority.as_str())
|
||||||
.body(http_body_util::Empty::<Bytes>::new())?;
|
.body(http_body_util::Empty::<Bytes>::new())?;
|
||||||
let response = sender.send_request(req).await?;
|
let response = sender.send_request(req).await?;
|
||||||
|
|||||||
Reference in New Issue
Block a user