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

    /**
     * 根目录服务
     * @class RootServer
     * @moduleEx ServiceModule
     * @extends BaseServer
     * @param {Object} options 构造参数
     * @param {String} [options.url = 无] 服务基地址
     * @example
     * // ES5引入方式
     * const { RootServer } = Zondy.Service
     * // ES6引入方式
     * import { RootServer } from "@mapgis/webclient-common"
     * //初始化RootServer服务对象
     *     const rootServer = new RootServer({
     *       //服务基地址
     *       url: 'http://192.168.82.89:8089/igs/rest/services'
     *     })
     */
    class RootServer extends BaseServer {
      constructor(options) {
        super(options)
      }

      /**
       * @function RootServer.prototype.queryRootServiceList
       * @description 查询根文件夹下的服务列表,后端接口为/igs/rest/services
       * @param options 查询参数
       * @param {Function} [options.success = 无] 查询成功回调函数，若使用Promise方式则不必填写
       * @param {Function} [options.failure = 无] 查询失败回调函数，若使用Promise方式则不必填写
       * @param {String} [options.name = 无] 服务名关键字
       * @param {String} [options.protocols = 无] 服务类型
       * @return {Promise<Object>}
       * @example
       * //回调方式
       *  rootServer.queryRootServiceList({
       *   //成功回调函数
       *   success: function (result) {
       *     console.log('请求成功：', result);
       *   }
       * });
       * //promise方式
       * rootServer.queryRootServiceList({
       * }).then(function (result) {
       *   console.log('请求成功：', result);
       * }).catch(function (result) {
       *   console.log('请求失败：', result);
       * });
       */
      queryRootServiceList(options) {
        // 设置PATH PARAMETERS校验
        const checkPathOpts = {}

        // 设置QUERY PARRAMETERS校验
        const checkQueryOpts = {
          name: {
            type: 'String'
          },
          protocols: {
            type: 'String'
          }
        }

        // 调用基类的查询信息方法
        return this._queryByParameters(
          options,
          checkPathOpts,
          checkQueryOpts,
          // 拼装返回基地址
          function (url) {
            return `${url}?f=json`
          }
        )
      }

      /**
       * @function RootServer.prototype.queryFolderServiceList
       * @description 获取指定文件夹下的服务列表
       * @param options 查询参数
       * @param {Function} [options.success = 无] 查询成功回调函数，若使用Promise方式则不必填写
       * @param {Function} [options.failure = 无] 查询失败回调函数，若使用Promise方式则不必填写
       * @param {String} [options.folder = 无] 文件夹名称,必填
       * @param {String} [options.name = 无] 服务名关键字
       * @param {String} [options.protocols = 无] 服务类型
       * @return {Promise<Object>}
       * @example
       * //回调方式
       *  rootServer.queryFolderServiceList({
       *   //设置folder文件夹名称
       *   floder:'Map'
       *   //成功回调函数
       *   success: function (result) {
       *     console.log('请求成功：', result);
       *   }
       * });
       * //promise方式
       * rootServer.queryFolderServiceList({
       *   //设置folder文件夹名称
       *   floder:'Map'
       * }).then(function (result) {
       *   console.log('请求成功：', result);
       * }).catch(function (result) {
       *   console.log('请求失败：', result);
       * });
       */
      queryFolderServiceList(options) {
        // 设置PATH PARAMETERS校验
        const checkPathOpts = {
          folder: 'String'
        }

        // 设置QUERY PARRAMETERS校验
        const checkQueryOpts = {
          name: {
            type: 'String'
          },
          protocols: {
            type: 'String'
          }
        }

        // 调用基类的查询信息方法
        return this._queryByParameters(
          options,
          checkPathOpts,
          checkQueryOpts,
          // 拼装返回基地址
          function (url) {
            return `${url}/${options.folder}?f=json`
          }
        )
      }
    }

    Zondy.Service.RootServer = RootServer
    export default RootServer