KVService.php

View the content of the Karaoke-Version sample "KVService.php", download the file and view its result after execution.

Download file
FileResult
<?php

class KVService
{
    /**
     * Replace with your affiliateId and the service URL you want to use.
     */

    const AFFILIATE_ID = 77;
    const SERVICE_URL = 'http://www.karaoke-version.com/api/';

    /**
     * Query the webservice using curl
     * @param string $fullQuery
     * @return string Webservice response
     */
    private static function _curlQuery($fullQuery)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $fullQuery);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $jsonResultStr = curl_exec($ch);
        curl_close($ch);
        return $jsonResultStr;
    }

    /**
     * Query the webservice using standard PHP function (file_get_contents)
     * @param string $fullQuery
     * @return string Webservice response
     */
    private static function _standardQuery($fullQuery)
    {
        return @file_get_contents($fullQuery);
    }

    /**
     * Get the full query URL from the given kind and query
     * @param string $kind
     * @param array $query
     * @return string Full query URL
     */
    public static function getFullQueryUrl($kind, $query)
    {
        if (!isset($query["affiliateId"])) {
            $query["affiliateId"] = self::AFFILIATE_ID;
        }

        $jsonQuery = json_encode($query);
        return self::SERVICE_URL . $kind . '/?query=' . urlencode($jsonQuery);
    }

    /**
     * Query the webservice
     * @param string $kind The action kind (artist, song, songfile, search)
     * @param array $query Your query
     * @return stdClass Webservice response.
     * @throws Exception If the webservice encountered an error
     */
    public static function query($kind, $query)
    {
        $fullQuery = static::getFullQueryUrl($kind, $query);

        $jsonResultStr = null;
        if (in_array('curl', get_loaded_extensions())) {
            $jsonResultStr = self::_curlQuery($fullQuery);
        } else {
            $jsonResultStr = self::_standardQuery($fullQuery);
        }

        $result = json_decode($jsonResultStr);
        if (isset($result->error)) {
            throw new Exception("KV service error [" . $result->error->code . "]: " . $result->error->message);
        }
        return $result;
    }

    /**
     * Shortcut for KVService::query('artist', $query)
     * @param array $query
     * @return stdClass
     * @throws Exception
     */
    public static function queryArtist($query)
    {
        return static::query('artist', $query);
    }

    /**
     * Shortcut for KVService::query('song', $query)
     * @param array $query
     * @return stdClass
     * @throws Exception
     */
    public static function querySong($query)
    {
        return static::query('song', $query);
    }

    /**
     * Shortcut for KVService::query('songfile', $query)
     * @param array $query
     * @return stdClass
     * @throws Exception
     */
    public static function querySongFile($query)
    {
        return static::query('songfile', $query);
    }

    /**
     * Shortcut for KVService::query('search', $query)
     * @param array $query
     * @return stdClass
     * @throws Exception
     */
    public static function querySearch($query)
    {
        return static::query('search', $query);
    }

}