import os
import requests
from google.oauth2.credentials import Credentials
from google.auth.transport.requests import Request

def test_fetch_reviews():
    creds = Credentials.from_authorized_user_file('token.json')
    
    # Refresh token if needed
    if creds.expired and creds.refresh_token:
        creds.refresh(Request())

    headers = {
        'Authorization': f'Bearer {creds.token}'
    }

    # We need an account ID. Let's fetch it first.
    account_url = "https://mybusinessaccountmanagement.googleapis.com/v1/accounts"
    res = requests.get(account_url, headers=headers)
    
    if res.status_code != 200:
        print("Error getting accounts:", res.text)
        return
        
    accounts = res.json().get('accounts', [])
    if not accounts:
        print("No accounts found.")
        return
        
    account_name = accounts[0]['name']  # format: accounts/1234
    print(f"Using account: {account_name}")
    
    # Test with one of the user's location IDs
    # e.g. location_id = "6212010560520025465"
    location_id = "6212010560520025465"
    location_name = f"locations/{location_id}"
    
    # The reviews endpoint is mybusiness.googleapis.com/v4/accounts/{accountId}/locations/{locationId}/reviews
    url = f"https://mybusiness.googleapis.com/v4/{account_name}/{location_name}/reviews"
    
    print(f"Fetching reviews from: {url}")
    response = requests.get(url, headers=headers)
    
    print(f"Status: {response.status_code}")
    if response.status_code != 200:
        print(f"Error: {response.text}")
    data = response.json()
    
    reviews = data.get('reviews', [])
    print(f"Found {len(reviews)} reviews.")
    if reviews:
        print("Sample review:")
        review = reviews[0]
        print(f"  ID: {review.get('reviewId')}")
        print(f"  Rating: {review.get('starRating')}")
        print(f"  Comment: {review.get('comment', '')[:100]}...")
        print(f"  Time: {review.get('createTime')}")

if __name__ == '__main__':
    test_fetch_reviews()
