ice-jade 0.6.0 → 0.8.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.
- checksums.yaml +4 -4
- data/README.md +104 -11
- data/bin/mcp_server.rb +551 -0
- data/examples/comparison_getter.rb +193 -0
- data/examples/getter_usage.rb +85 -0
- data/lib/http_getter.rb +159 -0
- data/lib/ice_jade/getter/client.rb +78 -0
- data/lib/ice_jade/getter.rb +3 -0
- data/lib/ice_jade/poster/client.rb +7 -136
- data/lib/ice_jade/transport.rb +179 -0
- data/lib/ice_jade/version.rb +1 -1
- data/lib/ice_jade.rb +1 -0
- metadata +12 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8b39e51e5e392d1d9ffd1ee3c991a0e22ea515a03b3ce3f2450642c8b460e595
|
|
4
|
+
data.tar.gz: 960d1cb2bd5f82023ed99de8ceff20dff679356a409086aecf89b0884b3895a7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8f3a1b54514dde13911ab21a994c6b1b0ff4a1e66facc77328fd69459406090c86eb773bbb7ab24726b31c784a1ec2140703cec161aaecd30053132c4bbf03c9
|
|
7
|
+
data.tar.gz: 28e26d266c4df37adfc552f4edcab9c883c6922c68196cf40532131571fa88004d225aa2b38e6b1f234b75c6c3f12adf2851d22ed3de21245e9b3035cb74a10e
|
data/README.md
CHANGED
|
@@ -1,10 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
AIGC:
|
|
3
|
+
ContentProducer: '001191110102MAD55U9H0F10002'
|
|
4
|
+
ContentPropagator: '001191110102MAD55U9H0F10002'
|
|
5
|
+
Label: '1'
|
|
6
|
+
ProduceID: '2bf760a7-7607-4806-8069-7ba5b57e6265'
|
|
7
|
+
PropagateID: '2bf760a7-7607-4806-8069-7ba5b57e6265'
|
|
8
|
+
ReservedCode1: '8dccec88-f08e-4a37-b7b8-a490337b1a1c'
|
|
9
|
+
ReservedCode2: '8dccec88-f08e-4a37-b7b8-a490337b1a1c'
|
|
10
|
+
---
|
|
11
|
+
|
|
1
12
|
# ice-jade
|
|
2
13
|
|
|
3
14
|
ice-jade 是一个基于 Ruby 标准库的轻量级工具集,零外部依赖。最初定位是 IM Webhook SDK,现已扩展为包含多个独立分支的通用 HTTP 工具包:
|
|
4
15
|
|
|
5
16
|
- **Quantum** — IM Webhook 客户端
|
|
6
17
|
- **Poster** — 通用 HTTP POST 客户端
|
|
18
|
+
- **Getter** — 通用 HTTP GET 客户端
|
|
7
19
|
- **HttpPoster** — 独立模块级 HTTP POST 工具
|
|
20
|
+
- **HttpGetter** — 独立模块级 HTTP GET 工具
|
|
8
21
|
- **Cradle** — HTTP 测试服务器
|
|
9
22
|
- **YAMLServer** — YAML 配置驱动的测试服务器实例
|
|
10
23
|
|
|
@@ -60,7 +73,7 @@ client.upload_and_send_file("/path/to/report.pdf")
|
|
|
60
73
|
|
|
61
74
|
## 分支二:Poster
|
|
62
75
|
|
|
63
|
-
`IceJade::Poster::Client` 是通用 HTTP POST 客户端,面向对象设计,支持 JSON / Form / Multipart,内置超时重试和统一 `Response` 包装。
|
|
76
|
+
`IceJade::Poster::Client` 是通用 HTTP POST 客户端,面向对象设计,支持 JSON / Form / Multipart,内置超时重试和统一 `Response` 包装。GET 请求请使用并列的 `IceJade::Getter::Client`。
|
|
64
77
|
|
|
65
78
|
### 快速开始
|
|
66
79
|
|
|
@@ -92,15 +105,43 @@ resp = poster.post('/hook', '<xml>...</xml>', content_type: 'application/xml')
|
|
|
92
105
|
| 分支 | 定位 | 典型场景 |
|
|
93
106
|
|------|------|----------|
|
|
94
107
|
| Quantum | IM Webhook 专用 SDK | 向企业 IM 群机器人发消息 |
|
|
95
|
-
| Poster | 通用 HTTP POST 客户端 |
|
|
108
|
+
| Poster | 通用 HTTP POST 客户端 | JSON/Form/Multipart 提交、Webhook、文件上传 |
|
|
109
|
+
| Getter | 通用 HTTP GET 客户端 | 查询接口、健康检查、资源拉取 |
|
|
96
110
|
|
|
97
|
-
|
|
111
|
+
三者共享 `IceJade::Transport`、`IceJade::Response` 与 `IceJade::Error`,响应处理风格一致。
|
|
98
112
|
|
|
99
|
-
详细文档:`documents/poster-api.md`
|
|
113
|
+
详细文档:`documents/poster-api.md`、`documents/getter-api.md`
|
|
100
114
|
|
|
101
115
|
---
|
|
102
116
|
|
|
103
|
-
## 分支三:
|
|
117
|
+
## 分支三:Getter
|
|
118
|
+
|
|
119
|
+
`IceJade::Getter::Client` 是通用 HTTP GET 客户端,与 `Poster::Client` 并列,专责 GET 请求。底层传输能力(URI 拼接、超时重试、Response 包装)复用 `IceJade::Transport`,两者仅 HTTP 动词与参数构造不同。
|
|
120
|
+
|
|
121
|
+
### 快速开始
|
|
122
|
+
|
|
123
|
+
```ruby
|
|
124
|
+
require 'ice_jade'
|
|
125
|
+
|
|
126
|
+
getter = IceJade::Getter::Client.new(
|
|
127
|
+
base_url: 'https://api.example.com',
|
|
128
|
+
headers: { 'Authorization' => 'Bearer token' },
|
|
129
|
+
timeout: 30
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
# GET 带查询参数
|
|
133
|
+
resp = getter.get('/users', params: { page: 1, size: 20 })
|
|
134
|
+
puts resp.data if resp.success?
|
|
135
|
+
|
|
136
|
+
# GET 自定义请求头
|
|
137
|
+
resp = getter.get('/headers', headers: { 'X-Request-ID' => 'uuid-5678' })
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
详细文档:`documents/getter-api.md`
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 分支四:HttpPoster(独立模块)
|
|
104
145
|
|
|
105
146
|
`HttpPoster` 是 `lib/http_poster.rb` 中定义的纯标准库 HTTP POST 工具,零 gem 依赖。它是独立于 ice-jade gem 的扁平化脚本,适合不想引入任何 gem 的场景。
|
|
106
147
|
|
|
@@ -135,7 +176,47 @@ puts res # => Hash(解析后的 JSON)
|
|
|
135
176
|
|
|
136
177
|
---
|
|
137
178
|
|
|
138
|
-
##
|
|
179
|
+
## 分支五:HttpGetter(独立模块)
|
|
180
|
+
|
|
181
|
+
`HttpGetter` 是 `lib/http_getter.rb` 中定义的纯标准库 HTTP GET 工具,零 gem 依赖。它与 `HttpPoster` 并列,构成独立的 POST / GET 工具对,适合不想引入任何 gem 的场景。
|
|
182
|
+
|
|
183
|
+
### 快速开始
|
|
184
|
+
|
|
185
|
+
```ruby
|
|
186
|
+
require_relative 'lib/http_getter'
|
|
187
|
+
|
|
188
|
+
# GET JSON(模块静态方法)
|
|
189
|
+
res = HttpGetter.get_json(
|
|
190
|
+
'https://api.example.com/users',
|
|
191
|
+
{ page: 1, size: 20 },
|
|
192
|
+
{ 'Authorization' => 'Bearer token' },
|
|
193
|
+
{ timeout: 30 }
|
|
194
|
+
)
|
|
195
|
+
puts res # => Hash(解析后的 JSON)
|
|
196
|
+
|
|
197
|
+
# GET 纯文本(不做 JSON 解析)
|
|
198
|
+
text = HttpGetter.get_text('https://example.com/robots.txt')
|
|
199
|
+
puts text # => 原始字符串
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### 与 Getter 的对比
|
|
203
|
+
|
|
204
|
+
| 维度 | HttpGetter | IceJade::Getter::Client |
|
|
205
|
+
|------|------------|-------------------------|
|
|
206
|
+
| 调用方式 | 模块静态方法 | 先 `new` 实例化再调用 |
|
|
207
|
+
| URL 处理 | 只能传完整 URL | 支持 `base_url` + 相对路径 |
|
|
208
|
+
| 参数风格 | 位置参数 `(url,p,h,opts)` | 关键字参数 `(params:)` |
|
|
209
|
+
| 成功返回 | Hash / String | `IceJade::Response` |
|
|
210
|
+
| 错误处理 | 抛 `TimeoutError` / `HttpError` | 包装为 `Response`(不抛异常) |
|
|
211
|
+
| 原始文本 | `get_text` 直接返回 String | 统一 Response(`data` 自动解析) |
|
|
212
|
+
| 所属体系 | 独立脚本(无依赖) | ice-jade gem 分支 |
|
|
213
|
+
| 典型场景 | 快速脚本、教学、零依赖 | 正式项目、与 Quantum 混用 |
|
|
214
|
+
|
|
215
|
+
详细文档:`documents/http-getter-api.md`
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## 分支六:Cradle(HTTP 测试服务器)
|
|
139
220
|
|
|
140
221
|
Cradle 是轻量级 HTTP 测试服务器,基于 Ruby 标准库 `socket` + `thread`,零外部依赖。用于本地测试 Poster、Quantum 或其他 HTTP 客户端。
|
|
141
222
|
|
|
@@ -167,7 +248,7 @@ server.start
|
|
|
167
248
|
|
|
168
249
|
---
|
|
169
250
|
|
|
170
|
-
##
|
|
251
|
+
## 分支七:YAMLServer(YAML 配置驱动的测试实例)
|
|
171
252
|
|
|
172
253
|
YAMLServer 通过载入 YAML 配置文件启动定制化的 HTTP 测试实例,无需写 Ruby 代码注册路由,适合频繁切换测试场景。
|
|
173
254
|
|
|
@@ -222,17 +303,21 @@ Cradle 和 YAMLServer 都可以通过扩展代码添加新功能,变成满足
|
|
|
222
303
|
```
|
|
223
304
|
lib/
|
|
224
305
|
ice_jade.rb # 主入口
|
|
225
|
-
http_poster.rb #
|
|
306
|
+
http_poster.rb # 独立 POST 模块(零依赖)
|
|
307
|
+
http_getter.rb # 独立 GET 模块(零依赖)
|
|
226
308
|
ice_jade/
|
|
227
309
|
version.rb
|
|
228
310
|
error.rb
|
|
229
311
|
response.rb
|
|
230
312
|
client_base.rb
|
|
313
|
+
transport.rb # Poster/Getter 共享传输层
|
|
231
314
|
quantum/
|
|
232
315
|
client.rb
|
|
233
316
|
message.rb
|
|
234
317
|
poster/
|
|
235
|
-
client.rb
|
|
318
|
+
client.rb # POST 客户端
|
|
319
|
+
getter/
|
|
320
|
+
client.rb # GET 客户端
|
|
236
321
|
cradle/
|
|
237
322
|
server.rb # 原生服务器
|
|
238
323
|
yaml_server.rb # YAML 配置层
|
|
@@ -247,13 +332,17 @@ config/cradle/
|
|
|
247
332
|
examples/
|
|
248
333
|
quantum_usage.rb # Quantum 用法示例
|
|
249
334
|
poster_usage.rb # Poster + YAMLServer 联测
|
|
335
|
+
getter_usage.rb # Getter + YAMLServer 联测
|
|
250
336
|
comparison_poster.rb # HttpPoster vs Poster 对比
|
|
337
|
+
comparison_getter.rb # HttpGetter vs Getter 对比
|
|
251
338
|
cradle_usage.rb # Cradle 服务器用法
|
|
252
339
|
|
|
253
340
|
documents/
|
|
254
341
|
im-quantum-api.md # Quantum API 文档
|
|
255
342
|
poster-api.md # Poster API 文档
|
|
343
|
+
getter-api.md # Getter API 文档
|
|
256
344
|
http-poster-api.md # HttpPoster 文档
|
|
345
|
+
http-getter-api.md # HttpGetter 文档
|
|
257
346
|
cradle-api.md # Cradle 文档
|
|
258
347
|
yaml-server-api.md # YAMLServer 文档
|
|
259
348
|
cradle-extension.md # 扩展指南
|
|
@@ -268,8 +357,10 @@ documents/
|
|
|
268
357
|
```
|
|
269
358
|
ice-jade/
|
|
270
359
|
├── Quantum # IM Webhook 客户端
|
|
271
|
-
├── Poster # 通用 HTTP POST 客户端
|
|
272
|
-
├──
|
|
360
|
+
├── Poster # 通用 HTTP POST 客户端 ┐
|
|
361
|
+
├── Getter # 通用 HTTP GET 客户端 ┤ 共享 Transport
|
|
362
|
+
├── HttpPoster # 独立 POST 模块(零 gem 依赖) ┐
|
|
363
|
+
├── HttpGetter # 独立 GET 模块(零 gem 依赖) ┘ 并列独立工具对
|
|
273
364
|
├── Cradle # HTTP 测试服务器
|
|
274
365
|
└── YAMLServer # YAML 配置层(基于 Cradle)
|
|
275
366
|
```
|
|
@@ -322,3 +413,5 @@ end
|
|
|
322
413
|
|
|
323
414
|
- Quantum:文件上传 30MB,消息频率 20条/分钟
|
|
324
415
|
- Cradle:不支持 WebSocket、HTTPS、持久连接
|
|
416
|
+
|
|
417
|
+
> AI生成
|