{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#!pip install websockets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import requests\n",
    "import json\n",
    "import base64\n",
    "from dotenv import dotenv_values\n",
    "\n",
    "# Connect to a websocket server\n",
    "import asyncio\n",
    "import websockets\n",
    "\n",
    "config = dotenv_values(\".test.env\")\n",
    "\n",
    "authApiUrl = config['BIGSCREEN_API_URL']\n",
    "adminApiUrl = config['BIGSCREEN_ADMIN_API_URL']\n",
    "cloudApiUrl = config['BIGSCREEN_CLOUD_API_URL']\n",
    "wssUrl = config['BIGSCREEN_WSS_URL']\n",
    "apiBearerToken = config['BIGSCREEN_API_KEY']\n",
    "\n",
    "headers = {\n",
    "    \"Content-Type\": \"application/json\",\n",
    "    \"Authorization\": f\"Bearer {apiBearerToken}\"\n",
    "}\n",
    "\n",
    "def getHeaders(accessToken):\n",
    "    return {\n",
    "        \"Content-Type\": \"application/json\",\n",
    "        \"Authorization\": f\"Bearer {apiBearerToken}\",\n",
    "        \"x-access-token\": accessToken\n",
    "    }\n",
    "\n",
    "# Convert wssPayload to json, then convert to base64 string\n",
    "def getWebsocketPayload(accessToken):\n",
    "    wssPayload = {\n",
    "        \"accessToken\": accessToken,\n",
    "        \"systemInfo\": {\n",
    "            \"deviceUniqueIdentifier\": \"python_notebook\"\n",
    "        }\n",
    "    }\n",
    "    return base64.b64encode(json.dumps(wssPayload).encode(\"utf-8\")).decode(\"utf-8\")\n",
    "\n",
    "\n",
    "def login(email, password):\n",
    "    payload = {\n",
    "        \"email\": email,\n",
    "        \"password\": password\n",
    "    }\n",
    "    r = requests.post(f\"{authApiUrl}/login\", headers=headers, json=payload)\n",
    "    return r.headers[\"x-refresh-token\"], r.headers[\"x-access-token\"]\n",
    "\n",
    "payload = {\n",
    "    \"email\": config['ADMIN_ACCOUNT_EMAIL'],\n",
    "    \"password\": config['ADMIN_ACCOUNT_PASSWORD']\n",
    "}\n",
    "\n",
    "r = requests.post(f\"{authApiUrl}/login\", headers=headers, json=payload)\n",
    "print(r.status_code)\n",
    "refreshToken = r.headers[\"x-refresh-token\"]\n",
    "accessToken = r.headers[\"x-access-token\"]\n",
    "\n",
    "def getAdminHeaders():\n",
    "    return {\n",
    "        \"Content-Type\": \"application/json\",\n",
    "        \"Authorization\": f\"Bearer {apiBearerToken}\",\n",
    "        \"x-access-token\": accessToken\n",
    "    }"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "accountId = \"9585bf75-471a-4290-bd01-16766d7a73f1\"\n",
    "\n",
    "r = requests.get(f\"{cloudApiUrl}/admin/account/{accountId}/social_profiles\", headers=getAdminHeaders())\n",
    "assert r.status_code == 200, f\"status code should be 200 (actual: {r.status_code})\"\n",
    "data = r.json()\n",
    "\n",
    "r = requests.get(f\"{cloudApiUrl}/admin/account/{accountId}/social/graph/friends\", headers=getAdminHeaders())\n",
    "assert r.status_code == 200, f\"status code should be 200 (actual: {r.status_code})\"\n",
    "data = r.json()\n",
    "\n",
    "for item in data:\n",
    "    print(item)\n",
    "    #print(item[\"ownerSocialId\"])\n",
    "\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "r = requests.get(f\"{cloudApiUrl}/admin/account/{accountId}/social/profile\", headers=getAdminHeaders())\n",
    "assert r.status_code == 200, f\"status code should be 200 (actual: {r.status_code})\"\n",
    "data = r.json()\n",
    "print(data)\n",
    "\n",
    "r = requests.get(f\"{cloudApiUrl}/admin/account/{accountId}/social/profile\", headers=getAdminHeaders())\n",
    "assert r.status_code == 200, f\"status code should be 200 (actual: {r.status_code})\"\n",
    "data = r.json()\n",
    "print(data)\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.11"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "369f2c481f4da34e4445cda3fffd2e751bd1c4d706f27375911949ba6bb62e1c"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
