from configs.firebase import db
from V2.functions.Applications.main import Application
from V2.functions.Etsy.Auth import EtsyClient
from V2.functions.Shops.main import Shop
from V2.middlewares.auth import API_Error
from V2.Params import Params


def createShippingProfile(params:Params):
    shop = Shop.get(params.args.get('shopId'))
    app = Application.get(shop.appId)
    title = params.args.get("title")
    origin_country_iso = params.args.get("originCountry")
    primary_cost,secondary_cost = params.args.get('primaryCost'),params.args.get('secondaryCost')
    min_processing_time,max_processing_time = params.args.get('minProcessingTime'),params.args.get('maxProcessingTime')
    shippingProfile = dict(
        title = title,
        origin_country_iso=origin_country_iso,
        primary_cost=primary_cost,
        secondary_cost=secondary_cost,
        min_processing_time=min_processing_time,
        max_processing_time=max_processing_time
    )
    url = f"https://openapi.etsy.com/v3/application/shops/{shop.platformShopId}/shipping-profiles"
    client = EtsyClient(app.apiKey, shop)
    res = client.post(url,data=shippingProfile)
    if res.status_code == 200: return res.json()
    raise API_Error(res.text, res.status_code)


def getShippingProfiles(params: Params):
    shop = Shop.get(params.args.get("shopId"))
    app = Application.get(shop.appId)
    client = EtsyClient(app.apiKey, shop)
    res = client.get(f"https://openapi.etsy.com/v3/application/shops/{shop.platformShopId}/shipping-profiles")
    if res.status_code == 200:
        return res.json()
    raise API_Error(res.text, res.status_code)

