summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDessalines <tyhou13@gmx.com>2020-04-29 12:55:54 -0400
committerDessalines <tyhou13@gmx.com>2020-04-29 12:55:54 -0400
commit8cd68f56aa084f3c2e0affee50b8f57a1f4907bf (patch)
treed2922fa4875dcf57d08f3bab50224dad3f20cfc0
parent36d0e34668b94a955306a4b83947deb1f10689f2 (diff)
Adding shorthand federated object searching.
-rw-r--r--server/src/apub/fetcher.rs14
-rw-r--r--ui/src/api_tests/api.spec.ts4
2 files changed, 14 insertions, 4 deletions
diff --git a/server/src/apub/fetcher.rs b/server/src/apub/fetcher.rs
index e07e410b..2164dec8 100644
--- a/server/src/apub/fetcher.rs
+++ b/server/src/apub/fetcher.rs
@@ -45,11 +45,19 @@ pub enum SearchAcceptedObjects {
/// Attempt to parse the query as URL, and fetch an ActivityPub object from it.
///
/// Some working examples for use with the docker/federation/ setup:
-/// http://lemmy_alpha:8540/c/main
-/// http://lemmy_alpha:8540/u/lemmy_alpha
+/// http://lemmy_alpha:8540/c/main, or /c/main@lemmy_alpha:8540
+/// http://lemmy_alpha:8540/u/lemmy_alpha, or /u/lemmy_alpha@lemmy_alpha:8540
/// http://lemmy_alpha:8540/p/3
pub fn search_by_apub_id(query: &str, conn: &PgConnection) -> Result<SearchResponse, Error> {
- let query_url = Url::parse(&query)?;
+ // Parse the shorthand query url
+ let query_url = if query.contains('@') {
+ let split = query.split('@').collect::<Vec<&str>>();
+ let url = format!("{}://{}{}", get_apub_protocol_string(), split[1], split[0]);
+ Url::parse(&url)?
+ } else {
+ Url::parse(&query)?
+ };
+
let mut response = SearchResponse {
type_: SearchType::All.to_string(),
comments: vec![],
diff --git a/ui/src/api_tests/api.spec.ts b/ui/src/api_tests/api.spec.ts
index ffc33888..7a810d9a 100644
--- a/ui/src/api_tests/api.spec.ts
+++ b/ui/src/api_tests/api.spec.ts
@@ -95,7 +95,9 @@ describe('main', () => {
describe('follow_accept', () => {
test('/u/lemmy_alpha follows and accepts lemmy_beta/c/main', async () => {
// Make sure lemmy_beta/c/main is cached on lemmy_alpha
- let searchUrl = `${lemmyAlphaApiUrl}/search?q=http://lemmy_beta:8550/c/main&type_=All&sort=TopAll`;
+ // Use short-hand search url
+ let searchUrl = `${lemmyAlphaApiUrl}/search?q=/c/main@lemmy_beta:8550&type_=All&sort=TopAll`;
+
let searchResponse: SearchResponse = await fetch(searchUrl, {
method: 'GET',
}).then(d => d.json());