<?php

namespace App\Packages\Core\Service;

use yedincisenol\DynamicLinks\DynamicLink;
use yedincisenol\DynamicLinks\DynamicLinks;
use yedincisenol\DynamicLinks\Exception\ApikeyException;
use yedincisenol\DynamicLinks\Exception\ConfigException;
use yedincisenol\DynamicLinks\Exception\InvalidArgumentException;
use yedincisenol\DynamicLinks\ShortLink;

class DeepLinkService
{

    /**
     * @param string $endpoint
     * @return string
     */
    public static function createBasicLink($endpoint)
    {
        $link = config('deeplink.base_url');

        $link .= $endpoint;

        return $link;
    }

    /**
     * @param string $endpoint
     * @return ShortLink
     * @throws ApikeyException
     * @throws ConfigException
     * @throws InvalidArgumentException
     */
    public static function createLink($endpoint = '')
    {
        $dynamicLink = new DynamicLinks([
            'api_key' => config('services.firebase.api_key'),
            'dynamic_link_domain' => config('services.firebase.dynamic_link_domain'),
        ]);

        $link = config('services.firebase.dynamic_app_domain') . $endpoint;

        if ($android_name = config('services.firebase.android_app_name')) {
            $link .= '&apn=' . $android_name;
        }

        if ($ios_name = config('services.firebase.ios_app_name')) {
            $link .= '&ibi=' . $ios_name;
        }

        if ($landing_page = config('services.firebase.landing_page')) {
            $link .= '&ofl=' . $landing_page;
        }

        $link = new DynamicLink($link);

        return $dynamicLink->create($link, 'UNGUESSABLE');
    }

}