Add choice of proxied search backends

This commit is contained in:
Dominik Werder
2022-02-18 12:15:58 +01:00
parent b82a6292d2
commit b7aaad7a7b
3 changed files with 13 additions and 10 deletions

View File

@@ -7,16 +7,16 @@ pub async fn search_channel_databuffer(
query: ChannelSearchQuery,
node_config: &NodeConfigCached,
) -> Result<ChannelSearchResult, Error> {
let do_search = if !query.name_regex.is_empty() {
true
} else if !query.source_regex.is_empty() {
true
} else if query.description_regex.is_empty() {
true
} else {
let empty = if !query.name_regex.is_empty() {
false
} else if !query.source_regex.is_empty() {
false
} else if !query.description_regex.is_empty() {
false
} else {
true
};
if !do_search {
if empty {
let ret = ChannelSearchResult { channels: vec![] };
return Ok(ret);
}
@@ -191,6 +191,7 @@ pub async fn search_channel(
if let Some(conf) = node_config.node.channel_archiver.as_ref() {
search_channel_archeng(query, node_config.node.backend.clone(), conf).await
} else if let Some(_conf) = node_config.node.archiver_appliance.as_ref() {
// TODO
err::todoval()
} else {
search_channel_databuffer(query, node_config).await

View File

@@ -6,6 +6,7 @@ use http::{header, Request, Response, StatusCode};
use hyper::Body;
use itertools::Itertools;
use netpod::log::*;
use netpod::ACCEPT_ALL;
use netpod::{ChannelSearchQuery, ChannelSearchResult, ProxyConfig, APP_JSON};
use std::pin::Pin;
use std::time::Duration;
@@ -15,12 +16,12 @@ pub async fn channel_search(req: Request<Body>, proxy_config: &ProxyConfig) -> R
let (head, _body) = req.into_parts();
let vdef = header::HeaderValue::from_static(APP_JSON);
let v = head.headers.get(header::ACCEPT).unwrap_or(&vdef);
if v == APP_JSON || v == "*/*" {
if v == APP_JSON || v == ACCEPT_ALL {
let inpurl = Url::parse(&format!("dummy:{}", head.uri))?;
let query = ChannelSearchQuery::from_url(&inpurl)?;
let mut bodies = vec![];
let urls = proxy_config
.backends
.backends_search
.iter()
.filter(|k| {
if let Some(back) = &query.backend {

View File

@@ -1351,6 +1351,7 @@ pub struct ProxyConfig {
pub search_hosts: Vec<String>,
pub backends: Vec<ProxyBackend>,
pub backends2: Vec<ProxyBackend>,
pub backends_search: Vec<ProxyBackend>,
pub api_0_search_hosts: Option<Vec<String>>,
pub api_0_search_backends: Option<Vec<String>>,
}