Files
jotamed_outlook/scripts/outlook-token.sh

66 lines
2.3 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# Outlook Token Manager
# Usage: outlook-token.sh [refresh|get|test]
CONFIG_DIR="$HOME/.outlook-mcp"
CONFIG_FILE="$CONFIG_DIR/config.json"
CREDS_FILE="$CONFIG_DIR/credentials.json"
# Check if config exists
if [ ! -f "$CONFIG_FILE" ] || [ ! -f "$CREDS_FILE" ]; then
echo "Error: Outlook not configured. Run setup first."
echo "Missing: $CONFIG_FILE or $CREDS_FILE"
exit 1
fi
# Load credentials
CLIENT_ID=$(jq -r '.client_id' "$CONFIG_FILE")
CLIENT_SECRET=$(jq -r '.client_secret' "$CONFIG_FILE")
ACCESS_TOKEN=$(jq -r '.access_token' "$CREDS_FILE")
REFRESH_TOKEN=$(jq -r '.refresh_token' "$CREDS_FILE")
case "$1" in
refresh)
echo "Refreshing token..."
RESPONSE=$(curl -s -X POST "https://login.microsoftonline.com/common/oauth2/v2.0/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&refresh_token=$REFRESH_TOKEN&grant_type=refresh_token&scope=https://graph.microsoft.com/Mail.ReadWrite https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/Calendars.ReadWrite offline_access")
if echo "$RESPONSE" | jq -e '.access_token' > /dev/null 2>&1; then
echo "$RESPONSE" > "$CREDS_FILE"
echo "Token refreshed successfully"
else
echo "Error refreshing token:"
echo "$RESPONSE" | jq '.error_description // .'
exit 1
fi
;;
get)
echo "$ACCESS_TOKEN"
;;
test)
echo "Testing connection..."
RESULT=$(curl -s "https://graph.microsoft.com/v1.0/me/mailFolders/inbox" \
-H "Authorization: Bearer $ACCESS_TOKEN")
if echo "$RESULT" | jq -e '.totalItemCount' > /dev/null 2>&1; then
TOTAL=$(echo "$RESULT" | jq '.totalItemCount')
UNREAD=$(echo "$RESULT" | jq '.unreadItemCount')
echo "✓ Connected! Inbox: $TOTAL emails ($UNREAD unread)"
else
echo "✗ Connection failed. Try: outlook-token.sh refresh"
echo "$RESULT" | jq '.error.message // .'
exit 1
fi
;;
*)
echo "Usage: outlook-token.sh [refresh|get|test]"
echo " refresh - Refresh the access token"
echo " get - Print current access token"
echo " test - Test the connection"
;;
esac