Add choice of proxied search backends
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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>>,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user