diff --git a/app/request/libs/apiUtil.js b/app/request/libs/apiUtil.js index b5e142d47..71c226f47 100644 --- a/app/request/libs/apiUtil.js +++ b/app/request/libs/apiUtil.js @@ -1,6 +1,6 @@ /** * @name 返回通用方法 - * @author 广州银云信息科技有限公司 + * @author EOAPI */ let _LIB_WORKER_THREAD = require('./exec_worker_thread'); let CryptoJS = require('crypto-js'); diff --git a/app/request/libs/common.js b/app/request/libs/common.js index f56663633..99234c82d 100644 --- a/app/request/libs/common.js +++ b/app/request/libs/common.js @@ -1,6 +1,6 @@ /** * @name 通用方法 - * @author 广州银云信息科技有限公司 + * @author EOAPI */ 'use strict'; let _LibsDataConstructor = new (require('./data_constructor').core)(); diff --git a/app/request/libs/data_constructor.js b/app/request/libs/data_constructor.js index d9eb8f7ba..959bc07ea 100644 --- a/app/request/libs/data_constructor.js +++ b/app/request/libs/data_constructor.js @@ -2,7 +2,7 @@ 'use strict'; /** * @name 信息构造器类 - * @author 广州银云信息科技有限公司 + * @author EOAPI */ class main { constructor() { diff --git a/app/request/libs/http.package.js b/app/request/libs/http.package.js index 3e81dae7f..f3571da05 100644 --- a/app/request/libs/http.package.js +++ b/app/request/libs/http.package.js @@ -25,7 +25,7 @@ */ setDefaultRequestHeader(inputHeaderObj = {}, inputOptions = {}) { let TMP_DEAFULT_HEADER_OBJ = { - "User-Agent": "Eolink", + "User-Agent": "Eoapi", "Accept":"*/*" }; if (inputOptions.sendNocacheToken) { diff --git a/app/request/libs/vm2/lib/contextify.js b/app/request/libs/vm2/lib/contextify.js index 55604e401..c6b885d70 100644 --- a/app/request/libs/vm2/lib/contextify.js +++ b/app/request/libs/vm2/lib/contextify.js @@ -801,7 +801,7 @@ BufferMock.allocUnsafeSlow = function allocUnsafeSlow(size) { }; /** * start - * @author 广州银云信息科技有限公司 + * @author EOAPI * @desc Buffer默认取原始的Buffer,不做安全过滤,不能随意更改,会导致脚本步骤crypto执行错误 */ const LocalBuffer = global.Buffer = Contextify.readonly(host.Buffer, BufferMock); diff --git a/build/SetupScripts/nim/license.txt b/build/SetupScripts/nim/license.txt deleted file mode 100644 index 5966a74f3..000000000 --- a/build/SetupScripts/nim/license.txt +++ /dev/null @@ -1,326 +0,0 @@ -欢迎使用 Eolink 服务, Eolink 服务系广州银云信息科技有限公司及其关联公司(下称“本公司”)提供的团队协作咨询指导、API渠道接入、即时通讯平台等各项服务。 Eolink 用户服务协议(下称“本协议”)由本公司与所有使用 Eolink 服务的主体(包括但不限于个人、公司等)(以下简称用户)签订。 - -一、声明与承诺 -(一)在接受本协议或您以本公司允许的其他方式实际使用 Eolink 服务之前,请您仔细阅读本协议的全部内容(特别是以粗体标注的内容)。如果您不同意本协议的任意内容,或者无法准确理解本公司对条款的解释,请不要进行后续操作,包括但不限于不接受本协议,不使用本服务。您使用任何 Eolink 服务即表示接受本协议的全部条款。 - -(二)您同意,如本公司需要对本协议进行变更或编辑的,须通过网站公告的方式提前予以公布,公告期限届满后即时生效;若您在本协议内容公告变更生效后继续使用 Eolink 服务的,表示您已充分阅读、理解并接受变更后的协议内容,也将遵循变更后的协议内容使用 Eolink 服务;若您不同意变更后的协议内容,您应在变更生效前停止使用 Eolink 服务。 - -(三)如您为无民事行为能力人或为限制民事行为能力人,例如您未满 18 周岁,则您应在监护人监护、指导下阅读本协议和使用本服务。若您非自然人,则您确认,在您取得 Eolink 帐号时,或您以其他本公司允许的方式实际使用 Eolink 服务时,您为合法设立并开展经营活动或其他业务的法人或其他组织,且您订立并履行本协议不受您所属、所居住或开展经营活动或其他业务的国家或地区法律法规的排斥。不具备前述条件的,您应立即终止注册或停止使用 Eolink 服务。 - -(四)您承诺: 您将本着合法、合理、善意的目的使用本服务,不利用本服务进行任何违法、侵害他人合法利益、恶意的行为。 - -二、 Eolink 帐号 -(一)注册相关 -除本协议另有规定或相关产品另有规则外,您须在本网站注册并取得本公司提供给您的 Eolink 帐号,并且按照本公司要求提供相关信息完成激活后方可使用本服务。您需使用作为 Eolink 登录名的本人电子邮箱,或者本公司允许的其它方式登录 Eolink 帐号,并且您应当自行为 Eolink 帐号设置密码。您同意: - -1、按照本公司要求准确提供并在取得 Eolink 帐号后及时更新您正确、最新及完整的身份信息及相关资料。若本公司有合理理由怀疑您提供的身份信息或相关资料错误、不实、过时或不完整的,本公司有权暂停或终止向您提供部分或全部 Eolink 服务。本公司对此不承担任何责任,您将承担因此产生的任何直接或间接支出。若因国家法律法规、部门规章或监管机构的要求,本公司需要您补充提供任何身份信息或相关资料时,如您不能及时提供,本公司有权暂停或终止向您提供部分或全部 Eolink 服务。 - -2、您应当准确提供并及时更新您提供的电子邮件地址、联系电话、联系地址、邮政编码等联系方式,以便本公司与您进行及时、有效联系。您应完全独自承担因通过这些联系方式无法与您取得联系而导致的您在使用本服务过程中遭受的任何损失或增加任何费用等不利后果。您理解并同意,您有义务保持您提供的联系方式的有效性,如有变更需要更新的,您应按本公司的要求进行操作。 - -3、您应及时更新您的身份信息及相关资料(包括但不限于身份证、户口本、护照、企业营业执照、批准证书、资质证书等证件或其他身份证明文件、联系方式、作为 Eolink 登录名的邮箱或手机号码、与 Eolink 帐号绑定的邮箱、手机号码等),否则 Eolink 有权将 Eolink 登录名、 Eolink 帐号绑定的邮箱、手机号码开放给其他用户注册或使用。因您未及时更新资料导致的一切后果,均应由您自行承担,该后果包括但不限于导致本服务无法提供或提供时发生任何错误、 Eolink 帐号被别人盗用。 - -4、您确认,本公司有权在本公司认为的适当情形时要求验证核实您的有效身份证件或其他必要文件,且完成本公司要求的相关身份认证。您应积极配合,否则本公司有权限制或停止向您提供部分或全部 Eolink 服务。 - -5、您确认,申请页面提示填写的企业/个人即为本网站服务对象,若申请后您愿继续使用原用户登录名及密码但变更服务对象的,应及时通知本公司,完成变更手续。 - -(二)帐号安全 -您须自行负责对您的用户名和密码保密,且须对您在该用户名和密码下发生的所有活动(包括但不限于信息披露、发布信息、网上点击同意或提交各类规则协议、网上续签协议或购买服务等)承担责任,您同意: - -1、本公司可以通过您的 Eolink 登录名和密码或扫描二维码或者本公司认可的其他方式识别您的身份,您应当对此类:Eolink 登录名、密码、校验码、身份识别信息等进行妥善保管,对于因 Eolink 登录名、密码、校验码、身份识别信息等泄露所致的损失由您自行承担。您保证不向其他任何人泄露您的 Eolink 登录名、密码、校验码以及身份信息等,亦不使用其他任何人的 Eolink 登录名、密码、校验码、身份识别信息等。本公司亦可能通过本服务应用您使用的其他产品或设备识别您的指示,您应当妥善保管处于您或应当处于您掌控下的这些产品或设备, 对于这些产品或设备因非您本人使用或遗失所致的任何损失,由您自行承担。 - -2、您同意,(a)如您发现有他人冒用或盗用您的 Eolink 登录名及密码或任何其他未经合法授权之情形,或发生与您的 Eolink 帐号关联的手机或其他设备遗失或其他可能危及到您的 Eolink 帐号安全情形时,您应立即以有效方式通知本公司,向本公司申请暂停相关 Eolink 服务;及(b)确保您在持续登录网站结束时,以正确步骤离开网站。本公司不能也不会对因您未能遵守本款约定而发生的任何损失、损毁及其他不利后果负责。您理解本公司对您的请求采取行动需要合理期限,在此之前,本公司对已执行的指令及(或)所导致的您的损失不承担任何责任。 - -3、因他人未经授权使用您的用户名和密码造成的损失由您自行承担或依法由擅用人承担,本网站尽力保证您的帐号安全但不保证您帐号安全的绝对性。 - -4、您确认,您应自行对您的 Eolink 帐号负责,只有您本人及您制定的公司员工方可使用该帐号。该帐号不可转让、不可赠与、不可继承,但帐号内的相关财产权益可被依法继承。 - -5、您同意,基于运行和交易安全的需要,本公司可以暂时停止提供或者限制本服务部分功能,或提供新的功能,在任何功能减少、增加或者变化时,只要您仍然使用本服务,表示您仍然同意本协议或者变更后的协议。 - -6、本公司有权了解您使用本服务的真实交易背景及目的,您应如实提供本公司所需的真实、全面、准确的信息或资料;如果本公司有合理理由怀疑您提供虚假交易信息的,本公司有权暂时或永久限制您所使用本服务的部分或全部功能。 - -(三)注销相关 -在需要终止使用本服务时,您可以申请注销您的 Eolink 帐号,您同意: - -1、您所申请注销的 Eolink 帐号应当是您的 Eolink 帐号。如您需要注销您的 Eolink 帐号,您应当依照本公司规定的程序进行 Eolink 帐号注销。 - -2、 Eolink 帐号注销将导致本公司终止为您提供本服务,本协议约定的双方的权利义务终止(依本协议其他条款另行约定不得终止的或依其性质不能终止的除外),同时您还仍应对您在注销 Eolink 帐号前且使用本服务期间的行为承担相应责任,包括但不限于可能产生的违约责任、损害赔偿责任及履约义务,同时本公司仍可保有您的相关信息。 - -3、您申请注销的 Eolink 帐号应当处于正常状态,即您的 Eolink 帐号的帐号信息和用户信息是最新、完整、正确的,且该帐号可以使用所有 Eolink 服务功能。帐号信息或用户信息过时、缺失、不正确的帐号或被暂停或限制或终止提供服务的 Eolink 帐号不能被申请注销。 - -4、您申请注销的 Eolink 帐号应当不存在任何由于该帐号被注销而导致的未了结的合同关系与其他基于该帐号的存在而产生或维持的权利义务,及本公司认为注销该帐号会由此产生未了结的权利义务而产生纠纷的情况。如不符合前述任何情况的,您不能申请注销该帐号。 - -5、您理解并同意,如您在网站有欺诈、发布或销售伪劣商品、侵犯他人合法权益或其他严重违反网站规则的行为的,本公司有权注销您名下的全部或部分 Eolink 帐号,您将不能再用该帐号的 Eolink 登录名登录网站,所有服务将同时终止。 - -三、有关 Eolink 服务 -(一)服务内容 -1、您有权利享受 Eolink 提供的团队协作咨询指导、API渠道接入、即时通讯平台等各项服务,并有权利在接受 Eolink 提供的服务时获得 Eolink 的技术支持、咨询等服务,服务内容详见 Eolink 网站。。 - -2、您授权本公司可以通过向第三方审核您的身份和资格,并取得您使用本服务的相关资料。 - -3、您同意基于项目运行、项目发展以及安全的需要,本公司在没有提前通知您的情况下,可以添加新的服务,或暂时停止提供或者限制部分服务功能。对于功能的变更而导致的用户协议的变化,本公司没有义务告知。只要您仍然使用 Eolink 服务,表示您仍然同意本条款或者本条款修正后的条款。 - -4、您同意本公司不对您在本服务中相关的数据的删除或储存失败负责;本公司不对您因未按官方指引操作而产生的一切损失负责;不对您因未经本公司许可而进行的基于 Eolink 服务的二次开发服务负责。 - -5、本公司有权根据实际情况自行决定单个用户在本服务中数据的最长储存期限,并在服务器上为其分配数据最大存储空间等。您可根据自己的需要自行备份本服务中的相关数据。 - -6、如果您停止使用本服务或服务被终止或取消,本公司可以从服务器上永久地删除您的数据。在服务停止、终止或取消后,本公司没有义务向您返还任何数据。 - -(二)服务费用 -1、使用 Eolink 服务,将会产生相应的服务费用。本公司有权依照相应的服务收费介绍、订单及/或相关协议向您收取服务费用。本公司拥有制订及调整服务费之权利,具体服务费用以您使用本服务时页面上所列之收费方式公告或您与本公司达成的其他书面协议为准。您同意,除非另有说明,上述服务费用本公司有权自本公司代收的应向您支付的款项中先行扣除。 - -(三)服务使用限制 -1、您在使用本服务时应遵守中华人民共和国相关法律法规及您所属、所居住或开展经营活动或其他业务的国家或地区的法律法规,不得将本服务用于任何非法目的(包括用于禁止或限制交易物品的交易),也不得以任何非法方式使用本服务,包括但不限于: - -1) 违反法律或合同约定义务的: - -i. 侵犯第三方的著作权、专利、商标、商业秘密或其它专有权利、公共利益和隐私的; - -ii. 侮辱或者诽谤他人,侵害他人合法权益的; - -iii. 教唆犯罪的; - -iv. 提供赌博信息或以其他方式引诱他人参与赌博的等; - -v. 洗钱、非法套现、传销、贩卖枪支、毒品、禁药、盗版软件、淫秽物品或其他违禁物等; - -vi. 违反依法律或合约所应负之保密义务的; - -vii. 国家法律、行政法规禁止的其他内容。 - -2) 为任何非法目的而使用 Eolink 服务的: - -i. 冒用他人名义使用 Eolink 服务的; - -ii. 非法使用他人银行帐号或使用无效银行帐号进行交易的; - -iii. 利用 Eolink 服务进行无真实交易背景的虚假交易的; - -iv. 被本公司、发卡银行或收单银行认定为对银行卡滥用的行为,属于违反《银行卡业务管理办法》的行为。 - -3) 危害计算机信息网络安全的: - -i. 从事任何可能含有电脑病毒或是可能侵害 Eolink 服务系统、资料的行为的; - -ii. 故意制作、传播计算机病毒等破坏性程序的; - -iii. 未经允许,进入计算机信息网络或者使用计算机信息网络资源的; - -iv. 未经允许,对计算机信息网络功能进行删除、编辑或者增加的; - -v. 未经允许,对进入计算机信息网络中存储、处理或者传输的数据和应用程序进行删除、编辑或者增加的; - -vi. 其他危害计算机信息网络安全的行为。 - -4) 或本公司有正当理由认为您有不适当的其他行为。 - -(四)服务暂停或终止 -1、您明确理解和同意,在出现下述情况之一时,本公司有权暂停或终止您对 Eolink 服务的使用,且无需事先通知: - -1) 本公司有合理的依据证明您已经违反本服务协议的规定;或 - -2) 本公司发现您有异常交易或发现您的交易涉嫌违法时;或 - -3) 在特殊情况下,本公司认为必要之时。 - -2、本公司在有合理理由怀疑您进行了本条规定的违约行为时,有权对您的帐号进行调查。您理解并同意,在调查期间,本公司有权限制您所使用的产品或服务的部分或全部功能(包括但不限于对这些帐号名下的款项和在途交易采取取消交易、调账等限制措施),且无需事先通知。如果调查结果证实您的帐号确实存在上述违约行为,本公司有权锁定您的帐号并终止与您的合作。本公司不对因此导致的任何损害赔偿承担责任,包括但不限于利润、商誉、使用、数据等方面的损失或其他无形损失的损害赔偿(无论本公司是否已被告知该等损害赔偿的可能性)。 - -3、对于您因违反本协议条款,导致或产生的任何第三方主张的任何索赔、要求或损失,包括合理的律师费,您同意赔偿本公司及其合作公司、关联公司,并使之免受损害。您承担法律责任的形式包括但不限于:对受到侵害者进行赔偿,以及在本公司首先承担了因用户行为导致的行政处罚或侵权损害赔偿责任后,您应给予本公司等额的赔偿;若导致了本公司的合作伙伴或关联公司损害的,您应对该损害予以弥补。 - -四、服务中断及不可抗力 -(一) Eolink 系统因下列状况导致服务暂停或中断的,本公司不承担违约或赔偿责任: - -1、因自然灾害如洪水、台风、火灾、爆炸、雷电、地震和风暴等以及社会事件如停电、战争、动乱、恐怖袭击、政府行为、国家政策的突然变动和罢工等不可抗力之因素,造成本公司 Eolink 系统障碍不能提供服务的; - -2、黑客攻击; - -3、网络、电信设备出现故障不能进行数据传输的; - -4、云服务系统、计算机系统遭到破坏、瘫痪或无法正常使用而导致信息或纪录的丢失; - -5、电信技术部门调整或故障、网站升级、银行方面、支付渠道的问题等原因而造成的服务中断或者延迟; - -6、因政府管制而造成的暂时关闭; - -7、病毒侵袭; - -8、其他。 - -(二)本公司需要定期或不定期地对提供 Eolink 服务系统及其相关的设备进行检修或者维护,如因此类情况而造成网络服务(包括收费网络服务)在合理时间内的中断,本公司无需为此承担任何责任。本公司保留不经事先通知为维修保养、升级或其它目的暂停本服务任何部分的权利。 - -五、责任范围及责任限制 -(一)本公司仅对本协议中列明的责任承担范围负责。 - -(二)您明确因使用本服务从事的交易所产生的任何风险应由您与交易对方承担。 - -(三)本服务之支付渠道及合作单位,所提供之支付服务品质及内容由该支付渠道及合作单位自行负责。 - -(四)本公司不对交易标的及本服务提供任何形式的保证,包括但不限于以下事项: - -1、本服务符合您的需求。 - -2、本服务不受干扰、及时提供或免于出错。 - -3、本公司所提交的信息的准确性、合法性和及时性。 - -4、您使用本服务从事的交易及时或最终完成。 - -(五)本公司用户信息是由用户本人自行提供的,本公司无法保证该信息之准确、及时和完整,您应对您的判断承担全部责任。 - -(六)您经由本服务之使用下载或取得任何资料,应由您自行考量且自负风险,因资料之下载而导致您电脑系统之任何损坏或资料流失,您应负完全责任。 - -(七)您自本公司及本公司工作人员或经由本服务取得之建议和资讯,无论其为书面或口头形式,均不构成本公司对本服务之保证。 - -(八)在任何情况下,本公司对于与本协议有关或由本协议引起的任何间接的、惩罚性的、特殊的、派生的损失(包括业务损失、收益损失、利润损失、商誉损失、使用数据或其他经济利益的损失),不论是如何产生的,也不论是由对本协议的违约(包括违反保证)还是由侵权造成的,均不负有任何责任,即使事先已被告知此等损失的可能性。另外即使本协议规定的排他性救济没有达到其基本目的,也应排除本公司对上述损失的责任。 - -(九)在任何情况下,本公司对本协议所承担的违约赔偿责任总额不超过向您收取的当次服务费用总额。 - -(十)您充分知晓并同意本公司可能同时为您及您的(交易)对手方提供本服务,您同意对本公司可能存在的该等行为予以明确豁免任何实际或潜在的利益冲突,并不得以此来主张本公司在提供本服务时存在法律上的瑕疵。 - -(十一)除本协议另有规定或本公司另行同意外,您对本公司的委托及向本公司发出的指令均不可撤销。 - -六、隐私权保护 -本公司重视对用户隐私的保护。关于您的身份资料和其他特定资料依 Eolink 网站所载明的《 Eolink 隐私权政策》受到保护与规范,详情请参阅《 Eolink 隐私权政策》。 - -七、授权许可使用 -(一)授权许可形式 -您使用 Eolink 服务,需取得本公司相关支付接入许可及软件,就前述软件及接入许可,本公司确认给予您一项个人的、不可转让及非排他性的许可。您仅可为访问或使用 Eolink 服务的目的而使用相关软件及许可。 - -(二)授权许可范围 -1、本公司就前述软件及接入给予您一项个人的、不可转让及非排他性的许可,以使用 Eolink 服务。您可以为在本公司许可的终端设备上进行接入并进行安装、使用、显示、运行本软件。 - -2、 本条及本协议其他条款未明示授权的其他一切权利仍由本公司保留,您在行使这些权利时须另外取得本公司的书面许可。本公司如果未行使前述任何权利,并不构成对该权利的放弃。 - -(三)授权许可使用规范 -1、除非法律允许或本公司书面许可,您使用前述软件及接入过程中不得从事下列行为: - -1)删除软件及其副本上关于著作权的信息; - -2)对本软件进行反向工程、反向汇编、反向编译,或者以其他方式尝试发现本软件的源代码; - -3)对本公司拥有知识产权的内容进行使用、出租、出借、复制、编辑、链接、转载、汇编、发表、出版、建立镜像站点等; - -4)对软件或者软件运行过程中释放到任何终端内存中的数据、软件运行过程中客户端与服务器端的交互数据,以及本软件运行所必需的系统数据,进行复制、编辑、增加、删除、挂接运行或创作任何衍生作品,形式包括但不限于使用插件、外挂或非经本公司授权的第三方工具/服务接入本软件和相关系统; - -5)通过编辑或伪造软件运行中的指令、数据,增加、删减、变动软件的功能或运行效果,或者将用于上述用途的软件、方法进行运营或向公众传播,无论这些行为是否为商业目的; - -6)通过非本公司开发、授权的第三方软件、插件、外挂、系统,登录或使用本公司软件及服务,或制作、发布、传播上述工具; - -7)自行或者授权他人、第三方软件对本软件及其组件、模块、数据进行干扰; - -8)其他未经本公司明示授权的行为。 - -2、您理解并同意,基于用户体验、 Eolink 网站运营安全、网站规则要求及健康发展等综合因素,本公司有权选择提供服务的对象,有权决定功能设置,有权决定功能开放、数据API和相关数据披露的对象和范围。 - -八、知识产权的保护 -(一)除第三方产品或服务外,本网站上全部智力成果,包括但不限于数据库、软件、著作、照片、录像、音乐、声音及其前述组合,软件编译、相关源代码和软件 (包括小应用程序和脚本) 档案、资讯、资料、架构、页面设计,均由本公司或本公司关联企业依法拥有其知识产权,包括但不限于版权、商标权、专利权、著作权、商业秘密等。 - -(二)非经本公司或本公司关联企业书面同意,任何人不得擅自使用、编辑、复制、公开传播、改变、散布、发行或公开发表本网站上任何材料或内容。 - -(三)您确认,当您同意本协议时,或您访问本公司网站及其相关网站,或您使用我们提供的任一服务时,即不可撤销的授予本公司基于商业宣传目的在本公司网站、宣传材料等各推广平台上对您的信息、企业名称、商标、字号等进行使用的权利。 - -(四)尊重知识产权是您应尽的义务,如有违反,您应承担损害赔偿责任。 - -九、完整协议 -(一)本协议由《 Eolink 用户服务协议》条款与《 Eolink 隐私权政策》等本网站不时公示的各项规则组成,各项规则有约定,而本协议条款没有约定的,以各项规则约定为准。 - -(二)您对本协议理解和认同,您即对本协议所有组成部分的内容理解并认同,一旦您取得 Eolink 帐号,或您以其他本公司允许的方式实际使用本服务,您和本公司即受本协议所有组成部分的约束。 - -(三)本协议部分内容被有管辖权的法院认定为违法或无效的,不因此影响其他内容的效力。 - -十、法律适用与管辖 -(一)本服务协议的订立、执行和解释及争议的解决均应适用中华人民共和国法律。 - -(二)因本协议引起的或与本协议有关的任何争议,尽最大诚意进行友好协商,如果双方不能协商一致,则双方可向本公司所在地法院提起诉讼。 - -Eolink 用户隐私权政策 -一、概述和声明 -(一) Eolink (或称“我们”)尊重并保护用户隐私, Eolink 将按照本隐私权政策(以下简称“本政策”)收集、使用及共享您的个人/企业信息。本政策包含了我们收集、存储、保护、使用和共享您的个人信息的条款,我们建议您完整地阅读本政策,以帮助您了解维护自己隐私权的方式。为了使您充分理解本政策的内容,本政策中与您的权益存在或可能存在重大关系的条款,我们已采用粗体字进行标注提示您注意。当您同意本公司及关联公司的服务协议如《 Eolink 用户服务协议》时,或您访问本公司网站如 Eolink 网站(https://www.eolink.com)及其相关网站、本公司的移动设备客户端时,或您使用我们提供的任一服务时,即表示您已同意我们按照本政策来合法使用和保护您的个人信息。 - -(二)本政策所称 Eolink ,包括广州银云信息科技有限公司、其关联公司、其参股或形成经营、协作联系的关联单位,包括现有或将来设立的符合以上条件的公司主体。我们将按照本政策来收集、保护、使用、共享您的个人信息,如国家法律法规或监管规定对 Eolink 另行规定或您与 Eolink 另行约定的条款与本政策不一致的,以另行规定、约定的为准。 - -(三)我们收集、使用您的信息是出于遵守国家法律法规的规定以及向您提供服务及提升服务质量的目的(包括支持我们开发新产品或完善已有产品功能,为您和其他用户提供更为优质的服务)。若您向我们提供了本政策中列明的信息,您可使用更多的 Eolink 服务,和(或)享受更便捷的客户服务,和(或)让我们更好地保护您的帐号及资金安全,和(或)避免我们无法及时与您取得联系而产生对您不利的影响等。 - -二、信息收集 -一旦您同意本协议或使用 Eolink 服务,您即同意本公司按照以下条款收集您的一些信息。 - -我们收集信息的范围主要包括: - -(一)登录名和密码:为了遵守法律法规的要求,以及向您提供更个性化、更便捷的服务,我们需要识别您的身份。例如在您注册 Eolink 帐号或使用 Eolink 网站提供的各项服务时,您可能要向我们提供一些个人/企业信息,包括但不限于您的姓名/企业名称、身份证明/企业登记号、注册地址、家庭地址、电话号码和电子邮件地址、生物特征等信息及相关附加信息(如您所在的省份和城市、邮政编码等)。 - -(二)登录记录:为便于您查询您的帐号状态或历史记录,也为遵守法律法规,我们会保存您使用 Eolink 服务产生的交易信息,并严格按法律法规规定对这些信息进行妥善保管。 - -(三)我们可能会从各合作方获得信息以补充我们自己收集的信息。 - -(四)为了保护您的帐号安全,当您访问 Eolink 网站及其相关网站、或 Eolink 移动设备客户端时,或使用 Eolink 提供的服务时,我们可能会记录您操作的相关信息,包括但不限于您的计算机 IP 地址、设备标识符、硬件型号、操作系统版本、您的位置以及与 Eolink 的服务相关的日志信息,这些信息可帮助我们更好地识别您的身份。 - -(五)除上述信息外,我们还可能为了提供服务及改进服务质量的合理需要而收集您的其他信息。与此同时,为提高您使用 Eolink 提供的服务的安全性,更准确地预防钓鱼网站、短信欺诈和木马病毒,我们可能会通过了解一些您的网络使用习惯、您常用的软件信息以及通过识别您短信中的欺诈内容等手段来判断您帐号的风险。 - -三、信息保护和存储 -(一)为保障您的信息安全,我们努力采取各种合理的物理、电子和管理方面的安全措施来保护您的信息,使您的信息不会被泄漏、毁损或者丢失。 - -(二)我们对可能接触到您的信息的员工或外包人员也采取了严格管理,包括但不限于根据岗位的不同采取不同的权限控制,与他们签署保密协议,监控他们的操作情况等措施。 - -(三) Eolink 会按现有技术提供相应的安全措施来保护您的信息,提供合理的安全保障,我们将在任何时候尽力做到使您的信息不被泄漏、毁损或丢失。 - -四、信息使用 -因收集您的信息是出于遵守国家法律法规的规定以及向您提供服务及提升服务质量的目的,为了实现这一目的,我们会把您的信息用于下列用途: - -(一)向您提供 Eolink 各项服务及客户服务,并维护、改进这些服务。 - -(二)比较信息的准确性,并与第三方进行验证。例如,将您向我们提交的身份信息与身份验证的服务机构进行验证。 - -(三)为使您知晓自己使用 Eolink 的各项服务的情况或了解 Eolink 的服务,向您发送服务状态的通知、营销活动及其他商业性电子信息。 - -(四)对 Eolink 用户的身份数据、交易信息等进行综合统计、分析或加工等处理,可能会出于销售、奖励或为了让您拥有更广泛的社交圈的需要而使用、共享或披露这些经过处理的信息。例如我们可能会统计某个时间段注册支付宝帐号的新用户,对这些新用户提供专享的优惠活动。 - -(五)预防或禁止非法的活动。 - -(六)履行我们在《 Eolink 用户服务协议》或本《隐私权政策》中的义务和行使我们的权利。 - -(七)经您许可的其他用途。 - -五、信息共享 -我们对您的信息承担保密义务,但我们有权在下列情况下将您的信息与第三方共享: - -(一)获得您的同意或授权。 - -(二)为了向您提供或推荐服务、产品,或为了向您提供更完善的服务,或者为了让您拥有更广泛的支付体验,我们会在 Eolink 内部以及与各支付渠道等第三方共享您的相关信息。 - -(三)某些情况下,只有共享您的信息,才能提供您需要的服务和(或)产品,或处理您与他人的交易纠纷或争议。 - -(四)为了判断您的帐号或交易是否安全。 - -(五)某些服务和(或)产品由我们的合作伙伴提供或由我们与合作伙伴、供应商共同提供,我们会与其共享提供服务和(或)产品需要的信息。 - -(六)我们与第三方进行联合推广活动,我们可能与其共享活动过程中产生的、为完成活动所必要的个人信息。 - -(七)为维护 Eolink 和其他 Eolink 用户的合法权益。 - -(八)根据法律规定及合理商业习惯,在我们计划与其他公司合并或被其收购或进行其他资本市场活动(包括但不限于融资,IPO,债券发行)时,以及其他情形下我们需要接受来自其他主体的尽职调查时,我们会把您的信息提供给必要的主体,但我们会通过和这些主体签署保密协议等方式要求其对您的个人信息采取合理的保密措施。 - -(九)为了维护和改善我们的服务。 - -(十)根据法律法规的规定或有权机关的要求。 - -如我们或我们的关联公司与任何上述第三方分享您的个人信息,我们将努力确保该等第三方在使用您的个人信息时遵守本《隐私权政策》及我们要求其遵守的其他适当的保密和安全措施。 - -六、用户信息查询管理 -您可随时登录您在 Eolink 的帐号查询并管理该帐号下您的个人信息。 - -七、信息安全 -我们仅在本《隐私权政策》所述目的所必需的期间和法律法规要求的时限内保留您的个人信息。 - -我们使用各种安全技术和程序,以防信息的丢失、不当使用、未经授权阅览或披露。但请您理解,由于技术的限制以及可能存在的各种恶意手段,在互联网行业,即便竭尽所能加强安全措施,也不可能始终保证信息百分之百的安全。您需要了解,您接入我们的服务所用的系统和通讯网络,有可能因我们可控范围外的因素而出现问题。 - -八、对第三方责任的声明 -(一)本《隐私政策》仅适用于我们所收集的信息,并不适用于任何第三方提供的服务或第三方的信息使用规则,我们对任何第三方使用由您提供的信息不承担任何责任。 - -(二)请您注意,您的交易相对方、您使用的各支付渠道、您访问的第三方网站经营者、您使用的第三方服务提供者和由 Eolink 处接受您的个人信息的第三方可能有自己的隐私权保护政策。 - -(三)我们会尽商业上的合理努力去要求这些主体对您的个人信息采取保护措施,但我们无法保证这些主体一定会按照我们的要求采取保护措施,亦不对这些主体的行为及后果承担任何责任。如果您发现这些第三方创建的网页或第三方开发的应用程序存在风险时,建议您终止相关操作以保护您的合法权益。 - -九、未成年人隐私权特别约定 -我们重视未成年人的个人信息保护,如您为未成年人,建议您请您的监护人仔细阅读本政策,并在征得您的监护人同意的前提下使用我们的服务或向我们提供信息。 - -十、本政策的修订 -我们可能随时会对本政策进行变更,我们将以网站公告的方式予以公布而不再另行单独通知您,该等变更将在公告期限届满时即时生效。若您在本政策变更后继续访问 Eolink 网站及其相关网站、 Eolink 移动设备客户端,或使用 Eolink 提供的任一服务,您确认这代表您已充分阅读、理解并接受编辑后的本政策并受之约束。 \ No newline at end of file diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 5e67915c1..8b94cfa21 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -15,7 +15,10 @@ import { EnvState } from './shared/store/env.state'; // NG1 Upgrade import { UpgradeModule } from '@angular/upgrade/static'; + +//Storage Module import { StorageSetting } from './modules/storage/storage.config'; +import { demoApi } from './storageSetting.model'; import { NzModalModule } from 'ng-zorro-antd/modal'; @@ -36,6 +39,10 @@ const storageSetting: StorageSetting = { name: 'project', items: [{ uuid: 1, name: 'Default' }], }, + { + name: 'apiData', + items: demoApi, + }, ], }; diff --git a/src/app/eoui/editor/eo-editor/eo-editor.component.ts b/src/app/eoui/editor/eo-editor/eo-editor.component.ts index 97d9d3ed8..aec999c6d 100644 --- a/src/app/eoui/editor/eo-editor/eo-editor.component.ts +++ b/src/app/eoui/editor/eo-editor/eo-editor.component.ts @@ -155,14 +155,12 @@ export class EoEditorComponent implements AfterViewInit, OnChanges { } case 'newTab': { - if (this.code) { - const tmpNewWin = window.open(); - const value = session.getValue(); - const code = this.formatCode(value, this.editorType); - tmpNewWin.document.open(); - tmpNewWin.document.write(code); - tmpNewWin.document.close(); - } + const tmpNewWin = window.open(); + const value = session.getValue(); + const code = this.formatCode(value, this.editorType); + tmpNewWin.document.open(); + tmpNewWin.document.write(code); + tmpNewWin.document.close(); } break; case 'download': diff --git a/src/app/pages/api/api.component.html b/src/app/pages/api/api.component.html index 1ff081985..e9a7e4649 100644 --- a/src/app/pages/api/api.component.html +++ b/src/app/pages/api/api.component.html @@ -20,7 +20,7 @@ -
+
文档 diff --git a/src/app/pages/api/api.component.scss b/src/app/pages/api/api.component.scss index e90336e97..73c3b27cf 100644 --- a/src/app/pages/api/api.component.scss +++ b/src/app/pages/api/api.component.scss @@ -63,6 +63,7 @@ nz-tree { background-color: #f0f0f0; padding: 5px 10px 0 15px; display: flex; + margin-bottom: -1px; align-items: center; justify-content: space-between; .ant-tabs-top { @@ -106,11 +107,15 @@ nz-tree { height: 36px; } } - .inside_page_tab { - .ant-tabs-nav { - padding-left: 20px; + .content_container { + border-top: 1px solid var(--BORDER); + .inside_page_tab { + .ant-tabs-nav { + padding-left: 20px; + } } } + eo-api { router-outlet + * { display: block; diff --git a/src/app/pages/api/api.component.ts b/src/app/pages/api/api.component.ts index 62a37812e..041a8a4ef 100644 --- a/src/app/pages/api/api.component.ts +++ b/src/app/pages/api/api.component.ts @@ -1,21 +1,20 @@ import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; -import { Router, ActivatedRoute, NavigationEnd } from '@angular/router'; +import { ActivatedRoute } from '@angular/router'; import { NzFormatEmitEvent, NzTreeNode } from 'ng-zorro-antd/tree'; import { Message, MessageService } from '../../shared/services/message'; import { ApiTabComponent } from './tab/api-tab.component'; - import { GroupService } from '../../shared/services/group/group.service'; import { NzModalService } from 'ng-zorro-antd/modal'; import { ApiDataService } from '../../shared/services/api-data/api-data.service'; +import { listToTree } from '../../utils/tree'; import { GroupApiDataModel, GroupTreeItem } from '../../shared/models'; import { ApiData } from '../../shared/services/api-data/api-data.model'; -import { listToTree } from '../../utils/tree'; - -import { of, Subject } from 'rxjs'; -import { filter, switchMap, takeUntil } from 'rxjs/operators'; import { Group } from '../../shared/services/group/group.model'; + +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; @Component({ selector: 'eo-api', templateUrl: './api.component.html', @@ -79,6 +78,9 @@ export class ApiComponent implements OnInit, OnDestroy { this.groupByID = {}; this.apiDataItems = {}; this.treeItems = []; + this.getGroups(); + } + getGroups() { this.groupService.loadAllByProjectID(this.projectID).subscribe((items: Array) => { items.forEach((item) => { delete item.updatedAt; @@ -91,21 +93,25 @@ export class ApiComponent implements OnInit, OnDestroy { isLeaf: false, }); }); - this.apiDataService.loadAllByProjectID(this.projectID).subscribe((items: Array) => { - items.forEach((item) => { - delete item.updatedAt; - this.apiDataItems[item.uuid] = item; - this.treeItems.push({ - title: item.name, - key: item.uuid, - weight: item.weight || 0, - parentID: item.groupID || 0, - method: item.method, - isLeaf: true, - }); + this.getApis(); + }); + } + getApis() { + this.apiDataService.loadAllByProjectID(this.projectID).subscribe((items: Array) => { + items.forEach((item) => { + delete item.updatedAt; + this.apiDataItems[item.uuid] = item; + this.treeItems.push({ + title: item.name, + key: item.uuid, + weight: item.weight || 0, + parentID: item.groupID || 0, + method: item.method, + isLeaf: true, }); - this.generateGroupTreeData(); }); + this.generateGroupTreeData(); + this.apiTabComponent.initTab(); }); } /** @@ -203,9 +209,9 @@ export class ApiComponent implements OnInit, OnDestroy { * Generate group tree nodes. */ generateGroupTreeData(): void { - this.apiTabComponent.initTab(); this.treeItems.sort((a, b) => a.weight - b.weight); this.treeNodes = []; + console.log('generateGroupTreeData=>',this.treeItems) listToTree(this.treeItems, this.treeNodes, 0); } @@ -317,21 +323,17 @@ export class ApiComponent implements OnInit, OnDestroy { this.getChildrenFromTree(this.treeItems, data, group.uuid); if (data.group.length > 0 && data.api.length > 0) { this.groupService.bulkRemove(data.group).subscribe((result) => { - console.log(result); this.apiDataService.bulkRemove(data.api).subscribe((result) => { - console.log(result); this.buildGroupTreeData(); this.messageService.send({ type: 'apiBatchDelete', data: { uuids: data.api } }); }); }); } else if (data.group.length > 0) { this.groupService.bulkRemove(data.group).subscribe((result) => { - console.log(result); this.buildGroupTreeData(); }); } else if (data.api.length > 0) { this.apiDataService.bulkRemove(data.api).subscribe((result) => { - console.log(result); this.buildGroupTreeData(); this.messageService.send({ type: 'apiBatchDelete', data: { uuids: data.api } }); }); diff --git a/src/app/pages/api/demo.json b/src/app/pages/api/demo.json new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/src/app/pages/api/demo.json @@ -0,0 +1 @@ + diff --git a/src/app/pages/api/detail/api-detail.component.html b/src/app/pages/api/detail/api-detail.component.html index b2c285094..ee11f55c9 100644 --- a/src/app/pages/api/detail/api-detail.component.html +++ b/src/app/pages/api/detail/api-detail.component.html @@ -20,7 +20,7 @@
Body 请求参数{{ CONST.BODY_TYPE[apiInfo.requestBodyType] }} - 最外层结构为:{{ CONST.JSON_ROOT_TYPE[apiInfo.requestBodyJsonType] }} + 最外层结构为:{{ CONST.JSON_ROOT_TYPE[apiInfo.requestBodyJsonType] }}
{ @@ -49,7 +48,6 @@ export class ApiDetailComponent implements OnInit { } }); this.apiInfo = result; - console.log(this.apiInfo); }); } } diff --git a/src/app/pages/api/detail/body/api-detail-body.component.ts b/src/app/pages/api/detail/body/api-detail-body.component.ts index 2b0acb429..07b6f3447 100644 --- a/src/app/pages/api/detail/body/api-detail-body.component.ts +++ b/src/app/pages/api/detail/body/api-detail-body.component.ts @@ -8,7 +8,7 @@ import { import { Subject } from 'rxjs'; import { ApiEditBody } from '../../../../shared/services/api-data/api-edit-params.model'; -import { ApiBodyType, JsonRootType } from '../../../../shared/services/api-data/api-body-type'; +import { ApiBodyType, JsonRootType } from '../../../../shared/services/api-data/api-data.model'; import { ApiDetailService } from '../api-detail.service'; @Component({ selector: 'eo-api-detail-body', diff --git a/src/app/pages/api/edit/api-edit.component.html b/src/app/pages/api/edit/api-edit.component.html index 1a33f685b..ae5af2187 100644 --- a/src/app/pages/api/edit/api-edit.component.html +++ b/src/app/pages/api/edit/api-edit.component.html @@ -1,6 +1,6 @@
- + API Path diff --git a/src/app/pages/api/edit/api-edit.component.ts b/src/app/pages/api/edit/api-edit.component.ts index ac5e804f1..097ff3a3d 100644 --- a/src/app/pages/api/edit/api-edit.component.ts +++ b/src/app/pages/api/edit/api-edit.component.ts @@ -53,7 +53,7 @@ export class ApiEditComponent implements OnInit, OnDestroy { const treeItems: any = [ { title: '根目录', - //actually is 0,but 0 will hidden,so use -1 replace 0 + //!actually is 0,but 0 will hidden in nz component,so use -1 replace 0 key: '-1', weight: 0, parentID: '0', diff --git a/src/app/pages/api/edit/api-edit.module.ts b/src/app/pages/api/edit/api-edit.module.ts index 4f2330dd9..4e8753662 100644 --- a/src/app/pages/api/edit/api-edit.module.ts +++ b/src/app/pages/api/edit/api-edit.module.ts @@ -19,6 +19,7 @@ import { NzIconModule } from 'ng-zorro-antd/icon'; import { NzTabsModule } from 'ng-zorro-antd/tabs'; import { NzRadioModule } from 'ng-zorro-antd/radio'; import { NzDividerModule } from 'ng-zorro-antd/divider'; +import { NzAffixModule } from 'ng-zorro-antd/affix'; import { ApiEditComponent } from './api-edit.component'; import { ApiEditHeaderComponent } from './header/api-edit-header.component'; @@ -42,6 +43,7 @@ const NZ_COMPONETS = [ NzTabsModule, NzRadioModule, NzDividerModule, + NzAffixModule ]; const COMPONENTS = [ ApiEditComponent, diff --git a/src/app/pages/api/edit/body/api-edit-body.component.ts b/src/app/pages/api/edit/body/api-edit-body.component.ts index 38c4dcfde..40f729a39 100644 --- a/src/app/pages/api/edit/body/api-edit-body.component.ts +++ b/src/app/pages/api/edit/body/api-edit-body.component.ts @@ -17,7 +17,7 @@ import { ApiParamsTypeJsonOrXml, } from '../../../../shared/services/api-data/api-edit-params.model'; import { ApiEditBody } from '../../../../shared/services/api-data/api-edit-params.model'; -import { ApiBodyType, JsonRootType } from '../../../../shared/services/api-data/api-body-type'; +import { ApiBodyType, JsonRootType } from '../../../../shared/services/api-data/api-data.model'; import { ApiEditService } from '../api-edit.service'; @Component({ selector: 'eo-api-edit-body', diff --git a/src/app/pages/api/group/tree/api-group-tree.component.html b/src/app/pages/api/group/tree/api-group-tree.component.html index 57d939102..b98bd4512 100644 --- a/src/app/pages/api/group/tree/api-group-tree.component.html +++ b/src/app/pages/api/group/tree/api-group-tree.component.html @@ -26,16 +26,11 @@ -
diff --git a/src/app/pages/api/tab/api-tab.component.html b/src/app/pages/api/tab/api-tab.component.html index 84c4467cf..6251c02f3 100644 --- a/src/app/pages/api/tab/api-tab.component.html +++ b/src/app/pages/api/tab/api-tab.component.html @@ -1,3 +1,4 @@ + {{ tab.method | uppercase }} @@ -29,4 +30,4 @@
  • 关闭右侧标签页
  • -
    \ No newline at end of file + diff --git a/src/app/pages/api/tab/api-tab.component.scss b/src/app/pages/api/tab/api-tab.component.scss index f0bd6a9c5..a53c908c0 100644 --- a/src/app/pages/api/tab/api-tab.component.scss +++ b/src/app/pages/api/tab/api-tab.component.scss @@ -2,7 +2,15 @@ eo-api-tab { .ant-tabs-card.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab { border-radius: 6px 6px 0 0; - border: 1px solid var(--BORDER); + border-width: 1px; + border-bottom: 1px solid var(--BORDER); + } + .ant-tabs-card.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab-active { + border-color: rgba($color: #000000, $alpha: 0.15); + border-bottom-color: var(--MAIN_BG); + } + .ant-tabs > .ant-tabs-nav .ant-tabs-nav-add { + border: 0 none; } .ant-tabs-tab { &.ant-tabs-tab-active { diff --git a/src/app/pages/api/tab/api-tab.component.ts b/src/app/pages/api/tab/api-tab.component.ts index 444051738..88503e2e4 100644 --- a/src/app/pages/api/tab/api-tab.component.ts +++ b/src/app/pages/api/tab/api-tab.component.ts @@ -21,7 +21,7 @@ export class ApiTabComponent implements OnInit { /** * Current selected tab index. */ - selectedIndex: number=0; + selectedIndex: number = 0; /** * Default tabs of api. */ @@ -34,18 +34,17 @@ export class ApiTabComponent implements OnInit { constructor(private router: Router, private route: ActivatedRoute) {} ngOnInit(): void { + this.id = Number(this.route.snapshot.queryParams.uuid); this.watchChangeRouter(); } /** * Get current path to update tab */ watchChangeRouter() { - this.id = Number(this.route.snapshot.queryParams.uuid); this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event: NavigationEnd) => { - if(this.id){ - this.id = Number(this.route.snapshot.queryParams.uuid); - this.tabs[this.selectedIndex] = this.getApiTabByID(this.id); - } + this.id = Number(this.route.snapshot.queryParams.uuid); + if (!this.id) return; + this.tabs[this.selectedIndex] = this.getCurrentTabByID(this.id); }); } /** @@ -59,12 +58,18 @@ export class ApiTabComponent implements OnInit { */ initTab() { if (!this.apiDataItems[this.id]) { - let page=Object.keys(this.defaultTabs) - this.appendTab(); + this.closeTab({ index: this.selectedIndex }); return; } - const tab = this.getApiTabByID(this.id); - this.tabs[this.selectedIndex] = tab; + let module = Object.keys(this.defaultTabs).find((keyName) => + this.router.url.split('?')[0].includes(this.defaultTabs[keyName].path) + ); + const tab = this.getCurrentTabByID(this.id); + if (this.tabs.length < 1) { + this.appendTab(module, tab); + } else { + this.tabs[this.selectedIndex] = tab; + } } /** * Push new tab. @@ -73,9 +78,13 @@ export class ApiTabComponent implements OnInit { */ appendTab(which = 'test', apiData = {}): void { let tab: TabItem = Object.assign({}, this.defaultTabs[which], apiData); - this.tabs.push(tab); - this.selectedIndex = this.tabs.length - 1; - this.activeRoute(tab); + let existTabIndex = this.tabs.findIndex((val) => val.key === tab.key); + if (tab.key && existTabIndex !== -1) { + this.tabSelect({ index: existTabIndex, tab: tab }); + } else { + this.tabs.push(tab); + this.tabSelect({ index: this.tabs.length - 1, tab: tab }); + } } /** * Close current tab. @@ -91,10 +100,12 @@ export class ApiTabComponent implements OnInit { /** * Switch the tab. * - * @param tab + * @param {TabItem} inArg.tab + * @param inArg.index */ - tabSelect(tab) { - this.activeRoute(tab); + tabSelect(inArg) { + this.selectedIndex = inArg.index; + this.activeRoute(inArg.tab); } /** @@ -123,7 +134,7 @@ export class ApiTabComponent implements OnInit { this.closeTab(item); }); } - private getApiTabByID(id) { + private getCurrentTabByID(id) { const result = { path: this.router.url.split('?')[0], title: this.apiDataItems[id].name, diff --git a/src/app/pages/api/test/api-test.component.ts b/src/app/pages/api/test/api-test.component.ts index 3d4868219..f58657aca 100644 --- a/src/app/pages/api/test/api-test.component.ts +++ b/src/app/pages/api/test/api-test.component.ts @@ -25,13 +25,15 @@ import { EnvState } from '../../../shared/store/env.state'; styleUrls: ['./api-test.component.scss'], }) export class ApiTestComponent implements OnInit, OnDestroy { - @ViewChild('historyComponent') + @ViewChild('historyComponent') historyComponent: ApiTestHistoryComponent; @Select(EnvState) env$: Observable; - historyComponent: ApiTestHistoryComponent; validateForm!: FormGroup; apiData: any; - env: any = {}; + env: any = { + parameters:[], + hostUri:'' + }; status: 'start' | 'testing' | 'tested' = 'start'; waitSeconds = 0; tabIndexRes: number = 0; diff --git a/src/app/pages/api/test/body/api-test-body.component.ts b/src/app/pages/api/test/body/api-test-body.component.ts index b8be95bec..4646ea781 100644 --- a/src/app/pages/api/test/body/api-test-body.component.ts +++ b/src/app/pages/api/test/body/api-test-body.component.ts @@ -4,7 +4,7 @@ import { Subject } from 'rxjs'; import { pairwise, takeUntil, debounceTime } from 'rxjs/operators'; import { ApiTestBody } from '../../../../shared/services/api-test/api-test-params.model'; -import { ApiBodyType, JsonRootType } from '../../../../shared/services/api-data/api-body-type'; +import { ApiBodyType, JsonRootType } from '../../../../shared/services/api-data/api-data.model'; import { ApiTestParamsTypeFormData, ApiTestParamsTypeJsonOrXml, diff --git a/src/app/shared/services/api-data/api-body-type.ts b/src/app/shared/services/api-data/api-body-type.ts deleted file mode 100644 index c34e652d1..000000000 --- a/src/app/shared/services/api-data/api-body-type.ts +++ /dev/null @@ -1,16 +0,0 @@ -export enum ApiBodyType { - 'Form-data' = 'formData', - JSON = 'json', - XML = 'xml', - Raw = 'raw', - Binary = 'binary', -} -/** - * Json Root Type - * - * @description body type is json,set root type of object/array - */ -export enum JsonRootType { - Object = 'object', - Array = 'array', -} diff --git a/src/app/shared/services/api-data/api-data.model.ts b/src/app/shared/services/api-data/api-data.model.ts index 9656c476b..67abec1f2 100644 --- a/src/app/shared/services/api-data/api-data.model.ts +++ b/src/app/shared/services/api-data/api-data.model.ts @@ -1,6 +1,22 @@ import { StorageModel } from '../../../modules/storage/storage.model'; import { ApiEditBody, ApiEditHeaders } from './api-edit-params.model'; -import { ApiBodyType, JsonRootType } from './api-body-type'; +export enum ApiBodyType { + 'Form-data' = 'formData', + JSON = 'json', + XML = 'xml', + Raw = 'raw', + Binary = 'binary', +} +/** + * Json Root Type + * + * @description body type is json,set root type of object/array + */ +export enum JsonRootType { + Object = 'object', + Array = 'array', +} + export enum RequestMethod { POST = 'POST', GET = 'GET', diff --git a/src/app/shared/services/api-data/api-data.service.ts b/src/app/shared/services/api-data/api-data.service.ts index 84ed329b4..62f554c74 100644 --- a/src/app/shared/services/api-data/api-data.service.ts +++ b/src/app/shared/services/api-data/api-data.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { ApiData} from './api-data.model'; -import { StorageModelService } from '../../../modules/storage/storage.model.service' +import { ApiData } from './api-data.model'; +import { StorageModelService } from '../../../modules/storage/storage.model.service'; import { Query } from '../../../modules/storage/storage.config'; /** @@ -13,7 +13,7 @@ export class ApiDataService extends StorageModelService { * 表名 * @type {string} */ - protected tableName:string = 'apiData'; + protected tableName: string = 'apiData'; create(data: ApiData): Observable { if (!data.weight) { @@ -23,7 +23,7 @@ export class ApiDataService extends StorageModelService { } bulkCreate(data: Array): Observable { - data = data.map(item => { + data = data.map((item) => { if (!item.weight) { item.weight = 0; } @@ -32,29 +32,28 @@ export class ApiDataService extends StorageModelService { return super.bulkCreate(data); } - update(data: ApiData, uuid: number|string): Observable { + update(data: ApiData, uuid: number | string): Observable { return super.update(data, uuid); } - loadAllByProjectID(projectID: string|number): Observable> { + loadAllByProjectID(projectID: string | number): Observable> { const query: Query = { - where: {projectID: projectID} + where: { projectID: projectID }, }; return this.loadAllBy(query); } - loadAllByGroupID(groupID: string|number): Observable> { + loadAllByGroupID(groupID: string | number): Observable> { const query: Query = { - where: {groupID: groupID} + where: { groupID: groupID }, }; return this.loadAllBy(query); } - loadAllByProjectIDAndGroupID(projectID: string|number, groupID: string|number): Observable> { + loadAllByProjectIDAndGroupID(projectID: string | number, groupID: string | number): Observable> { const query: Query = { - where: {projectID: projectID, groupID: groupID} + where: { projectID: projectID, groupID: groupID }, }; return this.loadAllBy(query); } - } diff --git a/src/app/shared/services/api-data/api-protocol.model.ts b/src/app/shared/services/api-data/api-protocol.model.ts deleted file mode 100644 index 9afe7f779..000000000 --- a/src/app/shared/services/api-data/api-protocol.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum RequestProtocol { - HTTP = 'http', - HTTPS = 'https' - } diff --git a/src/app/shared/services/api-data/request-method.model.ts b/src/app/shared/services/api-data/request-method.model.ts deleted file mode 100644 index b59e3cd28..000000000 --- a/src/app/shared/services/api-data/request-method.model.ts +++ /dev/null @@ -1,9 +0,0 @@ -export enum RequestMethod { - POST = 'POST', - GET = 'GET', - PUT = 'PUT', - DELETE = 'DELETE', - HEAD = 'HEAD', - OPTIONS = 'OPTIONS', - PATCH = 'PATCH', -} diff --git a/src/app/shared/services/api-test-history/api-test-history.model.ts b/src/app/shared/services/api-test-history/api-test-history.model.ts index 50e7372f9..8d9838696 100644 --- a/src/app/shared/services/api-test-history/api-test-history.model.ts +++ b/src/app/shared/services/api-test-history/api-test-history.model.ts @@ -1,5 +1,5 @@ import { StorageModel } from '../../../modules/storage/storage.model'; -import { JsonRootType } from '../api-data/api-body-type'; +import { JsonRootType } from '../api-data/api-data.model'; export interface ApiTestHistoryFrame { /** diff --git a/src/app/shared/services/api-test/apikit-node/test-connect.service.ts b/src/app/shared/services/api-test/apikit-node/test-connect.service.ts index 780474779..de04ee710 100644 --- a/src/app/shared/services/api-test/apikit-node/test-connect.service.ts +++ b/src/app/shared/services/api-test/apikit-node/test-connect.service.ts @@ -1,6 +1,6 @@ import { Injectable, Inject, LOCALE_ID } from '@angular/core'; -import { ApiBodyType } from '../../api-data/api-body-type'; +import { ApiBodyType } from '../../api-data/api-data.model'; import { TestLocalNodeData } from '../local-node/api-server-data.model'; import { formatDate } from '@angular/common'; diff --git a/src/app/shared/services/api-test/local-node/test-connect.service.ts b/src/app/shared/services/api-test/local-node/test-connect.service.ts index 1fa52c420..50846e5a7 100644 --- a/src/app/shared/services/api-test/local-node/test-connect.service.ts +++ b/src/app/shared/services/api-test/local-node/test-connect.service.ts @@ -1,6 +1,6 @@ import { Injectable, Inject, LOCALE_ID } from '@angular/core'; -import { ApiBodyType } from '../../api-data/api-body-type'; +import { ApiBodyType } from '../../api-data/api-data.model'; import { TestLocalNodeData } from './api-server-data.model'; import { formatDate } from '@angular/common'; diff --git a/src/app/shared/services/environment/environment.service.ts b/src/app/shared/services/environment/environment.service.ts index bba4da364..60c217c1a 100644 --- a/src/app/shared/services/environment/environment.service.ts +++ b/src/app/shared/services/environment/environment.service.ts @@ -3,7 +3,6 @@ import { Observable } from 'rxjs'; import { Environment } from './environment.model'; import { StorageModelService } from '../../../modules/storage/storage.model.service' import { Query } from '../../../modules/storage/storage.config'; -import { Group } from '../group/group.model'; /** * 环境服务 diff --git a/src/app/shared/services/project/project.service.ts b/src/app/shared/services/project/project.service.ts index b02bab8dd..42c10595e 100644 --- a/src/app/shared/services/project/project.service.ts +++ b/src/app/shared/services/project/project.service.ts @@ -2,7 +2,6 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { Project } from './project.model'; import { StorageModelService } from '../../../modules/storage/storage.model.service' -import { Group } from '../group/group.model'; /** * 项目服务 diff --git a/src/app/storageSetting.model.ts b/src/app/storageSetting.model.ts new file mode 100644 index 000000000..ea67c33be --- /dev/null +++ b/src/app/storageSetting.model.ts @@ -0,0 +1,159 @@ +export const demoApi = [ + { + name: 'JSON', + protocol: 'http', + method: 'GET', + uri: 'http://demo.gokuapi.com:8280/Web/Test/all/{print}', + groupID: 0, + projectID: 1, + requestBodyType: 'json', + requestBodyJsonType: 'object', + requestBody: [ + { name: 'string', value: '', description: '', type: 'string', required: true, example: '' }, + { + name: 'array', + required: true, + example: '', + type: 'array', + description: '', + children: [ + { name: 'dom1', required: true, example: '', type: 'object', description: '' }, + { + name: 'dom2', + value: false, + description: '', + type: 'boolean', + required: true, + example: 'false', + }, + { name: 'dom3', required: true, example: '', type: 'array', description: '' }, + ], + }, + { + name: 'object', + required: true, + example: '', + type: 'object', + description: '', + children: [ + { name: 'dom1', value: '', description: '', type: 'string', required: true, example: '' }, + { name: 'dom2', value: 0, description: '', type: 'number', required: true, example: '11.11' }, + ], + }, + { name: 'null', value: null, description: '', type: 'null', required: true, example: '' }, + { name: 'float', value: 11.11, description: '', type: 'number', required: true, example: '11.11' }, + { name: 'int', value: 1, description: '', type: 'number', required: true, example: '11' }, + { name: 'boolean', value: false, description: '', type: 'boolean', required: true, example: 'true' }, + ], + queryParams: [], + restParams: [{ enum: [{ default: true }], name: 'print', required: true, example: 'print', description: '' }], + requestHeaders: [ + { + enum: [{ default: true }], + name: 'cookie', + required: true, + example: 'cookie', + description: '请求 Cookie', + }, + ], + responseHeaders: [], + responseBodyType: 'json', + responseBodyJsonType: 'object', + responseBody: [], + weight: 0, + createdAt: '2022-01-04T02:17:47.695Z', + updatedAt: '2022-01-11T11:29:39.113Z', + uuid: 1, + }, + { + name: 'FormData', + protocol: 'http', + method: 'POST', + uri: 'http://demo.gokuapi.com:8280', + groupID: 0, + projectID: 1, + requestBodyType: 'formData', + requestBodyJsonType: 'object', + requestBody: [ + { + name: 'projectType', + value: '', + description: '', + type: 'string', + required: true, + example: '1', + listDepth: 0, + enum: [ + { default: true, value: '0', description: '免费' }, + { default: false, value: '1', description: '专业版' }, + { default: false, value: '2', description: '企业版' }, + { default: false, value: '', description: '' }, + ], + }, + { + name: 'file', + value: '', + description: '', + type: 'file', + required: true, + example: '', + listDepth: 0, + }, + ], + queryParams: [], + restParams: [{ name: 'print', required: true, example: '', description: '' }], + requestHeaders: [], + responseHeaders: [], + responseBodyType: 'json', + responseBodyJsonType: 'object', + responseBody: [], + weight: 1, + createdAt: '2022-01-04T02:17:47.695Z', + updatedAt: '2022-01-11T11:29:39.113Z', + uuid: 2, + }, + { + name: 'Raw', + protocol: 'http', + method: 'GET', + uri: 'http://demo.gokuapi.com:8280', + groupID: 0, + projectID: 1, + requestBodyType: 'raw', + requestBodyJsonType: 'object', + requestBody: 'i am raw', + queryParams: [], + restParams: [], + requestHeaders: [], + responseHeaders: [], + responseBodyType: 'json', + responseBodyJsonType: 'object', + responseBody: [], + weight: 3, + createdAt: '2022-01-04T02:17:47.695Z', + updatedAt: '2022-01-11T11:29:39.113Z', + uuid: 3, + }, + { + name: 'XML', + projectID: 1, + uri: 'http://demo.gokuapi.com:8280', + groupID: 0, + protocol: 'http', + method: 'POST', + requestBodyType: 'xml', + requestBodyJsonType: 'object', + requestBody: [{ name: 'fsdfsf', type: 'string', required: true, example: '', enum: [], description: '' }], + queryParams: [], + restParams: [{ name: 'print', required: true, example: '', description: '' }], + requestHeaders: [], + responseHeaders: [], + responseBodyType: 'json', + responseBodyJsonType: 'object', + responseBody: [], + weight: 2, + createdAt: '2022-01-11T10:11:00.670Z', + updatedAt: '2022-01-11T11:29:39.113Z', + uuid: 4, + }, +]; \ No newline at end of file diff --git a/src/assets/theme/antd.less b/src/assets/theme/antd.less index 059fa3f35..ad0f94706 100644 --- a/src/assets/theme/antd.less +++ b/src/assets/theme/antd.less @@ -8,6 +8,7 @@ @border-radius-base:3px; @primary-color: @theme-color; @success-color: @theme-color; +@link-color:rgba(0, 0, 0, 0.8); @processing-color: @theme-color; body { line-height: initial; diff --git a/src/ng1/component/auto-complete.js b/src/ng1/component/auto-complete.js index 01edc6ead..046c09d20 100644 --- a/src/ng1/component/auto-complete.js +++ b/src/ng1/component/auto-complete.js @@ -5,7 +5,7 @@ * (3)能够通过上下箭头控制下拉菜单选中项 */ /** - * @author 广州银云信息科技有限公司 + * @author EOAPI * @description 自动补全控件 * @extends {string} placeholder 内置输入框placeholder内容[optional] * @extends {array} array 预设列表 diff --git a/src/ng1/component/list-default.js b/src/ng1/component/list-default.js index b41946b93..7fdd54b8e 100644 --- a/src/ng1/component/list-default.js +++ b/src/ng1/component/list-default.js @@ -1,5 +1,5 @@ /** - * @author 广州银云信息科技有限公司 + * @author EOAPI * @description 默认列表组件 * @extend {object} authorityObject 权限类{operate} * @extend {object} mainObject 主类{setting:{colspan,warning},item:{default,fun}} diff --git a/src/ng1/component/select-default.js b/src/ng1/component/select-default.js index e6a63dca3..fd15aa16d 100644 --- a/src/ng1/component/select-default.js +++ b/src/ng1/component/select-default.js @@ -1,5 +1,5 @@ /** - * @author 广州银云信息科技有限公司 + * @author EOAPI * @description 默认下拉菜单 */ diff --git a/src/ng1/component/sort-and-filter.js b/src/ng1/component/sort-and-filter.js index 3947cbb7f..2190baf85 100644 --- a/src/ng1/component/sort-and-filter.js +++ b/src/ng1/component/sort-and-filter.js @@ -1,5 +1,5 @@ /** - * @author 广州银云信息科技有限公司 + * @author EOAPI * @description 排序和筛选 */ angular.module('eolinker').component('sortAndFilterListDefaultComponent', { diff --git a/src/ng1/directive/drop-down-menu.directive.js b/src/ng1/directive/drop-down-menu.directive.js index ca68d7ef7..06185313d 100644 --- a/src/ng1/directive/drop-down-menu.directive.js +++ b/src/ng1/directive/drop-down-menu.directive.js @@ -1,6 +1,6 @@ /** * @description 手动控制按钮focus状态,使用与mac os 非chrome浏览器 - * @author 广州银云信息科技有限公司 + * @author EOAPI */ angular .module('eolinker.directive') diff --git a/src/ng1/directive/inner-html.directive.js b/src/ng1/directive/inner-html.directive.js index f3e28a0b9..231148bc5 100644 --- a/src/ng1/directive/inner-html.directive.js +++ b/src/ng1/directive/inner-html.directive.js @@ -1,5 +1,5 @@ /* - * author:广州银云信息科技有限公司 + * author:EOAPI * 注入HTML指令js * @require {string} html 所需注入的代码 * @param {string} status 注入代码类型,默认绑定angular元素,若关闭状态为unbind-angular diff --git a/src/ng1/directive/sort.directive.js b/src/ng1/directive/sort.directive.js index fed962033..b77641355 100644 --- a/src/ng1/directive/sort.directive.js +++ b/src/ng1/directive/sort.directive.js @@ -1,6 +1,6 @@ 'use strict'; /* 参考文档:https://github.com/kamilkp/angular-sortable-view - *改进者:广州银云信息科技有限公司 + *改进者:EOAPI */ const $watch = []; angular diff --git a/src/ng1/index.css b/src/ng1/index.css index 3727276fc..918f45868 100644 --- a/src/ng1/index.css +++ b/src/ng1/index.css @@ -10673,7 +10673,7 @@ date-picker-common-component .uib-datepicker { /** * @name 侧边栏 -* @author 广州银云信息科技有限公司 +* @author EOAPI */ sidebar-common-component .circle_tip_scc { left: 30px; diff --git a/src/ng1/lib/angular/angular.js b/src/ng1/lib/angular/angular.js index 691573af9..993e26929 100644 --- a/src/ng1/lib/angular/angular.js +++ b/src/ng1/lib/angular/angular.js @@ -98,7 +98,7 @@ */ /** * @description 解析语言HTML - * @author 广州银云信息科技有限公司 + * @author EOAPI * @param {string} inputHtml 待解析数据 * @return {string} 语言解析后内容 */ @@ -126,7 +126,7 @@ function minErr(module, ErrorConstructor) { ErrorConstructor = ErrorConstructor || Error; - var url="https://www.eolinker.com"; //广州银云信息科技有限公司 源码:var url = 'https://errors.angularjs.org/1.8.2/'; + var url="https://www.eolinker.com"; //EOAPI 源码:var url = 'https://errors.angularjs.org/1.8.2/'; var regex = url.replace('.', '\\.') + '[\\s\\S]*'; var errRegExp = new RegExp(regex, 'g'); @@ -668,7 +668,7 @@ } function hasCustomToString(obj) { - //广州银云信息科技有限公司,处理 object 没有正常转换 bug + //EOAPI,处理 object 没有正常转换 bug return isFunction(obj.toString) && obj.toString !== toString&&obj.toString()!=="[object Object]";//自定义 //源码:return isFunction(obj.toString) && obj.toString !== toString; //end @@ -3059,7 +3059,7 @@ } ]) .info({ - //广州银云信息科技有限公司 源码:angularVersion: '1.8.2'; + //EOAPI 源码:angularVersion: '1.8.2'; }); } @@ -7231,7 +7231,7 @@ refresh(lruEntry); } - return eoFnParseConf(data[key]); //广州银云信息科技有限公司,将return data[key]改为return eoFnParseConf(data[key]) + return eoFnParseConf(data[key]); //EOAPI,将return data[key]改为return eoFnParseConf(data[key]) }, @@ -9106,7 +9106,7 @@ var template = (!options.template && !options.templateUrl ? '' : options.template); /** * @description 占位,待处理语言html数据,template - * @author 广州银云信息科技有限公司 + * @author EOAPI */ var ddo = { controller: controller, @@ -9950,7 +9950,7 @@ } /** * @desc 加入默认class,便于后续删除 - * @author 广州银云信息科技有限公司 + * @author EOAPI */ // if(!$linkNode.hasClass("eoui_view"))$linkNode.addClass("eoscope_"+scope.$id) /**--end-- */ @@ -11138,7 +11138,7 @@ var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn; /** * @description 占位,待处理语言html数据,templateUrl - * @author 广州银云信息科技有限公司 + * @author EOAPI */ if (window.eoLang) { content = denormalizeTemplate(eoFunParseLang(content)); @@ -18995,7 +18995,7 @@ } /** * @desc 自动自循环去清理节点 - * @author 广州银云信息科技有限公司 + * @author EOAPI */ function cleanUpScope($scope) { // Support: IE 9 only @@ -19012,7 +19012,7 @@ // } $scope = $scope.$parent = $scope.$$nextSibling = $scope.$$prevSibling = $scope.$$childHead = $scope.$$childTail = $scope.$root = $scope.$$watchers = null; } - /**--start old--- 广州银云信息科技有限公司 + /**--start old--- EOAPI * function cleanUpScope($scope) { * * // Support: IE 9 only @@ -19040,7 +19040,7 @@ * $scope.$parent = $scope.$$nextSibling = $scope.$$prevSibling = $scope.$$childHead = * $scope.$$childTail = $scope.$root = $scope.$$watchers = null; *} - *---end 广州银云信息科技有限公司 + *---end EOAPI */ /** @@ -23672,7 +23672,7 @@ fn, match; format = format || 'mediumDate'; - //广州银云信息科技有限公司--start + //EOAPI--start var tmpLangTarget = { en: "DATETIME_FORMATS", cn: "DATETIME_FORMATS_CN" @@ -33080,7 +33080,7 @@ // if object, extract keys, in enumeration order, unsorted optionValuesKeys = []; for (var itemKey in optionValues) { - //@desc 广州银云信息科技有限公司,去除&& itemKey.charAt(0) !== '$'判断 + //@desc EOAPI,去除&& itemKey.charAt(0) !== '$'判断 if (optionValues.hasOwnProperty(itemKey)) { optionValuesKeys.push(itemKey); } @@ -34573,7 +34573,7 @@ // if object, extract keys, in enumeration order, unsorted collectionKeys = []; for (var itemKey in collection) { - //@desc 广州银云信息科技有限公司,去除&& itemKey.charAt(0) !== '$'判断 + //@desc EOAPI,去除&& itemKey.charAt(0) !== '$'判断 if (hasOwnProperty.call(collection, itemKey)) { collectionKeys.push(itemKey); } diff --git a/src/ng1/service/group.service.js b/src/ng1/service/group.service.js index 5363b2012..07f326660 100644 --- a/src/ng1/service/group.service.js +++ b/src/ng1/service/group.service.js @@ -1,5 +1,5 @@ /* - * author:广州银云信息科技有限公司 + * author:EOAPI * 分组相关服务js */ angular.module('eolinker') diff --git a/src/ng1/service/groupCommon.service.js b/src/ng1/service/groupCommon.service.js index d1c94a8d1..a09f875c6 100644 --- a/src/ng1/service/groupCommon.service.js +++ b/src/ng1/service/groupCommon.service.js @@ -1,5 +1,5 @@ /** - * @author 广州银云信息科技有限公司 + * @author EOAPI * @description 分组操作服务 * @required Group_MultistageService */