-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEndpoints.swift
More file actions
110 lines (104 loc) · 3.98 KB
/
Copy pathEndpoints.swift
File metadata and controls
110 lines (104 loc) · 3.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
50
51
52
53
54
55
56
57
58
59
60
61
62
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
104
105
106
107
108
109
110
import Foundation
/// API endpoint definitions
public enum Endpoint {
case listProducts(limit: Int?, cursor: String?)
case getProduct(id: String)
case listWorkflows(productId: String, limit: Int?, cursor: String?)
case getWorkflow(id: String)
case listBuildRuns(workflowId: String?, limit: Int?, cursor: String?)
case getBuildRun(id: String)
case startBuildRun
case cancelBuildRun(id: String)
case listBuildActions(buildRunId: String)
case listArtifacts(buildActionId: String)
case getArtifact(id: String)
case listIssues(buildActionId: String)
case getIssue(id: String)
case listTestResults(buildActionId: String)
case getTestResult(id: String)
case listGitReferences(repositoryId: String)
public var path: String {
switch self {
case .listProducts:
return "/v1/ciProducts"
case .getProduct(let id):
return "/v1/ciProducts/\(id)"
case .listWorkflows(let productId, _, _):
return "/v1/ciProducts/\(productId)/workflows"
case .getWorkflow(let id):
return "/v1/ciWorkflows/\(id)"
case .listBuildRuns(let workflowId, _, _):
if let workflowId = workflowId {
return "/v1/ciWorkflows/\(workflowId)/buildRuns"
}
return "/v1/ciBuildRuns"
case .getBuildRun(let id):
return "/v1/ciBuildRuns/\(id)"
case .startBuildRun:
return "/v1/ciBuildRuns"
case .cancelBuildRun(let id):
return "/v1/ciBuildRuns/\(id)"
case .listBuildActions(let buildRunId):
return "/v1/ciBuildRuns/\(buildRunId)/actions"
case .listArtifacts(let buildActionId):
return "/v1/ciBuildActions/\(buildActionId)/artifacts"
case .getArtifact(let id):
return "/v1/ciArtifacts/\(id)"
case .listIssues(let buildActionId):
return "/v1/ciBuildActions/\(buildActionId)/issues"
case .getIssue(let id):
return "/v1/ciIssues/\(id)"
case .listTestResults(let buildActionId):
return "/v1/ciBuildActions/\(buildActionId)/testResults"
case .getTestResult(let id):
return "/v1/ciTestResults/\(id)"
case .listGitReferences(let repositoryId):
return "/v1/scmRepositories/\(repositoryId)/gitReferences"
}
}
public var method: String {
switch self {
case .startBuildRun:
return "POST"
case .cancelBuildRun:
return "DELETE"
default:
return "GET"
}
}
public var queryItems: [URLQueryItem] {
var items: [URLQueryItem] = []
switch self {
case .listProducts(let limit, let cursor):
items.append(URLQueryItem(name: "include", value: "app,bundleId"))
if let limit = limit {
items.append(URLQueryItem(name: "limit", value: String(limit)))
}
if let cursor = cursor {
items.append(URLQueryItem(name: "cursor", value: cursor))
}
case .listWorkflows(_, let limit, let cursor):
if let limit = limit {
items.append(URLQueryItem(name: "limit", value: String(limit)))
}
if let cursor = cursor {
items.append(URLQueryItem(name: "cursor", value: cursor))
}
case .listBuildRuns(_, let limit, let cursor):
items.append(URLQueryItem(name: "sort", value: "-number"))
if let limit = limit {
items.append(URLQueryItem(name: "limit", value: String(limit)))
}
if let cursor = cursor {
items.append(URLQueryItem(name: "cursor", value: cursor))
}
case .getWorkflow:
items.append(URLQueryItem(name: "include", value: "repository"))
case .listGitReferences:
items.append(URLQueryItem(name: "limit", value: "200"))
default:
break
}
return items
}
}