import functools

from gmz.credentials import *
from gmz.lib.shopwarerest import ShopwareSession
from gmz.lib.plentyrest import PlentySession, PlentyAPI


plentyapi = None

def withplenty(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        global plentyapi
        if plentyapi is None:
            session = PlentySession(PLENTYURI, PLENTYUSER, PLENTYSECRET)
            session.open()
            plentyapi = PlentyAPI(session)
        kwargs['plenty'] = plentyapi
        return func(*args, **kwargs)
    return wrapper


def withshopware(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        with ShopwareSession(SHOPWAREURI, SHOPWAREUSER,
                             SHOPWARESECRET) as sws:
            kwargs['sws'] = sws
            return func(*args, **kwargs)
    return wrapper

def closeplenty():
    global plentyapi
    plentyapi.session.close()
    plentyapi = None

