    ﻿import {Zondy} from './common/Base';
    import {extend}  from  "./common/Util";
    import {isArray}  from  "./common/Util";

    /**
     * 服务基类
     * @class Zondy.Service.ServiceBase
     * @classdesc 服务基类
     * @param {Object} options 属性键值对
     * @param {String} [options.baseUrl=null] 基地址
     * @param {String} [option.domain = ''] 【domain和（networkProtocol，ip，port）二选一】。域名
     * @param {String} [option.networkProtocol = location.protocol.split(":")[0] || "http"] 【domain和（networkProtocol，ip，port）二选一】。网络协议
     * @param {String} [option.ip = localhost] 【domain和（networkProtocol，ip，port）二选一】。地图服务ip
     * @param {String} [option.port = 6163] 【domain和（networkProtocol，ip，port）二选一】。地图服务端口
     * @param {String} [options.partUrl=null] 服务地址
     */
    class ServiceBase {
        constructor(options) {
            extend(this, options);
            this.baseUrl = options && options.baseUrl ? options.baseUrl : null;
            this.ip = options && options.ip ? options.ip : 'localhost';
            this.port = options && options.port ? options.port : '6163';
            this.partUrl = options && options.partUrl ? options.partUrl : null;
            this.networkProtocol = options &&options.networkProtocol? options.networkProtocol : location.protocol.split(":")[0]||"http";
            /**
             * @public
             * @type {string}
             * 请求使用的域名，基地址
             */
            this.domain = options && options.domain ? options.domain : '';
        }

        // /**
        //  * @function Zondy.Service.ServiceBase.prototype.destroy
        //  * @description 释放资源，将引用的资源属性置空。
        //  */
    //    destroy: function () {
    //        this.fire("destroy", this);
    //    },

        /**
         * @function Zondy.Service.ServiceBase.prototype.getFullUrl
         * @description 获取服务完整的地址
         * @returns url
         */
        getFullUrl() {
            var me = this;
            var url = null;
            if (Zondy.Util.isArray(me.ip)) {
                for (var i = 0; i < me.ip.length; i++) {
                    url = new Array();
                    var _port = null;
                    if (isArray(me.port)) {
                        _port = (me.port)[i] !== undefined ? (me.port)[i] : '6163';
                    }
                    else {
                        _port = me.port !== undefined ? me.port : '6163';
                    }
                    var _partUrl = null;
                    if (isArray(me.partUrl)) {
                        _partUrl = (me.partUrl)[i] !== undefined ? (me.partUrl)[i] : null;
                    }
                    else {
                        _partUrl = me.partUrl !== undefined ? me.partUrl : null;
                    }

                    //url.push(encodeURI(("http://" + (me.ip)[i] + ':' + _port + '/' + me.baseUrl + '/' + _partUrl).trim()));
                    if (me.domain === '') {
                        me.domainStr = me.networkProtocol + '://' + (me.ip)[i] + ':' + _port;
                    } else {
                        me.domainStr = me.domain;
                    }

                    url.push(encodeURI((me.domainStr + '/' + me.baseUrl + '/' + _partUrl).trim()));
                }
            }
            else {
                //url = encodeURI(("http://" + me.ip + ':' + me.port + '/' + me.baseUrl + '/' + me.partUrl).trim());

                if (me.domain === '') {
                    me.domainStr = me.networkProtocol + '://' + me.ip + ':' + me.port;
                } else {
                    me.domainStr = me.domain;
                }
                url = encodeURI((me.domainStr + '/' + me.baseUrl + '/' + me.partUrl).trim());
            }
            return url;
        }

    }
    export {ServiceBase};
    Zondy.Service.ServiceBase = ServiceBase;