    import BaseServer from '../BaseServer'
    import { Zondy } from '../../base'
    import { defaultValue } from '../../util'

    /**
     * 矢量瓦片服务
     * @class VectorTileServer
     * @moduleEx ServiceModule
     * @extends BaseServer
     * @param {Object} options 构造参数
     * @param {String} [options.url] 服务基地址
     * @example
     * // ES5引入方式
     * const { VectorTileServer } = Zondy.Service
     * // ES6引入方式
     * import { VectorTileServer } from "@mapgis/webclient-common"
     * const vectorTileServer = new VectorTileServer({
     *   url: 'http://localhost:8089/igs/rest/services/中国行政区/VectorTileServer',
     *   requestInterceptor: {
     *     before: function (config) {
     *       return config;
     *     },
     *     failure: function (error) {
     *       console.log("请求发送失败(拦截器):", error)
     *     }
     *   },
     *   responseInterceptor: {
     *     success: function (result) {
     *       console.log("请求成功拦截响应")
     *       return result;
     *     },
     *     failure: function (result) {
     *       console.log("请求失败拦截响应")
     *       return result;
     *     }
     *   }
     * });
     */
    class VectorTileServer extends BaseServer {
      constructor(options) {
        super(options)
      }

      /**
       * 获取矢量瓦片字体
       * @param options 查询参数
       * @param {Function} [options.success] 查询成功回调函数，若使用Promise方式则不必填写
       * @param {Function} [options.failure] 查询失败回调函数，若使用Promise方式则不必填写
       * @example
       * // 回调方式
       * vectorTileServer.queryServerInfo({
       *   success: function (result) {
       *     console.log('请求成功：', result);
       *   },
       *   failure: function (result) {
       *     console.log('请求失败：', result);
       *   }
       * });
       * // promise方式
       * vectorTileServer.queryServerInfo().then(function (result) {
       *   console.log('请求成功：', result);
       * }).catch(function (result) {
       *   console.log('请求失败：', result);
       * })
       */
      getFonts(options) {
        // 调用基类的查询信息方法
        return this._querySimpleInfo(options, function (url) {
          // igs1.0 请求数据逻辑
          if (url && url.indexOf('igs/rest/mrms/tile') > -1) {
            url = url.replace('mrms/tile', 'mrcs/vtiles')
            return `${url}/fonts`
          }
          // 拼装返回基地址
          return `${url}/fonts?f=json`
        })
      }

      /**
       * 获取矢量瓦片sprite图
       * @param options 查询参数
       * @param {Function} [options.success] 查询成功回调函数，若使用Promise方式则不必填写
       * @param {Function} [options.failure] 查询失败回调函数，若使用Promise方式则不必填写
       * @param {String} [options.format] sprite图格式,支持后缀为.json或.png
       * @example
       * // 回调方式
       * vectorTileServer.getSprite({
       *   success: function (result) {
       *     console.log('请求成功：', result);
       *   },
       *   failure: function (result) {
       *     console.log('请求失败：', result);
       *   }
       * });
       * // promise方式
       * vectorTileServer.getSprite().then(function (result) {
       *   console.log('请求成功：', result);
       * }).catch(function (result) {
       *   console.log('请求失败：', result);
       * })
       */
      getSprite(options) {
        // 调用基类的查询信息方法
        return this._querySimpleInfo(options, function (url) {
          // igs1.0 请求数据逻辑
          if (url && url.indexOf('igs/rest/mrms/tile') > -1) {
            url = url.replace('mrms/tile', 'mrcs/vtiles')
            return `${url}/sprite${defaultValue(options.param, '.json')}`
          }
          // 拼装返回基地址
          return `${url}/sprites/sprite${defaultValue(options.param, '.json')}`
        })
      }

      /**
       * 获取矢量瓦片样式
       * @param options 查询参数
       * @param {Function} [options.success] 查询成功回调函数，若使用Promise方式则不必填写
       * @param {Function} [options.failure] 查询失败回调函数，若使用Promise方式则不必填写
       * @example
       * // 回调方式
       * vectorTileServer.getStyle({
       *   success: function (result) {
       *     console.log('请求成功：', result);
       *   },
       *   failure: function (result) {
       *     console.log('请求失败：', result);
       *   }
       * });
       * // promise方式
       * vectorTileServer.getStyle().then(function (result) {
       *   console.log('请求成功：', result);
       * }).catch(function (result) {
       *   console.log('请求失败：', result);
       * })
       */
      getStyle(options) {
        // 调用基类的查询信息方法
        return this._querySimpleInfo(options, function (url) {
          // igs1.0 请求数据逻辑
          if (url && url.indexOf('igs/rest/mrms/tile') > -1) {
            return url.replace('mrms/tile', 'mrcs/vtiles/0')
          }
          // 拼装返回基地址
          return `${url}/style?f=json`
        })
      }
    }

    Zondy.Service.VectorTileServer = VectorTileServer
    export default VectorTileServer