lanmao 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +59 -0
  3. data/.travis.yml +21 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +8 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +47 -0
  8. data/Rakefile +12 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/lanmao.gemspec +45 -0
  12. data/lib/lanmao/api/account/.gitkeep +0 -0
  13. data/lib/lanmao/api/api_helper.rb +57 -0
  14. data/lib/lanmao/api/money/.gitkeep +0 -0
  15. data/lib/lanmao/api/money/auto_withdraw.rb +37 -0
  16. data/lib/lanmao/api/query/.gitkeep +0 -0
  17. data/lib/lanmao/api/query/query_authorization_entrust_pay_record.rb +32 -0
  18. data/lib/lanmao/api/query/query_project_information.rb +32 -0
  19. data/lib/lanmao/api/query/query_transaction.rb +34 -0
  20. data/lib/lanmao/api/query/query_user_information.rb +33 -0
  21. data/lib/lanmao/api/trade/.gitkeep +0 -0
  22. data/lib/lanmao/api/trade/async_transaction.rb +49 -0
  23. data/lib/lanmao/api/trade/establish_project.rb +45 -0
  24. data/lib/lanmao/api/trade/modify_project.rb +34 -0
  25. data/lib/lanmao/client.rb +45 -0
  26. data/lib/lanmao/extensions.rb +7 -0
  27. data/lib/lanmao/form/account/.gitkeep +0 -0
  28. data/lib/lanmao/form/account/activate_stocked_user_form.rb +36 -0
  29. data/lib/lanmao/form/account/check_password_form.rb +35 -0
  30. data/lib/lanmao/form/account/enterprise_register_form.rb +52 -0
  31. data/lib/lanmao/form/account/personal_register_expand_form.rb +44 -0
  32. data/lib/lanmao/form/account/reset_password_form.rb +35 -0
  33. data/lib/lanmao/form/account/user_authorization_form.rb +35 -0
  34. data/lib/lanmao/form/account/user_pre_transaction_form.rb +43 -0
  35. data/lib/lanmao/form/form_helper.rb +34 -0
  36. data/lib/lanmao/form/money/.gitkeep +0 -0
  37. data/lib/lanmao/form/money/recharge_form.rb +65 -0
  38. data/lib/lanmao/form/query/.gitkeep +0 -0
  39. data/lib/lanmao/form/trade/.gitkeep +0 -0
  40. data/lib/lanmao/http/error_code/account.rb +61 -0
  41. data/lib/lanmao/http/error_code/asset.rb +20 -0
  42. data/lib/lanmao/http/error_code/batch.rb +28 -0
  43. data/lib/lanmao/http/error_code/enterprise.rb +12 -0
  44. data/lib/lanmao/http/error_code/form.rb +15 -0
  45. data/lib/lanmao/http/error_code/money.rb +48 -0
  46. data/lib/lanmao/http/error_code/platform.rb +15 -0
  47. data/lib/lanmao/http/error_code/query.rb +48 -0
  48. data/lib/lanmao/http/error_code/trade.rb +52 -0
  49. data/lib/lanmao/http/request.rb +82 -0
  50. data/lib/lanmao/http/response.rb +55 -0
  51. data/lib/lanmao/railtie.rb +7 -0
  52. data/lib/lanmao/sign/rsa.rb +14 -0
  53. data/lib/lanmao/utils.rb +76 -0
  54. data/lib/lanmao/version.rb +3 -0
  55. data/lib/lanmao.rb +55 -0
  56. data/tmp/.gitkeep +0 -0
  57. metadata +270 -0
@@ -0,0 +1,34 @@
1
+ # coding: utf-8
2
+ module Lanmao
3
+ module Api
4
+ module Trade
5
+ module ModifyProject
6
+
7
+ #
8
+ # @return [ Hash ] 结果集
9
+ # * :result [String] "S"/"F"/"P"
10
+ # * :request_params [Hash] 请求参数
11
+ # * :response [Object] 请求返回对象
12
+ # * :code [String] 结果代码
13
+ # * :msg [String] 结果信息
14
+ # * :data: 具体业务返回信息
15
+ #
16
+ def modify_project(request_no, project_no, status)
17
+
18
+ service = 'MODIFY_PROJECT'
19
+
20
+ params = {
21
+ requestNo: request_no,
22
+ projectNo: project_no,
23
+ status: status,
24
+ }
25
+
26
+ res = operate_post(:operate, service, params, :service)
27
+
28
+ res
29
+ end
30
+
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,45 @@
1
+ # coding: utf-8
2
+ # 客户端
3
+
4
+ module Lanmao
5
+ class Client
6
+
7
+ attr_accessor :config
8
+
9
+ def initialize(options_arg)
10
+ options = Utils.symbolize_keys(options_arg)
11
+ @config = {
12
+ path: options[:path],
13
+ platform_no: options[:platform_no],
14
+ key_serial: options[:key_serial],
15
+ private_key: OpenSSL::PKey::RSA.new(options[:private_key]),
16
+ public_key: OpenSSL::PKey::RSA.new(options[:public_key]),
17
+ }
18
+
19
+ # 自动 include api 下的模块
20
+ recursive_include_api('Lanmao::Api')
21
+
22
+ # 自动 include form 下的模块
23
+ recursive_include_api('Lanmao::Form')
24
+ end
25
+
26
+ def verify_data?(data)
27
+ Sign.verify(data, @config)
28
+ end
29
+
30
+ private
31
+
32
+ def recursive_include_api(module_chain)
33
+ modules = eval("#{module_chain}.constants").each{ |constant|
34
+ eval("#{module_chain}::#{constant}").class.kind_of?(Module)
35
+ }
36
+
37
+ if modules.empty?
38
+ self.class.send(:include, eval(module_chain))
39
+ else
40
+ modules.each{ |constant| recursive_include_api("#{module_chain}::#{constant}") }
41
+ end
42
+ end
43
+
44
+ end
45
+ end
@@ -0,0 +1,7 @@
1
+ module NilClassExtension
2
+ def to_d
3
+ 0.to_d
4
+ end
5
+ end
6
+
7
+ NilClass.send(:include, NilClassExtension)
File without changes
@@ -0,0 +1,36 @@
1
+ # coding: utf-8
2
+ module Lanmao
3
+ module Form
4
+ module Account
5
+ module ActivateStockedUserForm
6
+
7
+ # 2.11 会员激活
8
+ #
9
+ # @return [ Hash ] 结果集
10
+ # * :form_method
11
+ # * :method
12
+ # * :url
13
+ # * :form_data
14
+ # * :data
15
+ #
16
+ def activate_stocked_user_form(flow_id, return_url, user_no, auth_list='', check_type='LIMIT', client='MOBILE')
17
+ service = 'ACTIVATE_STOCKED_USER'
18
+
19
+ params = {
20
+ platformUserNo: user_no,
21
+ requestNo: flow_id,
22
+ authList: auth_list,
23
+ redirectUrl: return_url,
24
+ checkType: check_type,
25
+ userDevice: client,
26
+ }
27
+
28
+ res = get_form_data(service, params)
29
+
30
+ res
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ module Lanmao
3
+ module Form
4
+ module Account
5
+ module CheckPasswordForm
6
+
7
+ # 2.8 验证密码
8
+ #
9
+ # @return [ Hash ] 结果集
10
+ # * :form_method
11
+ # * :method
12
+ # * :url
13
+ # * :form_data
14
+ # * :data
15
+ #
16
+ def check_password_form(flow_id, user_no, biz_type_description, return_url, client='MOBILE')
17
+ service = 'CHECK_PASSWORD'
18
+
19
+ params = {
20
+ platformUserNo: user_no,
21
+ requestNo: flow_id,
22
+ bizTypeDescription: biz_type_description,
23
+ redirectUrl: return_url,
24
+ userDevice: client,
25
+ }
26
+
27
+ res = get_form_data(service, params)
28
+
29
+ res
30
+ end
31
+
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,52 @@
1
+ # coding: utf-8
2
+ module Lanmao
3
+ module Form
4
+ module Account
5
+ module EnterpriseRegisterForm
6
+
7
+ # 2.2 企业绑卡注册
8
+ #
9
+ # @return [ Hash ] 结果集
10
+ # * :form_method
11
+ # * :method
12
+ # * :url
13
+ # * :form_data
14
+ # * :data
15
+ #
16
+ def enterprise_register_form(flow_id, user_no, enterprise_name, bank_licence, org_no, tax_no, business_license, unified_code,
17
+ credit_code, legal, id_card_type, legal_id_card_no, contact, contact_phone, role_type,
18
+ bank_card_no, bank_code, return_url, auth_list='', client='MOBILE')
19
+ service = 'ENTERPRISE_REGISTER'
20
+
21
+ params = {
22
+ platformUserNo: user_no,
23
+ requestNo: flow_id,
24
+ enterpriseName: enterprise_name,
25
+ bankLicense: bank_licence,
26
+ orgNo: org_no,
27
+ businessLicense: business_license,
28
+ taxNo: tax_no,
29
+ unifiedCode: unified_code,
30
+ creditCode: credit_code,
31
+ legal: legal,
32
+ idCardType: id_card_type,
33
+ legalIdCardNo: legal_id_card_no,
34
+ contact: contact,
35
+ contactPhone: contact_phone,
36
+ userRole: role_type,
37
+ bankcardNo: bank_card_no,
38
+ bankcode: bank_code,
39
+ redirectUrl: return_url,
40
+ auth_list: auth_list,
41
+ userDevice: client,
42
+ }
43
+
44
+ res = get_form_data(service, params)
45
+
46
+ res
47
+ end
48
+
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,44 @@
1
+ # coding: utf-8
2
+ module Lanmao
3
+ module Form
4
+ module Account
5
+ module PersonalRegisterExpandForm
6
+
7
+ # 2.1 个人绑卡注册
8
+ #
9
+ # @return [ Hash ] 结果集
10
+ # @return [ Hash ] 结果集
11
+ # * :form_method
12
+ # * :method
13
+ # * :url
14
+ # * :form_data
15
+ # * :data
16
+ #
17
+ def personal_register_expand_form(user_no, flow_id, true_name, id_card_no, bank_card_no, phone, id_card_type, role_type, check_type, return_url, user_limit_type='ID_CARD_NO_UNIQUE', auth_list='', client='MOBILE')
18
+ service = 'PERSONAL_REGISTER_EXPAND'
19
+
20
+ params = {
21
+ platformUserNo: user_no,
22
+ requestNo: flow_id,
23
+ realName: true_name,
24
+ idCardNo: id_card_no,
25
+ bankcardNo: bank_card_no,
26
+ mobile: phone,
27
+ idCardType: id_card_type,
28
+ userRole: role_type,
29
+ checkType: check_type,
30
+ redirectUrl: return_url,
31
+ user_limit_type: user_limit_type,
32
+ auth_list: auth_list,
33
+ userDevice: client,
34
+ }
35
+
36
+ res = get_form_data(service, params)
37
+
38
+ res
39
+ end
40
+
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ module Lanmao
3
+ module Form
4
+ module Account
5
+ module ResetPasswordForm
6
+
7
+ # 2.7 修改密码
8
+ #
9
+ # @return [ Hash ] 结果集
10
+ # * :form_method
11
+ # * :method
12
+ # * :url
13
+ # * :form_data
14
+ # * :data
15
+ #
16
+ def reset_password_form(flow_id, user_no, is_skip, return_url, client='MOBILE')
17
+ service = 'RESET_PASSWORD'
18
+
19
+ params = {
20
+ platformUserNo: user_no,
21
+ requestNo: flow_id,
22
+ isSkip: is_skip,
23
+ redirectUrl: return_url,
24
+ userDevice: client,
25
+ }
26
+
27
+ res = get_form_data(service, params)
28
+
29
+ res
30
+ end
31
+
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ module Lanmao
3
+ module Api
4
+ module Account
5
+ module UserAuthorization
6
+
7
+ #
8
+ # @return [ Hash ] 结果集
9
+ # * :result [String] "S"/"F"/"P"
10
+ # * :request_params [Hash] 请求参数
11
+ # * :response [Object] 请求返回对象
12
+ # * :code [String] 结果代码
13
+ # * :msg [String] 结果信息
14
+ # * :data: 具体业务返回信息
15
+ #
16
+ def user_authorization(user_no, request_no, auth_list, redirect_url)
17
+
18
+ service = 'USER_AUTHORIZATION'
19
+
20
+ params = {
21
+ platformUserNo: user_no,
22
+ requestNo: request_no,
23
+ authList: auth_list,
24
+ redirectUrl: redirect_url,
25
+ }
26
+
27
+ res = get_form_data(service, params)
28
+
29
+ res
30
+ end
31
+
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,43 @@
1
+ # coding: utf-8
2
+ module Lanmao
3
+ module Form
4
+ module Account
5
+ module UserPreTransaction
6
+
7
+ #
8
+ # @return [ Hash ] 结果集
9
+ # * :form_method
10
+ # * :method
11
+ # * :url
12
+ # * :form_data
13
+ # * :data
14
+ #
15
+ def user_pre_transaction(request_no, user_no, biz_type,
16
+ amount, expired, redirect_url,
17
+ project_no, share, creditsale_request_no,
18
+ pre_marketing_amount, remark="")
19
+ service = 'USER_PRE_TRANSACTION'
20
+
21
+ params = {
22
+ platformUserNo: user_no,
23
+ requestNo: request_no,
24
+ bizType: biz_type,
25
+ amount: amount,
26
+ expired: expired,
27
+ redirectUrl: redirect_url,
28
+ projectNo: project_no,
29
+ share: share,
30
+ creditsaleRequestNo: creditsale_request_no,
31
+ preMarketingAmount: pre_marketing_amount,
32
+ remark: remark,
33
+ }
34
+
35
+ res = get_form_data(service, params)
36
+
37
+ res
38
+ end
39
+
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,34 @@
1
+ # coding: utf-8
2
+ module Lanmao
3
+ module Form
4
+ module DataHelper
5
+
6
+ # 跳转到新网 Form 类的 api,统一返回处理
7
+ #
8
+ # @param service [ String ] 富民的服务
9
+ # @param params [ Hash ] 参数
10
+ # @param post_path [ String ] post url
11
+ #
12
+ # @return [ Hash ] 结果集
13
+ # * form_method
14
+ # * url
15
+ # * method
16
+ # * form_data
17
+ # * :data
18
+ #
19
+ def get_form_data(service, params)
20
+ request = Http::Request.new(params, @config, service, :gateway)
21
+ body, url = request.get_body
22
+
23
+ {
24
+ form_method: {
25
+ :url => url,
26
+ :method => :post,
27
+ },
28
+ form_data: body.merge(userDevice: params[:userDevice]),
29
+ }
30
+ end
31
+
32
+ end # DataHelper
33
+ end
34
+ end
File without changes
@@ -0,0 +1,65 @@
1
+ # coding: utf-8
2
+ module Lanmao
3
+ module Form
4
+ module Money
5
+ module Recharge
6
+ # 绑定卡到电子账户充值
7
+ #
8
+ # @return [ Hash ] 结果集
9
+ # * :result [String] "S"/"F"/"P"
10
+ # * :request_params [Hash] 请求参数
11
+ # * :response [Object] 请求返回对象
12
+ # * :code [String] 结果代码
13
+ # * :msg [String] 结果信息
14
+ # * :data: 具体业务返回信息
15
+ # * :requestNo [String] 请求流水号
16
+ # * :code [String] 调用状态(0 为调用成功、1 为失败,返回 1 时请看【调用失败错误码】及错误码 描述)
17
+ # * :status [String] 业务处理状态(处理失败 INIT;处理成功 SUCCESS),平台可根据非 SUCCESS 状态做相应处理,处理失败时可参考错误码及描述
18
+ # * :errorCode [String] 错误码、若支付失败时,显示存管错误码信息
19
+ # * :errorMessage [String] 错误码描述,若支付失败时,显示存管错误码描述
20
+ # * :rechargeStatus [String] 充值状态;SUCCESS 支付成功、FAIL 支付失败、PENDDING 支付中(充值结果以此状态为准)
21
+ # * :platformUserNo [String] 平台用户编号
22
+ # * :amount [String] 充值金额
23
+ # * :commission [String] 平台佣金
24
+ # * :payCompany [String] 支付公司
25
+ # * :rechareWay [String] 支付方式
26
+ # * :bankcode [String] 银行编码(只有快捷会返回)
27
+ # * :payMobile [String] 本次充值手机号,网银为空
28
+ # * :transactionTime [String] 交易完成时间
29
+ # * :channelErrorCode [String] 支付通道错误码(若快捷充值回调方式传入 DIRECT_CALLBACK,则返回 此参数)技术支持单独提供
30
+ # * :channelErrorMessage [String] 支付通道返回错误消息(若快捷充值回调方式传入 DIRECT_CALLBACK, 则返回此参数)技术支持单独提供
31
+ #
32
+ def recharge(platform_user_no, request_no, amount,
33
+ expect_pay_company, recharge_way="SWIFT",
34
+ redirect_url, expired,
35
+ commission, bankcode, pay_type,
36
+ authtrade_type, authtender_amount,
37
+ project_no, callback_mode)
38
+
39
+ service = "RECHARGE"
40
+
41
+ params = {
42
+ platformUserNo: platform_user_no,
43
+ requestNo: request_no,
44
+ amount: amount,
45
+ expectPayCompany: expect_pay_company,
46
+ rechargeWay: recharge_way,
47
+ redirectUrl: redirect_url,
48
+ expired: expired,
49
+ commission: commission,
50
+ bankcode: bankcode,
51
+ payType: pay_type,
52
+ authtradeType: authtrade_type,
53
+ authtenderAmount: authtender_amount,
54
+ projectNo: project_no,
55
+ callbackMode: callback_mode,
56
+ }
57
+
58
+ res = get_form_data(service, params)
59
+
60
+ res
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
File without changes
File without changes
@@ -0,0 +1,61 @@
1
+ # coding: utf-8
2
+
3
+ module Lanmao
4
+ module Http
5
+ module ErrorCode
6
+
7
+ def self.create_account_p
8
+ @_create_account ||= %w[RD000601 RD000602 RD000603 RD000604 RD000605 RD777777 RD10001]
9
+ end
10
+
11
+ def self.marketing_query
12
+ @_marketing_query ||= %w[ ]
13
+ end
14
+
15
+ def self.account_credits
16
+ @_account_credits ||= %w[RD000203 RD000537]
17
+ end
18
+
19
+ def self.account_transaction_query
20
+ @_account_transaction_query ||= %w[]
21
+ end
22
+
23
+ def self.create_account_sr_query
24
+ @_create_account_sr_query ||= %w[]
25
+ end
26
+
27
+ def self.gateway_query
28
+ @_gateway_query ||= %w[]
29
+ end
30
+
31
+ def self.set_password_p
32
+ @_set_password ||= %w[RD1031303 RD1031304 RD10001 RD001034 RD000602 RD001024 RD9997
33
+ RD1031301 RD000603 RD000604 RD000605]
34
+ end
35
+
36
+ def self.bind_bank_card_p
37
+ @_bind_bank_card ||= []
38
+ end
39
+
40
+ def self.account_balance
41
+ @_account_balance ||= []
42
+ end
43
+
44
+ def self.find_account_by_mobile
45
+ @_find_account_by_mobile ||= %w[T130016 T2600120]
46
+ end
47
+
48
+ def self.find_account_by_id
49
+ @_find_account_by_id ||= %w[RD000061 RD000089 RD000060 RD000063]
50
+ end
51
+
52
+ def self.set_password_query
53
+ @_set_password_query ||= %w[]
54
+ end
55
+
56
+ def self.binding_list
57
+ @_binding_list ||= %w[]
58
+ end
59
+ end # module ErrorCode
60
+ end
61
+ end
@@ -0,0 +1,20 @@
1
+ # coding: utf-8
2
+
3
+ module Lanmao
4
+ module Http
5
+ module ErrorCode
6
+
7
+ def self.assets_enroll
8
+ @_assets_enroll ||= %w[RD000189 RD000191 RD000388 RD000391 RD000435 RD000537]
9
+ end
10
+
11
+ def self.assets_revoke
12
+ @_assets_revoke ||= %w[RD000001 RD000005 RD000027 RD000439 RD000490 RD000537]
13
+ end
14
+
15
+ def self.asset_query
16
+ @_assets_revoke ||= %w[]
17
+ end
18
+ end # module ErrorCode
19
+ end
20
+ end
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+
3
+ module Lanmao
4
+ module Http
5
+ module ErrorCode
6
+
7
+ def self.batch_payment_b
8
+ @_batch_payment ||= %w[]
9
+ end
10
+
11
+ def self.batch_repayment_b
12
+ @_batch_payment ||= %w[RD000195]
13
+ end
14
+
15
+ def self.batch_end_credit_b
16
+ @_batch_payment ||= %w[]
17
+ end
18
+
19
+ def self.batch_coupon_b
20
+ @_batch_coupon_b ||= %w[]
21
+ end
22
+
23
+ def self.batch_notify_resend_b
24
+ @_batch_notify_resend_b ||= %w[]
25
+ end
26
+ end # module ErrorCode
27
+ end
28
+ end
@@ -0,0 +1,12 @@
1
+ # coding: utf-8
2
+ module Lanmao
3
+ module Http
4
+ module ErrorCode
5
+
6
+ def self.enterprise_add
7
+ @_enterprise_add ||= %w[400 401 403 404 405 410 429 500 503]
8
+ end
9
+
10
+ end # module ErrorCode
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ # coding: utf-8
2
+
3
+ module Lanmao
4
+ module Http
5
+ module ErrorCode
6
+ def self.sign_again_p
7
+ @_sign_again_p ||= %w[]
8
+ end
9
+
10
+ def self.trustee_pay_p
11
+ @_trustee_pay_p ||= %w[]
12
+ end
13
+ end # module ErrorCode
14
+ end
15
+ end
@@ -0,0 +1,48 @@
1
+ # coding: utf-8
2
+
3
+ module Lanmao
4
+ module Http
5
+ module ErrorCode
6
+
7
+ def self.bank_recharge
8
+ @_bank_recharge ||= []
9
+ end
10
+
11
+ def self.recharge_p
12
+ @_recharge_p ||= []
13
+ end
14
+
15
+ def self.withdraw_p
16
+ @_withdraw_p ||= []
17
+ end
18
+
19
+ def self.coupon_recharge
20
+ @_coupon_recharge ||= []
21
+ end
22
+
23
+ def self.coupon_withdraw
24
+ @_coupon_withdraw ||= []
25
+ end
26
+
27
+ def self.sign_borrower_p
28
+ @_sign_borrower_p ||= []
29
+ end
30
+
31
+ def self.sign_transfer_p
32
+ @_sign_transfer_p ||= []
33
+ end
34
+
35
+ def self.sign_payment_query
36
+ @_sign_payment_query ||= []
37
+ end
38
+
39
+ def self.sign_repayment_query
40
+ @_sign_repayment_query ||= []
41
+ end
42
+
43
+ def self.sign_transfer_check
44
+ @_sign_transfer_check ||= []
45
+ end
46
+ end # module ErrorCode
47
+ end
48
+ end
@@ -0,0 +1,15 @@
1
+ # coding: utf-8
2
+
3
+ module Lanmao
4
+ module Http
5
+ module ErrorCode
6
+ def self.money_dispatch
7
+ @_money_dispatch ||= %w[RD000001 RD000005 RD000012 RD000017 RD000537]
8
+ end
9
+
10
+ def self.money_revoke
11
+ @_money_revoke ||= %w[RD000004 RD000008]
12
+ end
13
+ end # module ErrorCode
14
+ end
15
+ end