]> Untitled Git - lemmy.git/commitdiff
Adding shorthand federated object searching.
authorDessalines <tyhou13@gmx.com>
Wed, 29 Apr 2020 16:55:54 +0000 (12:55 -0400)
committerDessalines <tyhou13@gmx.com>
Wed, 29 Apr 2020 16:55:54 +0000 (12:55 -0400)
server/src/apub/fetcher.rs
ui/src/api_tests/api.spec.ts

index e07e410bac3ebcd4b16536e8769fbf52c366665b..2164dec8b46dfb0ab779c6dec9fa0260deeaafd2 100644 (file)
@@ -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![],
index ffc33888bb3ec8ed4e28c413ba3f5006d99b9448..7a810d9a00d2b455dc52cb117325bba20a053ff7 100644 (file)
@@ -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());