


import json

import requests

from configs.env import PROJECT_ID
from configs.firebase import SERVER_TIMESTAMP
from functions.Shopify.Auth import (apiVersion, createHeader,
                                    deleteFulfillmentService)
from functions.Shops import getShopById, getShopByPlatformShopId
from functions.Users import deleteProducts
from functions.Webhooks.SaveWebhook import saveWebhook


def registerWebhook(shopId, topic):
    shop = getShopById(shopId, True)
    if shop:
        url = f"{shop.get('url')}/admin/api/{apiVersion}/webhooks.json"
        uid = shop.get("uid")
        headers = createHeader(accessToken=shop.get("accessToken"))
        data = json.dumps(dict(webhook=dict( 
                topic=topic,
                address=f"https://riverr-enterprise-integrations-dot-{PROJECT_ID}.uc.r.appspot.com/shopify/webhooks/{shopId}/{topic}",
                format="json"
        )))
        res = requests.post(url,
            headers=headers,
            json=data
        )
        if res.status_code == 201:
            webhook = res.json().get('webhook')
            saveWebhook(
                    uid,
                    shopId,
                    webhook.get('id'), 
                    webhook.get('topic'),
                    webhook.get('address'),
                    topic=webhook.get('topic'),
                    createdAt=SERVER_TIMESTAMP,
                    updatedAt=SERVER_TIMESTAMP
            )
            return res.json()
        else:
            print(res.json())
    return None

def shopUninstalled(params):
    id = params.get("id")
    if id:
        shop = getShopByPlatformShopId(id)
        if shop:
            shopId = shop.get("id")
            uid = shop.get("uid")
            deleteFulfillmentService(shopId)
            deleteProducts(uid, shopId)
            return shopId
    return None