From ce6416f5265c5d7b495cd2ce1b5017badf12cde1 Mon Sep 17 00:00:00 2001
From: Christian Boulanger <info@bibliograph.org>
Date: Sun, 14 Jan 2024 22:52:02 +0100
Subject: [PATCH] Added Rocket.Chat API experiment

---
 german-law-journal-network/.gitignore |   2 +-
 rocket-chat-api/.env.dist             |   2 +
 rocket-chat-api/.gitignore            |   3 +
 rocket-chat-api/rocket-chat-api.ipynb | 110 ++++++++++++++++++++++++++
 4 files changed, 116 insertions(+), 1 deletion(-)
 create mode 100644 rocket-chat-api/.env.dist
 create mode 100644 rocket-chat-api/.gitignore
 create mode 100644 rocket-chat-api/rocket-chat-api.ipynb

diff --git a/german-law-journal-network/.gitignore b/german-law-journal-network/.gitignore
index a1e6db2..1494b43 100644
--- a/german-law-journal-network/.gitignore
+++ b/german-law-journal-network/.gitignore
@@ -1,3 +1,3 @@
-../.idea
+.*
 !.gitignore
 !.env.dist
\ No newline at end of file
diff --git a/rocket-chat-api/.env.dist b/rocket-chat-api/.env.dist
new file mode 100644
index 0000000..7ee42ea
--- /dev/null
+++ b/rocket-chat-api/.env.dist
@@ -0,0 +1,2 @@
+ROCKETCHAT_USER_ID=''
+ROCKETCHAT_API_KEY=''
\ No newline at end of file
diff --git a/rocket-chat-api/.gitignore b/rocket-chat-api/.gitignore
new file mode 100644
index 0000000..1494b43
--- /dev/null
+++ b/rocket-chat-api/.gitignore
@@ -0,0 +1,3 @@
+.*
+!.gitignore
+!.env.dist
\ No newline at end of file
diff --git a/rocket-chat-api/rocket-chat-api.ipynb b/rocket-chat-api/rocket-chat-api.ipynb
new file mode 100644
index 0000000..271243a
--- /dev/null
+++ b/rocket-chat-api/rocket-chat-api.ipynb
@@ -0,0 +1,110 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "id": "initial_id",
+   "metadata": {
+    "collapsed": true,
+    "ExecuteTime": {
+     "end_time": "2024-01-14T21:49:59.779267900Z",
+     "start_time": "2024-01-14T21:49:59.447386400Z"
+    }
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": "[('Note-to-self', '6123583208648d50d46136e7', 'Grib6LkDEh8BjXm5A'),\n ('SLT-Team', '621f3257dda518ec820fec0f', 'DLX2YQYzmwSefCFSs'),\n ('Arbeitsaufträge-SHK-Abt-3',\n  '6231a585396730692a6254af',\n  'h2F4wES7ALisyjFeS'),\n ('Machine-Learning-Team', '6243f60f3bb97e25a63651be', 'sibAdkwHQzqJChxH9'),\n ('mpilhlt-DH', '6246b44404cc8d8ba31517c2', 'yT4DM9pje2Cbnz7w3'),\n ('reference-extraction-workshops-2023',\n  '636a209aa7ef138927c64671',\n  'CXECckP3iJcT7Wzvm'),\n ('Literaturverwaltung', '642ab2edd4f482c368a7e364', 'ALzasJ7iwLpNzE34B'),\n ('Arbeitsgruppe-Gleichstellungsbericht',\n  '6492f49d7821ad51fcbbef97',\n  '6492f49e7821ad51fcbbef99'),\n ('mpilhlt-Auer-Doctoral-Students-plus-Coordinator',\n  '64b50afdf6d0cde3515015c3',\n  '64b50afdf6d0cde3515015c5'),\n ('DH-Projekte-Abt-Auer',\n  '655cd77374c1eb212615898e',\n  '655cd77374c1eb2126158990')]"
+     },
+     "execution_count": 27,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "import requests\n",
+    "import os\n",
+    "from dotenv import load_dotenv\n",
+    "from json import JSONDecodeError\n",
+    "\n",
+    "load_dotenv()\n",
+    "\n",
+    "def call_rocket_chat_api(command, **params):\n",
+    "    url = f'https://chat.gwdg.de/api/v1/{command}'\n",
+    "    headers = {\n",
+    "        'X-Auth-Token': os.getenv('ROCKETCHAT_API_KEY'),\n",
+    "        'X-User-Id': os.getenv('ROCKETCHAT_USER_ID')\n",
+    "    }\n",
+    "    response = requests.get(url, headers=headers, params=params)\n",
+    "    response.raise_for_status()\n",
+    "    try:\n",
+    "        return response.json()\n",
+    "    except JSONDecodeError:\n",
+    "        raise RuntimeError(f'Cannot parse response from {response.url}.')\n",
+    "\n",
+    "teams = call_rocket_chat_api(\"teams.list\").get('teams')\n",
+    "[(t.get('name'), t.get('_id'), t.get('roomId')) for t in teams]\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "source": [],
+   "metadata": {
+    "collapsed": false
+   },
+   "id": "894f002bf39fcb04"
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "outputs": [
+    {
+     "ename": "HTTPError",
+     "evalue": "400 Client Error: Bad Request for url: https://chat.gwdg.de/api/v1/channels.history?roomId=6243f60f3bb97e25a63651be",
+     "output_type": "error",
+     "traceback": [
+      "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
+      "\u001B[1;31mHTTPError\u001B[0m                                 Traceback (most recent call last)",
+      "Cell \u001B[1;32mIn[29], line 1\u001B[0m\n\u001B[1;32m----> 1\u001B[0m msgs \u001B[38;5;241m=\u001B[39m \u001B[43mcall_rocket_chat_api\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mchannels.history\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mroomId\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43m6243f60f3bb97e25a63651be\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m)\u001B[49m\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmessages\u001B[39m\u001B[38;5;124m'\u001B[39m)\n",
+      "Cell \u001B[1;32mIn[27], line 15\u001B[0m, in \u001B[0;36mcall_rocket_chat_api\u001B[1;34m(command, **params)\u001B[0m\n\u001B[0;32m     10\u001B[0m headers \u001B[38;5;241m=\u001B[39m {\n\u001B[0;32m     11\u001B[0m     \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mX-Auth-Token\u001B[39m\u001B[38;5;124m'\u001B[39m: os\u001B[38;5;241m.\u001B[39mgetenv(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mROCKETCHAT_API_KEY\u001B[39m\u001B[38;5;124m'\u001B[39m),\n\u001B[0;32m     12\u001B[0m     \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mX-User-Id\u001B[39m\u001B[38;5;124m'\u001B[39m: os\u001B[38;5;241m.\u001B[39mgetenv(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mROCKETCHAT_USER_ID\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[0;32m     13\u001B[0m }\n\u001B[0;32m     14\u001B[0m response \u001B[38;5;241m=\u001B[39m requests\u001B[38;5;241m.\u001B[39mget(url, headers\u001B[38;5;241m=\u001B[39mheaders, params\u001B[38;5;241m=\u001B[39mparams)\n\u001B[1;32m---> 15\u001B[0m \u001B[43mresponse\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mraise_for_status\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m     16\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m     17\u001B[0m     \u001B[38;5;28;01mreturn\u001B[39;00m response\u001B[38;5;241m.\u001B[39mjson()\n",
+      "File \u001B[1;32m~\\anaconda3\\lib\\site-packages\\requests\\models.py:1021\u001B[0m, in \u001B[0;36mResponse.raise_for_status\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m   1016\u001B[0m     http_error_msg \u001B[38;5;241m=\u001B[39m (\n\u001B[0;32m   1017\u001B[0m         \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mstatus_code\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m Server Error: \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mreason\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m for url: \u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39murl\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m\"\u001B[39m\n\u001B[0;32m   1018\u001B[0m     )\n\u001B[0;32m   1020\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m http_error_msg:\n\u001B[1;32m-> 1021\u001B[0m     \u001B[38;5;28;01mraise\u001B[39;00m HTTPError(http_error_msg, response\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m)\n",
+      "\u001B[1;31mHTTPError\u001B[0m: 400 Client Error: Bad Request for url: https://chat.gwdg.de/api/v1/channels.history?roomId=6243f60f3bb97e25a63651be"
+     ]
+    }
+   ],
+   "source": [
+    "\n",
+    "msgs = call_rocket_chat_api('channels.history', roomId='sibAdkwHQzqJChxH9').get('messages')"
+   ],
+   "metadata": {
+    "collapsed": false,
+    "ExecuteTime": {
+     "end_time": "2024-01-14T21:51:18.225934200Z",
+     "start_time": "2024-01-14T21:51:17.994275Z"
+    }
+   },
+   "id": "709f6d8c845a0056"
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 2
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython2",
+   "version": "2.7.6"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
-- 
GitLab