Browse Source

[enh] Add API Key support for discourse.org forums

Sylvain Cau 9 months ago
parent
commit
b9ddd59c5b
1 changed files with 28 additions and 0 deletions
  1. 28 0
      searx/engines/discourse.py

+ 28 - 0
searx/engines/discourse.py

@@ -10,6 +10,8 @@ engine offers some additional settings:
 - :py:obj:`api_order`
 - :py:obj:`search_endpoint`
 - :py:obj:`show_avatar`
+- :py:obj:`api_key`
+- :py:obj:`api_username`
 
 Example
 =======
@@ -27,6 +29,20 @@ for the ``paddling.com`` forum:
      categories: ['social media', 'sports']
      show_avatar: true
 
+If the forum is private, you need to add an API key and username for the search:
+
+.. code:: yaml
+
+   - name: paddling
+     engine: discourse
+     shortcut: paddle
+     base_url: 'https://forums.paddling.com/'
+     api_order: views
+     categories: ['social media', 'sports']
+     show_avatar: true
+     api_key: '<KEY>'
+     api_username: 'system'
+
 
 Implementations
 ===============
@@ -65,6 +81,12 @@ api_order = 'likes'
 show_avatar = False
 """Show avatar of the user who send the post."""
 
+api_key = ''
+"""API key of the Discourse forum."""
+
+api_username = ''
+"""API username of the Discourse forum."""
+
 paging = True
 time_range_support = True
 
@@ -98,6 +120,12 @@ def request(query, params):
         'X-Requested-With': 'XMLHttpRequest',
     }
 
+    if api_key != '':
+        params['headers']['Api-Key'] = api_key
+
+    if api_username != '':
+        params['headers']['Api-Username'] = api_username
+
     return params