Module: JPSClient::API::ProjectPackage

Included in:
Client
Defined in:
lib/jpsclient/api/project_package.rb

Overview

项目包管理相关 API 处理 /api/project_package/* 路径的所有接口

支持的功能:

  • 上传项目包

  • 上传 NuGet 包

  • 获取项目包列表

  • 更新项目包信息

  • 签名项目包

  • 发送项目包消息通知

  • 绑定提交记录

  • 预览项目包

  • 获取绑定列表

Instance Method Summary collapse

Instance Method Details

#bind_commit_to_package(commitId:, projectPackageIds:) ⇒ Object

绑定提交记录到项目包



194
195
196
197
198
199
200
201
202
203
204
205
# File 'lib/jpsclient/api/project_package.rb', line 194

def bind_commit_to_package(commitId:, projectPackageIds:)
  config = @request_config && @request_config["project_package_bind_commit"]
  raise JPSClient::ExceptionError, "Missing config for project_package_bind_commit" unless config && config["url"]
  path = config["url"]

  body_params = {
  commitId: commitId,
  projectPackageIds: projectPackageIds
  }

  return request_with_auth(:post, path, body: body_params)
end

#get_project_package_bind_list(projectId:) ⇒ Object

获取项目包绑定列表



226
227
228
229
230
231
232
233
234
235
236
# File 'lib/jpsclient/api/project_package.rb', line 226

def get_project_package_bind_list(projectId:)
  config = @request_config && @request_config["project_package_bind_list"]
  raise JPSClient::ExceptionError, "Missing config for project_package_bind_list" unless config && config["url"]
  path = config["url"]

  get_params = {
  projectId: projectId
  }

  return request_with_auth(:get, path, params: get_params)
end

#get_project_package_list(projectId: nil, params: nil) ⇒ Hash

获取项目包列表

Parameters:

  • projectId (String) (defaults to: nil)

    项目ID(必需)

  • params (Hash) (defaults to: nil)

    可选参数

Options Hash (params:):

  • :pageNo (Integer)

    页码(默认 1)

  • :pageSize (Integer)

    每页数量(默认 20)

  • :uploadBy (String)

    上传者筛选

  • :nativePackageType (String)

    包类型筛选(ipa/apk/zip)

  • :packageName (String)

    包名称筛选

  • :startTimestamp (Integer)

    开始时间戳

  • :endTimestamp (Integer)

    结束时间戳

Returns:

  • (Hash)

    API响应

Raises:



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/jpsclient/api/project_package.rb', line 117

def get_project_package_list(projectId:nil, params:nil)
  params = {} if params.nil?
  config = @request_config && @request_config["project_package_list"]
  raise JPSClient::ExceptionError, "Missing config for project_package_list" unless config && config["url"]
  path = config["url"]

  get_params = {
  projectId: projectId,
  pageNo: params[:pageNo] || 1,
  pageSize: params[:pageSize] || 20,
  }

  # 添加可选的筛选参数
  get_params[:uploadBy] = params[:uploadBy] if params[:uploadBy]
  get_params[:nativePackageType] = params[:nativePackageType] if params[:nativePackageType]
  get_params[:packageName] = params[:packageName] if params[:packageName]
  get_params[:startTimestamp] = params[:startTimestamp] if params[:startTimestamp]
  get_params[:endTimestamp] = params[:endTimestamp] if params[:endTimestamp]

  # 处理响应数据格式
  response_data = request_with_auth(:get, path, params: get_params)
  if response_data && response_data['data'] && response_data['data']['packages']
    # 新的API格式:返回 packages 数组
    response_data['data'] = response_data['data']['packages']
  end

  return response_data
end

#preview_project_package(params:) ⇒ Object

预览项目包



208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
# File 'lib/jpsclient/api/project_package.rb', line 208

def preview_project_package(params:)
  config = @request_config && @request_config["project_package_preview"]
  raise JPSClient::ExceptionError, "Missing config for project_package_preview" unless config && config["url"]
  path = config["url"]

  get_params = {
  id: params[:id],
  url: params[:url],
  packId: params[:packId],
  packageType: params[:packageType],
  packageVersion: params[:packageVersion],
  projectId: params[:projectId]
  }.compact # 移除nil值

  return request_with_auth(:get, path, params: get_params)
end

#send_project_package_message(projectId: nil, packageId: nil, chatEnv: nil, receiveType: nil, indexNo: nil) ⇒ Object

发送项目包消息



175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# File 'lib/jpsclient/api/project_package.rb', line 175

def send_project_package_message(projectId:nil, packageId:nil, chatEnv: nil, receiveType:nil, indexNo:nil)
  config = @request_config && @request_config["project_package_send_message"]
  raise JPSClient::ExceptionError, "Missing config for project_package_send_message" unless config && config["url"]
  path = config["url"]

  body_params = {
  receiveType: receiveType,
  projectId: projectId,
  projectPackageId: packageId,
  chatEnv: chatEnv
  }

  # 添加可选参数
  body_params[:indexNo] = indexNo if indexNo

  return request_with_auth(:post, path, body: body_params)
end

#sign_project_package(packageId: nil, certId: nil) ⇒ Object

签名项目包



161
162
163
164
165
166
167
168
169
170
171
172
# File 'lib/jpsclient/api/project_package.rb', line 161

def sign_project_package(packageId:nil, certId:nil)
  config = @request_config && @request_config["project_package_sign"]
  raise JPSClient::ExceptionError, "Missing config for project_package_sign" unless config && config["url"]
  path = config["url"]

  body_params = {
  projectPackageId: packageId,  # 根据文档使用 projectPackageId
  certId: certId
  }

  return request_with_auth(:post, path, body: body_params)
end

#update_project_package(id:, description: nil) ⇒ Object

更新项目包信息(备注等)



147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/jpsclient/api/project_package.rb', line 147

def update_project_package(id:, description:nil)
  config = @request_config && @request_config["project_package_update"]
  raise JPSClient::ExceptionError, "Missing config for project_package_update" unless config && config["url"]
  path = config["url"]

  body_params = {
  id: id,
  description: description
  }.compact # 移除nil值

  return request_with_auth(:post, path, body: body_params)
end

#upload_nuget_package(projectId: nil, params: nil) ⇒ Hash

上传 NuGet 包用于上传 NuGet 包到项目,不需要 workflowId 参数

Parameters:

  • projectId (String) (defaults to: nil)

    项目ID(必需)

  • params (Hash) (defaults to: nil)

    可选参数

Options Hash (params:):

  • :packageUrl (String)

    包文件URL(必需)

  • :description (String)

    包描述

  • :attachFileUrls (Array<String>)

    附件文件URL列表

  • :chatEnv (String)

    聊天环境

  • :commitId (String)

    提交ID

  • :projectPackageId (String)

    项目包ID

Returns:

  • (Hash)

    API响应

Raises:



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/jpsclient/api/project_package.rb', line 63

def upload_nuget_package(projectId:nil, params:nil)
  puts "========1111 upload_nuget_package"  if ENV['PINDO_DEBUG']
  config = @request_config && @request_config["project_package_upload_nuget"]
  raise JPSClient::ExceptionError, "Missing config for project_package_upload_nuget" unless config && config["url"]
  path = config["url"]

  body_params = {
  projectId: projectId
  }

  # 合并传入的参数
  if params
    params.each { |key,value| body_params[key] = value }
  end

  # 确保必要的字段存在(不包括 workflowId)
  body_params[:packageUrl] ||= params&.dig(:packageUrl)
  body_params[:description] ||= params&.dig(:description)
  body_params[:attachFileUrls] ||= params&.dig(:attachFileUrls) || []
  body_params[:chatEnv] ||= params&.dig(:chatEnv)
  body_params[:commitId] ||= params&.dig(:commitId)
  body_params[:projectPackageId] ||= params&.dig(:projectPackageId)

  # 移除值为nil的键
  body_params.compact!

  if ENV['PINDO_DEBUG']
    puts "[DEBUG]upload_nuget_package  upload_nuget_package 请求详情:"
    puts "[DEBUG]upload_nuget_package    URL: #{path}"
    puts "[DEBUG]upload_nuget_package    请求体:"
    body_params.each do |key, value|
      if value.is_a?(Array)
        puts "[DEBUG]upload_nuget_package      #{key}: #{value.inspect}"
      else
        puts "[DEBUG]upload_nuget_package      #{key}: #{value}"
      end
    end
  end

  return request_with_auth(:post, path, body: body_params)
end

#upload_project_package(projectId: nil, params: nil, timeout: nil) ⇒ Object

上传项目包

Parameters:

  • projectId (String) (defaults to: nil)

    项目ID(必需)

  • params (Hash) (defaults to: nil)

    上传参数

  • timeout (Integer, nil) (defaults to: nil)

    请求超时时间(秒),nil 时使用 common_http_config.timeout_seconds

Raises:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/jpsclient/api/project_package.rb', line 22

def upload_project_package(projectId:nil, params:nil, timeout:nil)
  config = @request_config && @request_config["project_package_upload"]
  raise JPSClient::ExceptionError, "Missing config for project_package_upload" unless config && config["url"]
  path = config["url"]

  body_params = {
  projectId: projectId
  }

  # 合并传入的参数
  if params
    params.each { |key,value| body_params[key] = value }
  end

  # 确保必要的字段存在
  body_params[:packageUrl] ||= params&.dig(:packageUrl)
  body_params[:description] ||= params&.dig(:description)
  body_params[:attachFileUrls] ||= params&.dig(:attachFileUrls) || []
  body_params[:chatEnv] ||= params&.dig(:chatEnv)
  body_params[:commitId] ||= params&.dig(:commitId)
  body_params[:projectPackageId] ||= params&.dig(:projectPackageId)
  body_params[:workflowId] ||= params&.dig(:workflowId)

  # 移除值为nil的键
  body_params.compact!

  return request_with_auth(:post, path, body: body_params, timeout: timeout)
end