# Coriolis ship export

import base64
import gzip
import json
import io

# Migrate settings from <= 3.01
from config import config

if not config.get('shipyard_provider') and config.getint('shipyard'):
    config.set('shipyard_provider', 'Coriolis')

config.delete('shipyard')


def plugin_start3(_):
    return 'Coriolis'


def shipyard_url(loadout, is_beta):
    """Return a URL for the current ship"""
    # most compact representation
    string = json.dumps(loadout, ensure_ascii=False, sort_keys=True, separators=(',', ':')).encode('utf-8')
    if not string:
        return False

    out = io.BytesIO()
    with gzip.GzipFile(fileobj=out, mode='w') as f:
        f.write(string)

    encoded = base64.urlsafe_b64encode(out.getvalue()).decode().replace('=', '%3D')
    url = 'https://beta.coriolis.io/import?data=' if is_beta else 'https://coriolis.io/import?data='

    return f'{url}{encoded}'