#!/usr/bin/env python3
"""
MosaicEarth QGIS 3.x Connector & PyQGIS Console Bridge (v2.1)
Run inside QGIS (Plugins -> Python Console -> Show Editor) or from the command line
to export the active QGIS raster/vector/point-cloud layer directly into a MyEarth
Project -> Survey -> Task subfolder, or stream MyEarth COG/XYZ layers into QGIS.
"""
import json
import os
import urllib.request

MOSAICEARTH_URL = os.environ.get("MOSAICEARTH_URL", "https://next.mosaicearth.app")

def push_qgis_layer_to_myearth(email: str, password: str, project_name: str = "QGIS Workspace", survey_name: str = "01 GIS Export", layer_name: str = "QGIS Orthophoto.tif", lat: float = 41.9794, lon: float = 2.8214, fmt: str = "TIF"):
    url = f"{MOSAICEARTH_URL.rstrip('/')}/api/v2/connectors/sync"
    payload = {
        "email": email,
        "password": password,
        "connector": "qgis",
        "project_name": project_name,
        "survey_name": survey_name,
        "task_name": f"QGIS Export - {layer_name}",
        "asset_title": layer_name,
        "source_format": fmt.upper(),
        "latitude": lat,
        "longitude": lon,
    }
    req = urllib.request.Request(
        url,
        data=json.dumps(payload).encode("utf-8"),
        headers={"Content-Type": "application/json", "User-Agent": "MosaicEarth-QGIS-Connector/2.1"},
        method="POST",
    )
    with urllib.request.urlopen(req, timeout=30) as resp:
        result = json.loads(resp.read().decode("utf-8"))
    print("[MosaicEarth QGIS Connector] Synced successfully:", result)
    return result

if __name__ == "__main__":
    print(f"MosaicEarth QGIS 3.x Connector ready for {MOSAICEARTH_URL}.")
    print("Call push_qgis_layer_to_myearth(email, password, project_name, survey_name, layer_name, lat, lon) in QGIS Python Console.")
