import Api from './Api'

export default class Emitter{
   static DEFAULT = "default"
   static RULE="rule"
   static CHECK="check"

   static execute(trnName,path,data,ruleType=this.RULE){
        let url = `${trnName}/execute${ruleType.substring(0,1).toUpperCase()}${ruleType.substring(1)}/${path.toLowerCase()}`
        return Api.post(url,data);
   }
   /**
    * 执行具体交易路径的rule
    * @param {*} trnName 交易名称
    * @param {*} data 数据,可以为函数,结构(或者返回的结构)需要为{key1:val1,key2:val2...params:{}}
    * @param {*} path rule路径
    * @returns 执行结果,使用await,.then均可接收结果
    */
   static executeRule(trnName,data,path){
        return this.execute(trnName,data,path)
   }
    /**
    * 执行具体交易路径的check
    * @param {*} trnName 交易名称
    * @param {*} data 数据,可以为函数,结构(或者返回的结构)需要为{key1:val1,key2:val2...params:{}}
    * @param {*} path rule路径
    * @returns 执行结果,使用await,.then均可接收结果
    */
   static executeCheck(trnName,data,path){
        return this.execute(trnName,data,path,this.CHECK)
   }
    /**
    * 执行具体交易路径的default
    * @param {*} trnName 交易名称
    * @param {*} data 数据,可以为函数,结构(或者返回的结构)需要为{key1:val1,key2:val2...params:{}}
    * @param {*} path rule路径
    * @returns 执行结果,使用await,.then均可接收结果
    */
   static executeDefault(trnName,data,path){
        return this.execute(trnName,data,path,this.DEFAULT)
    }
}