#!/usr/bin/env python3
"""Test CSV feed downloads per shop via Webgains API."""
import requests

TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxMDAwMzEiLCJqdGkiOiIwNjM5ODEwYzQ0YzM1MTBlZmZiMGRkYWNiM2EyNWFlNTg2YzFmNmQ5ODNjNGQ2MDA4NzkwZmM0NTkzY2EyNjg4ZGViZDE4NTgwOThmYjJjYiIsImlhdCI6MTc3MTUxNjc4OS44MzAxMzUsIm5iZiI6MTc3MTUxNjc4OS44MzAxMzcsImV4cCI6MjA4NzA0OTU4OS44MjcwODgsInN1YiI6IjIwMTcwOCIsInNjb3BlcyI6W119.ZxlCDsyBI7_SNUWjO-PUxDYKvQVfuUBzU5n-SgqHdAZCnOj9253yVcJIS5NRXJLrnyx0E_9bn8ymfXS71cvPISA4hPAlKCSMjdkv9f2k2FFwdAlQQ6mdhBB2m9dzHUIn34QwA8s4-ikB1ATKIZeqiJL-3Gh9eiMYPpvaJdCCjN-oGPMhhlehkgA04cZSgwy6HfKgb6uPvUSG9w_tvN8U06uEHKV11DedQHNWWGzuXpd2FEL3baV0z9KjSNMZsJZHx2yHUb6gVWJwaR7_louahMvrPXG-YLgnGvNMcPDPjm-z5HJ-JKcPv9_FBqAYGItZxgeGgVoS8MVhW6lc1a-6CvYtVanfXF42MPPNP-Qq76qRtHPLRBdkIATMuBxVJrMzlprT3n4F0sUUltGR4ixZuzMUm5LeyPMHgmjy2UfYzsl9eVqx0oJCmKUyY9maBXwFLJa8J1NHM_nWp3hPpCGkMyhzHK1DIf_z8Wirg1hp5vKts93eERWJBlQwhucUUS_KnZeC_gVaQ7kT4jCwaEWkpPxPxyXWRoK0mcYS_JGz3JbpVhRLj5DVYIB9k54DXqjYlCx8ezJZE9sf2SX3VWvPvD1xSQD1caTCm0To0B-MkeU1YpEfWdUslpCJXrpOy2Wbs8iDHR1BzNrMnOEr4zbz_EoB4JJe3tGTGjzNLNIw6XI"
PUBLISHER_ID = "1347930"
CAMP_ID = "1622230"

HEADERS = {"Authorization": f"Bearer {TOKEN}"}

# Feed IDs per shop (from our earlier API investigation)
# Only NL shops (Van Arendonk BE excluded)
FEEDS = {
    "Van Arendonk NL": 17108,
    "Sneakermood NL & BE": 16158,
    "Patta NL & BE (newest)": 36168,
    "Baskets NL & BE": 18588,
    "Dickies Life NL": 18808,
    "Calico Club": 19868,
    "Exclusivexitems NL & BE": 20068,
    "SikSilk Benelux": 25538,
    "Polar NL": 0,  # need to find feed ID
}

for shop, feed_id in FEEDS.items():
    if feed_id == 0:
        print(f"\n{shop}: SKIPPED (no feed ID)")
        continue
    
    url = f"https://platform-api.webgains.com/auth/publishers/{PUBLISHER_ID}/campaigns/{CAMP_ID}/feeds/products"
    params = {"feedIds[]": feed_id, "format": "csv"}
    
    try:
        r = requests.get(url, headers=HEADERS, params=params, timeout=30, stream=True)
        ct = r.headers.get('content-type', '')
        print(f"\n{shop} (feed {feed_id}):")
        print(f"  Status: {r.status_code}, Content-Type: {ct[:60]}")
        
        if r.status_code == 200:
            # Read first 1000 bytes to check format
            chunk = b""
            for c in r.iter_content(1000):
                chunk += c
                if len(chunk) >= 1000:
                    break
            
            text = chunk.decode('utf-8', errors='replace')
            lines = text.split('\n')
            print(f"  Header: {lines[0][:200]}")
            if len(lines) > 1:
                print(f"  Row 1:  {lines[1][:200]}")
            
            # Check total size via Content-Length
            cl = r.headers.get('content-length', 'unknown')
            print(f"  Content-Length: {cl}")
        r.close()
    except Exception as e:
        print(f"\n{shop} (feed {feed_id}): ERROR - {e}")
