k3cloud-sdk 0.4.7 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/k3cloud.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative "k3cloud/version"
4
4
  require "logger"
5
+ require "json"
5
6
  require "k3cloud/configuration"
6
7
  require "k3cloud/k3cloud_api"
7
8
  require "forwardable"
@@ -19,20 +20,76 @@ module K3cloud
19
20
  end
20
21
 
21
22
  def logger
22
- @logger ||= ::Logger.new($stderr)
23
+ @logger ||= build_logger
24
+ end
25
+
26
+ # 注入自定义 logger(例如 Rails.logger)。设为 nil 可触发下次重建。
27
+ attr_writer :logger
28
+
29
+ # 重建默认 logger(切换 log_format 后调用)
30
+ def reset_logger!
31
+ @logger = nil
23
32
  end
24
33
 
25
34
  def new_api(config = nil)
26
- if config
27
- K3cloud::K3cloudApi.new(config)
35
+ config ? K3cloud::K3cloudApi.new(config) : default_api
36
+ end
37
+
38
+ # 默认账号客户端(带缓存;传入新 config 不会污染此处)
39
+ def default_api
40
+ @default_api ||= K3cloud::K3cloudApi.new
41
+ end
42
+
43
+ # 测试/重新配置时重置默认客户端
44
+ def reset_default_api!
45
+ @default_api = nil
46
+ end
47
+
48
+ API_METHODS = %i[
49
+ execute_bill_query execute_bill_query_all view
50
+ draft save batch_save submit delete
51
+ audit un_audit
52
+ cancel_assign push execute_operation
53
+ allocate cancel_allocate
54
+ group_save query_group_info group_delete
55
+ attachment_upload attachment_download
56
+ query_business_info get_sys_report_data
57
+ flex_save send_msg disassembly workflow_audit
58
+ switch_org
59
+ ].freeze
60
+
61
+ def_delegators :default_api, *API_METHODS
62
+
63
+ private
64
+
65
+ def build_logger
66
+ logger = ::Logger.new($stderr)
67
+ logger.formatter = method(:format_log)
68
+ logger
69
+ end
70
+
71
+ # 根据 Configuration.default.log_format 决定输出::text(默认)或 :json
72
+ def format_log(severity, datetime, _progname, msg)
73
+ if Configuration.default.log_format == :json
74
+ format_log_json(severity, datetime, msg)
28
75
  else
29
- @default_api ||= K3cloud::K3cloudApi.new
76
+ format_log_text(severity, datetime, msg)
30
77
  end
31
78
  end
32
79
 
33
- def_delegators :new_api, :draft, :save, :batch_save, :submit, :audit, :un_audit, :view, :execute_bill_query, :delete,
34
- :cancel_assign, :push, :execute_operation, :allocate, :cancel_allocate, :group_save, :query_group_info,
35
- :group_delete, :attachment_upload, :attachment_download, :query_business_info, :get_sys_report_data,
36
- :flex_save, :send_msg, :disassembly, :workflow_audit, :switch_org
80
+ def format_log_json(severity, datetime, msg)
81
+ "#{{ msg: msg.to_s, level: severity, time: datetime.strftime("%Y-%m-%dT%H:%M:%S.%L") }.to_json}\n"
82
+ end
83
+
84
+ def format_log_text(severity, datetime, msg)
85
+ format(
86
+ "%s, [%s#%d] %5s -- %s\n",
87
+ severity[0..0],
88
+ datetime.strftime("%Y-%m-%dT%H:%M:%S.%L"),
89
+ Process.pid,
90
+ severity,
91
+ msg.to_s
92
+ )
93
+ end
37
94
  end
38
95
  end
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: k3cloud-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.7
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - zevinto
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-02-18 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies: []
13
- description: Ruby Gem for K3cloud OpenApi that uses cryptographic signature technology
12
+ description: Ruby Gem for K3cloud OpenApi. Uses cryptographic signature technology
14
13
  to avoid plaintext transmission of keys and enables automatic login.
15
14
  email:
16
15
  - zevinto@163.com
@@ -35,6 +34,7 @@ files:
35
34
  - lib/k3cloud-sdk.rb
36
35
  - lib/k3cloud.rb
37
36
  - lib/k3cloud/configuration.rb
37
+ - lib/k3cloud/errors/configuration_error.rb
38
38
  - lib/k3cloud/errors/k3cloud_error.rb
39
39
  - lib/k3cloud/errors/response_error.rb
40
40
  - lib/k3cloud/http.rb
@@ -49,7 +49,10 @@ licenses:
49
49
  - MIT
50
50
  metadata:
51
51
  homepage_uri: https://github.com/zevinto/k3cloud-sdk
52
- post_install_message:
52
+ source_code_uri: https://github.com/zevinto/k3cloud-sdk
53
+ changelog_uri: https://github.com/zevinto/k3cloud-sdk/blob/main/CHANGELOG.md
54
+ bug_tracker_uri: https://github.com/zevinto/k3cloud-sdk/issues
55
+ rubygems_mfa_required: 'true'
53
56
  rdoc_options: []
54
57
  require_paths:
55
58
  - lib
@@ -57,15 +60,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
57
60
  requirements:
58
61
  - - ">="
59
62
  - !ruby/object:Gem::Version
60
- version: 2.0.0
63
+ version: 2.5.0
61
64
  required_rubygems_version: !ruby/object:Gem::Requirement
62
65
  requirements:
63
66
  - - ">="
64
67
  - !ruby/object:Gem::Version
65
68
  version: '0'
66
69
  requirements: []
67
- rubygems_version: 3.5.18
68
- signing_key:
70
+ rubygems_version: 3.6.9
69
71
  specification_version: 4
70
72
  summary: Ruby Gem for K3cloud API.
71
73
  test_files: []