mirror of
https://github.com/strongdm/comply
synced 2024-11-22 07:34:54 +00:00
dep ensure
This commit is contained in:
parent
97989c5cf6
commit
007cf3dd3c
8
Gopkg.lock
generated
8
Gopkg.lock
generated
@ -221,6 +221,12 @@
|
|||||||
revision = "cfb38830724cc34fedffe9a2a29fb54fa9169cd1"
|
revision = "cfb38830724cc34fedffe9a2a29fb54fa9169cd1"
|
||||||
version = "v1.20.0"
|
version = "v1.20.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/xanzy/go-gitlab"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "79dad8e74fd097eb2e0fd0883f1978213e88107a"
|
||||||
|
version = "v0.10.7"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "github.com/yosssi/ace"
|
name = "github.com/yosssi/ace"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
@ -278,6 +284,6 @@
|
|||||||
[solve-meta]
|
[solve-meta]
|
||||||
analyzer-name = "dep"
|
analyzer-name = "dep"
|
||||||
analyzer-version = 1
|
analyzer-version = 1
|
||||||
inputs-digest = "b8eb855eeef730f7fcaabe3acceb26a99b7bce186d815c3f654d7a1cbce97f2a"
|
inputs-digest = "50dc710fa4b581d4fd6907e0e3337c53c3d530e46c53aa71ef9f8e80d3a54d8b"
|
||||||
solver-name = "gps-cdcl"
|
solver-name = "gps-cdcl"
|
||||||
solver-version = 1
|
solver-version = 1
|
||||||
|
@ -137,7 +137,7 @@ func complyBlankReadmeMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-blank/README.md", size: 1965, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-blank/README.md", size: 1965, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -157,7 +157,7 @@ func complyBlankTodoMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-blank/TODO.md", size: 1429, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-blank/TODO.md", size: 1429, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -177,7 +177,7 @@ func complyBlankNarrativesGitkeep() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-blank/narratives/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-blank/narratives/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1525909140, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -197,7 +197,7 @@ func complyBlankPoliciesGitkeep() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-blank/policies/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-blank/policies/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1525909140, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -217,7 +217,7 @@ func complyBlankProceduresGitkeep() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-blank/procedures/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-blank/procedures/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1525909140, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -237,7 +237,7 @@ func complyBlankStandardsGitkeep() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-blank/standards/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-blank/standards/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1525909140, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -257,7 +257,7 @@ func complyBlankTemplatesGitkeep() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-blank/templates/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-blank/templates/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1525909140, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -277,7 +277,7 @@ func complyBlankTemplatesDefaultLatex() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-blank/templates/default.latex", size: 7649, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-blank/templates/default.latex", size: 7649, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -297,7 +297,7 @@ func complyBlankTemplatesIndexAce() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-blank/templates/index.ace", size: 7596, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-blank/templates/index.ace", size: 7596, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -317,7 +317,7 @@ func complySoc2ReadmeMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/README.md", size: 1965, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/README.md", size: 1965, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -337,7 +337,7 @@ func complySoc2TodoMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/TODO.md", size: 1429, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/TODO.md", size: 1429, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -357,7 +357,7 @@ func complySoc2NarrativesReadmeMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/narratives/README.md", size: 96, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/narratives/README.md", size: 96, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -377,7 +377,7 @@ func complySoc2NarrativesControlMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/narratives/control.md", size: 387, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/narratives/control.md", size: 387, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -397,7 +397,7 @@ func complySoc2NarrativesOrganizationalMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/narratives/organizational.md", size: 2378, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/narratives/organizational.md", size: 2378, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -417,7 +417,7 @@ func complySoc2NarrativesProductsMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/narratives/products.md", size: 232, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/narratives/products.md", size: 232, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -437,7 +437,7 @@ func complySoc2NarrativesSecurityMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/narratives/security.md", size: 327, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/narratives/security.md", size: 327, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -457,7 +457,7 @@ func complySoc2NarrativesSystemMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/narratives/system.md", size: 257, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/narratives/system.md", size: 257, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -477,7 +477,7 @@ func complySoc2PoliciesReadmeMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/README.md", size: 71, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/README.md", size: 71, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -497,7 +497,7 @@ func complySoc2PoliciesAccessMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/access.md", size: 2175, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/access.md", size: 2175, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -517,7 +517,7 @@ func complySoc2PoliciesApplicationMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/application.md", size: 8377, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/application.md", size: 8377, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -537,7 +537,7 @@ func complySoc2PoliciesAvailabilityMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/availability.md", size: 7019, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/availability.md", size: 7019, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -557,7 +557,7 @@ func complySoc2PoliciesChangeMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/change.md", size: 2793, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/change.md", size: 2793, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -577,7 +577,7 @@ func complySoc2PoliciesClassificationMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/classification.md", size: 14376, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/classification.md", size: 14376, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -597,7 +597,7 @@ func complySoc2PoliciesConductMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/conduct.md", size: 4492, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/conduct.md", size: 4492, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -617,7 +617,7 @@ func complySoc2PoliciesConfidentialityMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/confidentiality.md", size: 3653, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/confidentiality.md", size: 3653, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -637,7 +637,7 @@ func complySoc2PoliciesContinuityMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/continuity.md", size: 5043, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/continuity.md", size: 5043, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -657,7 +657,7 @@ func complySoc2PoliciesCyberMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/cyber.md", size: 4805, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/cyber.md", size: 4805, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -677,7 +677,7 @@ func complySoc2PoliciesDatacenterMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/datacenter.md", size: 3014, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/datacenter.md", size: 3014, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -697,7 +697,7 @@ func complySoc2PoliciesDevelopmentMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/development.md", size: 8933, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/development.md", size: 8933, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -717,7 +717,7 @@ func complySoc2PoliciesDisasterMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/disaster.md", size: 10315, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/disaster.md", size: 10315, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -737,7 +737,7 @@ func complySoc2PoliciesEncryptionMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/encryption.md", size: 5381, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/encryption.md", size: 5381, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -757,7 +757,7 @@ func complySoc2PoliciesIncidentMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/incident.md", size: 8552, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/incident.md", size: 8552, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -777,7 +777,7 @@ func complySoc2PoliciesInformationMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/information.md", size: 5359, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/information.md", size: 5359, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -797,7 +797,7 @@ func complySoc2PoliciesLogMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/log.md", size: 4307, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/log.md", size: 4307, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -817,7 +817,7 @@ func complySoc2PoliciesMediaMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/media.md", size: 8819, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/media.md", size: 8819, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -837,7 +837,7 @@ func complySoc2PoliciesOfficeMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/office.md", size: 3927, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/office.md", size: 3927, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -857,7 +857,7 @@ func complySoc2PoliciesPasswordMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/password.md", size: 1796, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/password.md", size: 1796, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -877,7 +877,7 @@ func complySoc2PoliciesPolicyMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/policy.md", size: 892, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/policy.md", size: 892, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -897,7 +897,7 @@ func complySoc2PoliciesPrivacyMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/privacy.md", size: 346, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/privacy.md", size: 346, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -917,7 +917,7 @@ func complySoc2PoliciesProcessingMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/processing.md", size: 210, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/processing.md", size: 210, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -937,7 +937,7 @@ func complySoc2PoliciesRemoteMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/remote.md", size: 4119, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/remote.md", size: 4119, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -957,7 +957,7 @@ func complySoc2PoliciesRetentionMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/retention.md", size: 6811, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/retention.md", size: 6811, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -977,7 +977,7 @@ func complySoc2PoliciesRiskMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/risk.md", size: 10486, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/risk.md", size: 10486, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -997,7 +997,7 @@ func complySoc2PoliciesVendorMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/vendor.md", size: 3139, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/vendor.md", size: 3139, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -1017,7 +1017,7 @@ func complySoc2PoliciesWorkstationMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/policies/workstation.md", size: 1791, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/policies/workstation.md", size: 1791, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -1037,7 +1037,7 @@ func complySoc2ProceduresReadmeMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/procedures/README.md", size: 92, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/procedures/README.md", size: 92, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -1057,7 +1057,7 @@ func complySoc2ProceduresOffboardingMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/procedures/offboarding.md", size: 358, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/procedures/offboarding.md", size: 358, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -1077,7 +1077,7 @@ func complySoc2ProceduresOnboardingMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/procedures/onboarding.md", size: 495, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/procedures/onboarding.md", size: 495, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -1097,7 +1097,7 @@ func complySoc2ProceduresPatchMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/procedures/patch.md", size: 380, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/procedures/patch.md", size: 380, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -1117,7 +1117,7 @@ func complySoc2ProceduresWorkstationMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/procedures/workstation.md", size: 1081, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/procedures/workstation.md", size: 1081, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -1137,7 +1137,7 @@ func complySoc2StandardsReadmeMd() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/standards/README.md", size: 282, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/standards/README.md", size: 282, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -1157,7 +1157,7 @@ func complySoc2StandardsTsc2017Yml() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/standards/TSC-2017.yml", size: 16305, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/standards/TSC-2017.yml", size: 16305, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -1177,7 +1177,7 @@ func complySoc2TemplatesDefaultLatex() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/templates/default.latex", size: 7649, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/templates/default.latex", size: 7649, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@ -1197,7 +1197,7 @@ func complySoc2TemplatesIndexAce() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "comply-soc2/templates/index.ace", size: 7596, mode: os.FileMode(420), modTime: time.Unix(1530819944, 0)}
|
info := bindataFileInfo{name: "comply-soc2/templates/index.ace", size: 7596, mode: os.FileMode(420), modTime: time.Unix(1529974241, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
24
vendor/github.com/xanzy/go-gitlab/.gitignore
generated
vendored
Normal file
24
vendor/github.com/xanzy/go-gitlab/.gitignore
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Compiled Object files, Static and Dynamic libs (Shared Objects)
|
||||||
|
*.o
|
||||||
|
*.a
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Folders
|
||||||
|
_obj
|
||||||
|
_test
|
||||||
|
|
||||||
|
# Architecture specific extensions/prefixes
|
||||||
|
*.[568vq]
|
||||||
|
[568vq].out
|
||||||
|
|
||||||
|
*.cgo1.go
|
||||||
|
*.cgo2.c
|
||||||
|
_cgo_defun.c
|
||||||
|
_cgo_gotypes.go
|
||||||
|
_cgo_export.*
|
||||||
|
|
||||||
|
_testmain.go
|
||||||
|
|
||||||
|
*.exe
|
||||||
|
*.test
|
||||||
|
*.prof
|
27
vendor/github.com/xanzy/go-gitlab/.travis.yml
generated
vendored
Normal file
27
vendor/github.com/xanzy/go-gitlab/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
language: go
|
||||||
|
|
||||||
|
go:
|
||||||
|
- 1.8.x
|
||||||
|
- 1.9.x
|
||||||
|
- 1.10.x
|
||||||
|
- master
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- lint
|
||||||
|
- test
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
include:
|
||||||
|
- stage: lint
|
||||||
|
script:
|
||||||
|
- go get github.com/golang/lint/golint
|
||||||
|
- golint -set_exit_status
|
||||||
|
- go vet -v
|
||||||
|
- stage: test
|
||||||
|
script:
|
||||||
|
- go test -v
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
allow_failures:
|
||||||
|
- go: master
|
||||||
|
fast_finish: true
|
27
vendor/github.com/xanzy/go-gitlab/CHANGELOG.md
generated
vendored
Normal file
27
vendor/github.com/xanzy/go-gitlab/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
go-github CHANGELOG
|
||||||
|
===================
|
||||||
|
|
||||||
|
0.6.0
|
||||||
|
-----
|
||||||
|
- Add support for the V4 Gitlab API. This means the older V3 API is no longer fully supported
|
||||||
|
with this version. If you still need that version, please use the `f-api-v3` branch.
|
||||||
|
|
||||||
|
0.4.0
|
||||||
|
-----
|
||||||
|
- Add support to use [`sudo`](https://docs.gitlab.com/ce/api/README.html#sudo) for all API calls.
|
||||||
|
- Add support for the Notification Settings API.
|
||||||
|
- Add support for the Time Tracking API.
|
||||||
|
- Make sure that the error response correctly outputs any returned errors.
|
||||||
|
- And a reasonable number of smaller enhanchements and bugfixes.
|
||||||
|
|
||||||
|
0.3.0
|
||||||
|
-----
|
||||||
|
- Moved the tags related API calls to their own service, following the Gitlab API structure.
|
||||||
|
|
||||||
|
0.2.0
|
||||||
|
-----
|
||||||
|
- Convert all Option structs to use pointers for their fields.
|
||||||
|
|
||||||
|
0.1.0
|
||||||
|
-----
|
||||||
|
- Initial release.
|
202
vendor/github.com/xanzy/go-gitlab/LICENSE
generated
vendored
Normal file
202
vendor/github.com/xanzy/go-gitlab/LICENSE
generated
vendored
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright {yyyy} {name of copyright owner}
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
171
vendor/github.com/xanzy/go-gitlab/README.md
generated
vendored
Normal file
171
vendor/github.com/xanzy/go-gitlab/README.md
generated
vendored
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
# go-gitlab
|
||||||
|
|
||||||
|
A GitLab API client enabling Go programs to interact with GitLab in a simple and uniform way
|
||||||
|
|
||||||
|
[![Build Status](https://travis-ci.org/xanzy/go-gitlab.svg?branch=master)](https://travis-ci.org/xanzy/go-gitlab)
|
||||||
|
[![GitHub license](https://img.shields.io/github/license/xanzy/go-gitlab.svg)](https://github.com/xanzy/go-gitlab/blob/master/LICENSE)
|
||||||
|
[![Sourcegraph](https://sourcegraph.com/github.com/xanzy/go-gitlab/-/badge.svg)](https://sourcegraph.com/github.com/xanzy/go-gitlab?badge)
|
||||||
|
[![GoDoc](https://godoc.org/github.com/xanzy/go-gitlab?status.svg)](https://godoc.org/github.com/xanzy/go-gitlab)
|
||||||
|
[![Go Report Card](https://goreportcard.com/badge/github.com/xanzy/go-gitlab)](https://goreportcard.com/report/github.com/xanzy/go-gitlab)
|
||||||
|
[![GitHub issues](https://img.shields.io/github/issues/xanzy/go-gitlab.svg)](https://github.com/xanzy/go-gitlab/issues)
|
||||||
|
|
||||||
|
## NOTE
|
||||||
|
|
||||||
|
Release v0.6.0 (released on 25-08-2017) no longer supports the older V3 Gitlab API. If
|
||||||
|
you need V3 support, please use the `f-api-v3` branch. This release contains some backwards
|
||||||
|
incompatible changes that were needed to fully support the V4 Gitlab API.
|
||||||
|
|
||||||
|
## Coverage
|
||||||
|
|
||||||
|
This API client package covers most of the existing Gitlab API calls and is updated regularly
|
||||||
|
to add new and/or missing endpoints. Currently the following services are supported:
|
||||||
|
|
||||||
|
- [x] Award Emojis
|
||||||
|
- [x] Branches
|
||||||
|
- [x] Broadcast Messages
|
||||||
|
- [ ] Project-level Variables
|
||||||
|
- [ ] Group-level Variables
|
||||||
|
- [x] Commits
|
||||||
|
- [ ] Custom Attributes
|
||||||
|
- [x] Deployments
|
||||||
|
- [x] Deploy Keys
|
||||||
|
- [x] Environments
|
||||||
|
- [ ] Epics
|
||||||
|
- [ ] Epic Issues
|
||||||
|
- [x] Events
|
||||||
|
- [x] Feature flags
|
||||||
|
- [ ] Geo Nodes
|
||||||
|
- [x] Gitignores templates
|
||||||
|
- [ ] GitLab CI Config templates
|
||||||
|
- [x] Groups
|
||||||
|
- [ ] Group Access Requests
|
||||||
|
- [x] Group Members
|
||||||
|
- [x] Issues
|
||||||
|
- [x] Issue Boards
|
||||||
|
- [x] Jobs
|
||||||
|
- [ ] Keys
|
||||||
|
- [x] Labels
|
||||||
|
- [ ] License
|
||||||
|
- [x] Merge Requests
|
||||||
|
- [x] Merge Request Approvals
|
||||||
|
- [x] Project Milestones
|
||||||
|
- [ ] Group Milestones
|
||||||
|
- [x] Namespaces
|
||||||
|
- [x] Notes (comments)
|
||||||
|
- [ ] Discussions (threaded comments)
|
||||||
|
- [x] Notification settings
|
||||||
|
- [ ] Open source license templates
|
||||||
|
- [x] Pages Domains
|
||||||
|
- [x] Pipelines
|
||||||
|
- [x] Pipeline Triggers
|
||||||
|
- [x] Pipeline Schedules
|
||||||
|
- [x] Projects (including setting Webhooks)
|
||||||
|
- [ ] Project Access Requests
|
||||||
|
- [ ] Project badges
|
||||||
|
- [ ] Project import/export
|
||||||
|
- [x] Project Members
|
||||||
|
- [x] Project Snippets
|
||||||
|
- [x] Protected Branches
|
||||||
|
- [x] Repositories
|
||||||
|
- [x] Repository Files
|
||||||
|
- [x] Runners
|
||||||
|
- [ ] Search
|
||||||
|
- [x] Services
|
||||||
|
- [x] Settings
|
||||||
|
- [x] Sidekiq metrics
|
||||||
|
- [x] Session
|
||||||
|
- [x] System Hooks
|
||||||
|
- [x] Tags
|
||||||
|
- [x] Todos
|
||||||
|
- [x] Users
|
||||||
|
- [x] Validate CI configuration
|
||||||
|
- [x] Version
|
||||||
|
- [x] Wikis
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```go
|
||||||
|
import "github.com/xanzy/go-gitlab"
|
||||||
|
```
|
||||||
|
|
||||||
|
Construct a new GitLab client, then use the various services on the client to
|
||||||
|
access different parts of the GitLab API. For example, to list all
|
||||||
|
users:
|
||||||
|
|
||||||
|
```go
|
||||||
|
git := gitlab.NewClient(nil, "yourtokengoeshere")
|
||||||
|
//git.SetBaseURL("https://git.mydomain.com/api/v3")
|
||||||
|
users, _, err := git.Users.ListUsers()
|
||||||
|
```
|
||||||
|
|
||||||
|
Some API methods have optional parameters that can be passed. For example,
|
||||||
|
to list all projects for user "svanharmelen":
|
||||||
|
|
||||||
|
```go
|
||||||
|
git := gitlab.NewClient(nil)
|
||||||
|
opt := &ListProjectsOptions{Search: gitlab.String("svanharmelen")}
|
||||||
|
projects, _, err := git.Projects.ListProjects(opt)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
|
||||||
|
The [examples](https://github.com/xanzy/go-gitlab/tree/master/examples) directory
|
||||||
|
contains a couple for clear examples, of which one is partially listed here as well:
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/xanzy/go-gitlab"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
git := gitlab.NewClient(nil, "yourtokengoeshere")
|
||||||
|
|
||||||
|
// Create new project
|
||||||
|
p := &gitlab.CreateProjectOptions{
|
||||||
|
Name: gitlab.String("My Project"),
|
||||||
|
Description: gitlab.String("Just a test project to play with"),
|
||||||
|
MergeRequestsEnabled: gitlab.Bool(true),
|
||||||
|
SnippetsEnabled: gitlab.Bool(true),
|
||||||
|
Visibility: gitlab.Visibility(gitlab.PublicVisibility),
|
||||||
|
}
|
||||||
|
project, _, err := git.Projects.CreateProject(p)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add a new snippet
|
||||||
|
s := &gitlab.CreateProjectSnippetOptions{
|
||||||
|
Title: gitlab.String("Dummy Snippet"),
|
||||||
|
FileName: gitlab.String("snippet.go"),
|
||||||
|
Code: gitlab.String("package main...."),
|
||||||
|
Visibility: gitlab.Visibility(gitlab.PublicVisibility),
|
||||||
|
}
|
||||||
|
_, _, err = git.ProjectSnippets.CreateSnippet(project.ID, s)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
For complete usage of go-gitlab, see the full [package docs](https://godoc.org/github.com/xanzy/go-gitlab).
|
||||||
|
|
||||||
|
## ToDo
|
||||||
|
|
||||||
|
- The biggest thing this package still needs is tests :disappointed:
|
||||||
|
|
||||||
|
## Issues
|
||||||
|
|
||||||
|
- If you have an issue: report it on the [issue tracker](https://github.com/xanzy/go-gitlab/issues)
|
||||||
|
|
||||||
|
## Author
|
||||||
|
|
||||||
|
Sander van Harmelen (<sander@xanzy.io>)
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>
|
468
vendor/github.com/xanzy/go-gitlab/award_emojis.go
generated
vendored
Normal file
468
vendor/github.com/xanzy/go-gitlab/award_emojis.go
generated
vendored
Normal file
@ -0,0 +1,468 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Arkbriar
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AwardEmojiService handles communication with the emoji awards related methods
|
||||||
|
// of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/award_emoji.html
|
||||||
|
type AwardEmojiService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// AwardEmoji represents a GitLab Award Emoji.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/award_emoji.html
|
||||||
|
type AwardEmoji struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
User struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
ID int `json:"id"`
|
||||||
|
State string `json:"state"`
|
||||||
|
AvatarURL string `json:"avatar_url"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
} `json:"user"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
UpdatedAt *time.Time `json:"updated_at"`
|
||||||
|
AwardableID int `json:"awardable_id"`
|
||||||
|
AwardableType string `json:"awardable_type"`
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
awardMergeRequest = "merge_requests"
|
||||||
|
awardIssue = "issues"
|
||||||
|
awardSnippets = "snippets"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ListAwardEmojiOptions represents the available options for listing emoji
|
||||||
|
// for each resources
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html
|
||||||
|
type ListAwardEmojiOptions ListOptions
|
||||||
|
|
||||||
|
// ListMergeRequestAwardEmoji gets a list of all award emoji on the merge request.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#list-an-awardable-39-s-award-emoji
|
||||||
|
func (s *AwardEmojiService) ListMergeRequestAwardEmoji(pid interface{}, mergeRequestIID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
|
||||||
|
return s.listAwardEmoji(pid, awardMergeRequest, mergeRequestIID, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListIssueAwardEmoji gets a list of all award emoji on the issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#list-an-awardable-39-s-award-emoji
|
||||||
|
func (s *AwardEmojiService) ListIssueAwardEmoji(pid interface{}, issueIID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
|
||||||
|
return s.listAwardEmoji(pid, awardIssue, issueIID, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSnippetAwardEmoji gets a list of all award emoji on the snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#list-an-awardable-39-s-award-emoji
|
||||||
|
func (s *AwardEmojiService) ListSnippetAwardEmoji(pid interface{}, snippetID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
|
||||||
|
return s.listAwardEmoji(pid, awardSnippets, snippetID, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *AwardEmojiService) listAwardEmoji(pid interface{}, resource string, resourceID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/%s/%d/award_emoji",
|
||||||
|
url.QueryEscape(project),
|
||||||
|
resource,
|
||||||
|
resourceID,
|
||||||
|
)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var as []*AwardEmoji
|
||||||
|
resp, err := s.client.Do(req, &as)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return as, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMergeRequestAwardEmoji get an award emoji from merge request.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#list-an-awardable-39-s-award-emoji
|
||||||
|
func (s *AwardEmojiService) GetMergeRequestAwardEmoji(pid interface{}, mergeRequestIID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
return s.getAwardEmoji(pid, awardMergeRequest, mergeRequestIID, awardID, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIssueAwardEmoji get an award emoji from issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#list-an-awardable-39-s-award-emoji
|
||||||
|
func (s *AwardEmojiService) GetIssueAwardEmoji(pid interface{}, issueIID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
return s.getAwardEmoji(pid, awardIssue, issueIID, awardID, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSnippetAwardEmoji get an award emoji from snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#list-an-awardable-39-s-award-emoji
|
||||||
|
func (s *AwardEmojiService) GetSnippetAwardEmoji(pid interface{}, snippetID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
return s.getAwardEmoji(pid, awardSnippets, snippetID, awardID, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *AwardEmojiService) getAwardEmoji(pid interface{}, resource string, resourceID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/%s/%d/award_emoji/%d",
|
||||||
|
url.QueryEscape(project),
|
||||||
|
resource,
|
||||||
|
resourceID,
|
||||||
|
awardID,
|
||||||
|
)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
a := new(AwardEmoji)
|
||||||
|
resp, err := s.client.Do(req, &a)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return a, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateAwardEmojiOptions represents the available options for awarding emoji
|
||||||
|
// for a resource
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji
|
||||||
|
type CreateAwardEmojiOptions struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateMergeRequestAwardEmoji get an award emoji from merge request.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji
|
||||||
|
func (s *AwardEmojiService) CreateMergeRequestAwardEmoji(pid interface{}, mergeRequestIID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
return s.createAwardEmoji(pid, awardMergeRequest, mergeRequestIID, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateIssueAwardEmoji get an award emoji from issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji
|
||||||
|
func (s *AwardEmojiService) CreateIssueAwardEmoji(pid interface{}, issueIID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
return s.createAwardEmoji(pid, awardIssue, issueIID, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateSnippetAwardEmoji get an award emoji from snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji
|
||||||
|
func (s *AwardEmojiService) CreateSnippetAwardEmoji(pid interface{}, snippetID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
return s.createAwardEmoji(pid, awardSnippets, snippetID, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *AwardEmojiService) createAwardEmoji(pid interface{}, resource string, resourceID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/%s/%d/award_emoji",
|
||||||
|
url.QueryEscape(project),
|
||||||
|
resource,
|
||||||
|
resourceID,
|
||||||
|
)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
a := new(AwardEmoji)
|
||||||
|
resp, err := s.client.Do(req, &a)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return a, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteIssueAwardEmoji delete award emoji on an issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji-on-a-note
|
||||||
|
func (s *AwardEmojiService) DeleteIssueAwardEmoji(pid interface{}, issueIID, awardID int, options ...OptionFunc) (*Response, error) {
|
||||||
|
return s.deleteAwardEmoji(pid, awardMergeRequest, issueIID, awardID, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteMergeRequestAwardEmoji delete award emoji on a merge request.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji-on-a-note
|
||||||
|
func (s *AwardEmojiService) DeleteMergeRequestAwardEmoji(pid interface{}, mergeRequestIID, awardID int, options ...OptionFunc) (*Response, error) {
|
||||||
|
return s.deleteAwardEmoji(pid, awardMergeRequest, mergeRequestIID, awardID, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteSnippetAwardEmoji delete award emoji on a snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji-on-a-note
|
||||||
|
func (s *AwardEmojiService) DeleteSnippetAwardEmoji(pid interface{}, snippetID, awardID int, options ...OptionFunc) (*Response, error) {
|
||||||
|
return s.deleteAwardEmoji(pid, awardMergeRequest, snippetID, awardID, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteAwardEmoji Delete an award emoji on the specified resource.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#delete-an-award-emoji
|
||||||
|
func (s *AwardEmojiService) deleteAwardEmoji(pid interface{}, resource string, resourceID, awardID int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/%s/%d/award_emoji/%d", url.QueryEscape(project), resource,
|
||||||
|
resourceID, awardID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListIssuesAwardEmojiOnNote gets a list of all award emoji on a note from the
|
||||||
|
// issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
|
||||||
|
func (s *AwardEmojiService) ListIssuesAwardEmojiOnNote(pid interface{}, issueID, noteID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
|
||||||
|
return s.listAwardEmojiOnNote(pid, awardIssue, issueID, noteID, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListMergeRequestAwardEmojiOnNote gets a list of all award emoji on a note
|
||||||
|
// from the merge request.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
|
||||||
|
func (s *AwardEmojiService) ListMergeRequestAwardEmojiOnNote(pid interface{}, mergeRequestIID, noteID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
|
||||||
|
return s.listAwardEmojiOnNote(pid, awardMergeRequest, mergeRequestIID, noteID, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSnippetAwardEmojiOnNote gets a list of all award emoji on a note from the
|
||||||
|
// snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
|
||||||
|
func (s *AwardEmojiService) ListSnippetAwardEmojiOnNote(pid interface{}, snippetIID, noteID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
|
||||||
|
return s.listAwardEmojiOnNote(pid, awardSnippets, snippetIID, noteID, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *AwardEmojiService) listAwardEmojiOnNote(pid interface{}, resources string, ressourceID, noteID int, opt *ListAwardEmojiOptions, options ...OptionFunc) ([]*AwardEmoji, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/%s/%d/notes/%d/award_emoji", url.QueryEscape(project), resources,
|
||||||
|
ressourceID, noteID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var as []*AwardEmoji
|
||||||
|
resp, err := s.client.Do(req, &as)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return as, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIssuesAwardEmojiOnNote gets an award emoji on a note from an issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
|
||||||
|
func (s *AwardEmojiService) GetIssuesAwardEmojiOnNote(pid interface{}, issueID, noteID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
return s.getSingleNoteAwardEmoji(pid, awardIssue, issueID, noteID, awardID, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMergeRequestAwardEmojiOnNote gets an award emoji on a note from a
|
||||||
|
// merge request.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
|
||||||
|
func (s *AwardEmojiService) GetMergeRequestAwardEmojiOnNote(pid interface{}, mergeRequestIID, noteID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
return s.getSingleNoteAwardEmoji(pid, awardMergeRequest, mergeRequestIID, noteID, awardID,
|
||||||
|
options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSnippetAwardEmojiOnNote gets an award emoji on a note from a snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
|
||||||
|
func (s *AwardEmojiService) GetSnippetAwardEmojiOnNote(pid interface{}, snippetIID, noteID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
return s.getSingleNoteAwardEmoji(pid, awardSnippets, snippetIID, noteID, awardID, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *AwardEmojiService) getSingleNoteAwardEmoji(pid interface{}, ressource string, resourceID, noteID, awardID int, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/%s/%d/notes/%d/award_emoji/%d",
|
||||||
|
url.QueryEscape(project),
|
||||||
|
ressource,
|
||||||
|
resourceID,
|
||||||
|
noteID,
|
||||||
|
awardID,
|
||||||
|
)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
a := new(AwardEmoji)
|
||||||
|
resp, err := s.client.Do(req, &a)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return a, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateIssuesAwardEmojiOnNote gets an award emoji on a note from an issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
|
||||||
|
func (s *AwardEmojiService) CreateIssuesAwardEmojiOnNote(pid interface{}, issueID, noteID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
return s.createAwardEmojiOnNote(pid, awardIssue, issueID, noteID, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateMergeRequestAwardEmojiOnNote gets an award emoji on a note from a
|
||||||
|
// merge request.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
|
||||||
|
func (s *AwardEmojiService) CreateMergeRequestAwardEmojiOnNote(pid interface{}, mergeRequestIID, noteID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
return s.createAwardEmojiOnNote(pid, awardMergeRequest, mergeRequestIID, noteID, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateSnippetAwardEmojiOnNote gets an award emoji on a note from a snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
|
||||||
|
func (s *AwardEmojiService) CreateSnippetAwardEmojiOnNote(pid interface{}, snippetIID, noteID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
return s.createAwardEmojiOnNote(pid, awardSnippets, snippetIID, noteID, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateAwardEmojiOnNote award emoji on a note.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-a-new-emoji-on-a-note
|
||||||
|
func (s *AwardEmojiService) createAwardEmojiOnNote(pid interface{}, resource string, resourceID, noteID int, opt *CreateAwardEmojiOptions, options ...OptionFunc) (*AwardEmoji, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/%s/%d/notes/%d/award_emoji",
|
||||||
|
url.QueryEscape(project),
|
||||||
|
resource,
|
||||||
|
resourceID,
|
||||||
|
noteID,
|
||||||
|
)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
a := new(AwardEmoji)
|
||||||
|
resp, err := s.client.Do(req, &a)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return a, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteIssuesAwardEmojiOnNote deletes an award emoji on a note from an issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
|
||||||
|
func (s *AwardEmojiService) DeleteIssuesAwardEmojiOnNote(pid interface{}, issueID, noteID, awardID int, options ...OptionFunc) (*Response, error) {
|
||||||
|
return s.deleteAwardEmojiOnNote(pid, awardIssue, issueID, noteID, awardID, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteMergeRequestAwardEmojiOnNote deletes an award emoji on a note from a
|
||||||
|
// merge request.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
|
||||||
|
func (s *AwardEmojiService) DeleteMergeRequestAwardEmojiOnNote(pid interface{}, mergeRequestIID, noteID, awardID int, options ...OptionFunc) (*Response, error) {
|
||||||
|
return s.deleteAwardEmojiOnNote(pid, awardMergeRequest, mergeRequestIID, noteID, awardID,
|
||||||
|
options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteSnippetAwardEmojiOnNote deletes an award emoji on a note from a snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/award_emoji.html#award-emoji-on-notes
|
||||||
|
func (s *AwardEmojiService) DeleteSnippetAwardEmojiOnNote(pid interface{}, snippetIID, noteID, awardID int, options ...OptionFunc) (*Response, error) {
|
||||||
|
return s.deleteAwardEmojiOnNote(pid, awardSnippets, snippetIID, noteID, awardID, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *AwardEmojiService) deleteAwardEmojiOnNote(pid interface{}, resource string, resourceID, noteID, awardID int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/%s/%d/notes/%d/award_emoji/%d",
|
||||||
|
url.QueryEscape(project),
|
||||||
|
resource,
|
||||||
|
resourceID,
|
||||||
|
noteID,
|
||||||
|
awardID,
|
||||||
|
)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
261
vendor/github.com/xanzy/go-gitlab/boards.go
generated
vendored
Normal file
261
vendor/github.com/xanzy/go-gitlab/boards.go
generated
vendored
Normal file
@ -0,0 +1,261 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2015, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// IssueBoardsService handles communication with the issue board related
|
||||||
|
// methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/boards.html
|
||||||
|
type IssueBoardsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// IssueBoard represents a GitLab issue board.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/boards.html
|
||||||
|
type IssueBoard struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Project *Project `json:"project"`
|
||||||
|
Milestone *Milestone `json:"milestone"`
|
||||||
|
Lists []*BoardList `json:"lists"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b IssueBoard) String() string {
|
||||||
|
return Stringify(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
// BoardList represents a GitLab board list.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/boards.html
|
||||||
|
type BoardList struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Labels []*Label `json:"labels"`
|
||||||
|
Position int `json:"position"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b BoardList) String() string {
|
||||||
|
return Stringify(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListIssueBoardsOptions represents the available ListIssueBoards() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/boards.html#project-board
|
||||||
|
type ListIssueBoardsOptions ListOptions
|
||||||
|
|
||||||
|
// ListIssueBoards gets a list of all issue boards in a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/boards.html#project-board
|
||||||
|
func (s *IssueBoardsService) ListIssueBoards(pid interface{}, opt *ListIssueBoardsOptions, options ...OptionFunc) ([]*IssueBoard, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/boards", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var is []*IssueBoard
|
||||||
|
resp, err := s.client.Do(req, &is)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return is, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIssueBoard gets a single issue board of a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/boards.html#single-board
|
||||||
|
func (s *IssueBoardsService) GetIssueBoard(pid interface{}, board int, options ...OptionFunc) (*IssueBoard, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/boards/%d", url.QueryEscape(project), board)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ib := new(IssueBoard)
|
||||||
|
resp, err := s.client.Do(req, ib)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ib, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIssueBoardListsOptions represents the available GetIssueBoardLists() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/boards.html#list-board-lists
|
||||||
|
type GetIssueBoardListsOptions ListOptions
|
||||||
|
|
||||||
|
// GetIssueBoardLists gets a list of the issue board's lists. Does not include
|
||||||
|
// backlog and closed lists.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/boards.html#list-board-lists
|
||||||
|
func (s *IssueBoardsService) GetIssueBoardLists(pid interface{}, board int, opt *GetIssueBoardListsOptions, options ...OptionFunc) ([]*BoardList, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/boards/%d/lists", url.QueryEscape(project), board)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var bl []*BoardList
|
||||||
|
resp, err := s.client.Do(req, &bl)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return bl, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIssueBoardList gets a single issue board list.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/boards.html#single-board-list
|
||||||
|
func (s *IssueBoardsService) GetIssueBoardList(pid interface{}, board, list int, options ...OptionFunc) (*BoardList, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/boards/%d/lists/%d",
|
||||||
|
url.QueryEscape(project),
|
||||||
|
board,
|
||||||
|
list,
|
||||||
|
)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
bl := new(BoardList)
|
||||||
|
resp, err := s.client.Do(req, bl)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return bl, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateIssueBoardListOptions represents the available CreateIssueBoardList()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/boards.html#new-board-list
|
||||||
|
type CreateIssueBoardListOptions struct {
|
||||||
|
LabelID *int `url:"label_id" json:"label_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateIssueBoardList creates a new issue board list.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/boards.html#new-board-list
|
||||||
|
func (s *IssueBoardsService) CreateIssueBoardList(pid interface{}, board int, opt *CreateIssueBoardListOptions, options ...OptionFunc) (*BoardList, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/boards/%d/lists", url.QueryEscape(project), board)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
bl := new(BoardList)
|
||||||
|
resp, err := s.client.Do(req, bl)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return bl, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateIssueBoardListOptions represents the available UpdateIssueBoardList()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/boards.html#edit-board-list
|
||||||
|
type UpdateIssueBoardListOptions struct {
|
||||||
|
Position *int `url:"position" json:"position"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateIssueBoardList updates the position of an existing issue board list.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/boards.html#edit-board-list
|
||||||
|
func (s *IssueBoardsService) UpdateIssueBoardList(pid interface{}, board, list int, opt *UpdateIssueBoardListOptions, options ...OptionFunc) (*BoardList, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/boards/%d/lists/%d",
|
||||||
|
url.QueryEscape(project),
|
||||||
|
board,
|
||||||
|
list,
|
||||||
|
)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
bl := new(BoardList)
|
||||||
|
resp, err := s.client.Do(req, bl)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return bl, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteIssueBoardList soft deletes an issue board list. Only for admins and
|
||||||
|
// project owners.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/boards.html#delete-a-board-list
|
||||||
|
func (s *IssueBoardsService) DeleteIssueBoardList(pid interface{}, board, list int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/boards/%d/lists/%d",
|
||||||
|
url.QueryEscape(project),
|
||||||
|
board,
|
||||||
|
list,
|
||||||
|
)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
238
vendor/github.com/xanzy/go-gitlab/branches.go
generated
vendored
Normal file
238
vendor/github.com/xanzy/go-gitlab/branches.go
generated
vendored
Normal file
@ -0,0 +1,238 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BranchesService handles communication with the branch related methods
|
||||||
|
// of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/branches.html
|
||||||
|
type BranchesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Branch represents a GitLab branch.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/branches.html
|
||||||
|
type Branch struct {
|
||||||
|
Commit *Commit `json:"commit"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Protected bool `json:"protected"`
|
||||||
|
Merged bool `json:"merged"`
|
||||||
|
DevelopersCanPush bool `json:"developers_can_push"`
|
||||||
|
DevelopersCanMerge bool `json:"developers_can_merge"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b Branch) String() string {
|
||||||
|
return Stringify(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListBranchesOptions represents the available ListBranches() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/branches.html#list-repository-branches
|
||||||
|
type ListBranchesOptions ListOptions
|
||||||
|
|
||||||
|
// ListBranches gets a list of repository branches from a project, sorted by
|
||||||
|
// name alphabetically.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/branches.html#list-repository-branches
|
||||||
|
func (s *BranchesService) ListBranches(pid interface{}, opts *ListBranchesOptions, options ...OptionFunc) ([]*Branch, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/branches", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opts, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var b []*Branch
|
||||||
|
resp, err := s.client.Do(req, &b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBranch gets a single project repository branch.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/branches.html#get-single-repository-branch
|
||||||
|
func (s *BranchesService) GetBranch(pid interface{}, branch string, options ...OptionFunc) (*Branch, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/branches/%s", url.QueryEscape(project), url.QueryEscape(branch))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
b := new(Branch)
|
||||||
|
resp, err := s.client.Do(req, b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProtectBranchOptions represents the available ProtectBranch() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/branches.html#protect-repository-branch
|
||||||
|
type ProtectBranchOptions struct {
|
||||||
|
DevelopersCanPush *bool `url:"developers_can_push,omitempty" json:"developers_can_push,omitempty"`
|
||||||
|
DevelopersCanMerge *bool `url:"developers_can_merge,omitempty" json:"developers_can_merge,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProtectBranch protects a single project repository branch. This is an
|
||||||
|
// idempotent function, protecting an already protected repository branch
|
||||||
|
// still returns a 200 OK status code.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/branches.html#protect-repository-branch
|
||||||
|
func (s *BranchesService) ProtectBranch(pid interface{}, branch string, opts *ProtectBranchOptions, options ...OptionFunc) (*Branch, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/branches/%s/protect", url.QueryEscape(project), url.QueryEscape(branch))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opts, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
b := new(Branch)
|
||||||
|
resp, err := s.client.Do(req, b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnprotectBranch unprotects a single project repository branch. This is an
|
||||||
|
// idempotent function, unprotecting an already unprotected repository branch
|
||||||
|
// still returns a 200 OK status code.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/branches.html#unprotect-repository-branch
|
||||||
|
func (s *BranchesService) UnprotectBranch(pid interface{}, branch string, options ...OptionFunc) (*Branch, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/branches/%s/unprotect", url.QueryEscape(project), url.QueryEscape(branch))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
b := new(Branch)
|
||||||
|
resp, err := s.client.Do(req, b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateBranchOptions represents the available CreateBranch() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/branches.html#create-repository-branch
|
||||||
|
type CreateBranchOptions struct {
|
||||||
|
Branch *string `url:"branch,omitempty" json:"branch,omitempty"`
|
||||||
|
Ref *string `url:"ref,omitempty" json:"ref,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateBranch creates branch from commit SHA or existing branch.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/branches.html#create-repository-branch
|
||||||
|
func (s *BranchesService) CreateBranch(pid interface{}, opt *CreateBranchOptions, options ...OptionFunc) (*Branch, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/branches", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
b := new(Branch)
|
||||||
|
resp, err := s.client.Do(req, b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteBranch deletes an existing branch.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/branches.html#delete-repository-branch
|
||||||
|
func (s *BranchesService) DeleteBranch(pid interface{}, branch string, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/branches/%s", url.QueryEscape(project), url.QueryEscape(branch))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteMergedBranches deletes all branches that are merged into the project's default branch.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/branches.html#delete-merged-branches
|
||||||
|
func (s *BranchesService) DeleteMergedBranches(pid interface{}, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/merged_branches", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
172
vendor/github.com/xanzy/go-gitlab/broadcast_messages.go
generated
vendored
Normal file
172
vendor/github.com/xanzy/go-gitlab/broadcast_messages.go
generated
vendored
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2018, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BroadcastMessagesService handles communication with the broadcast
|
||||||
|
// messages methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/broadcast_messages.html
|
||||||
|
type BroadcastMessagesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// BroadcastMessage represents a GitLab issue board.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/broadcast_messages.html#get-all-broadcast-messages
|
||||||
|
type BroadcastMessage struct {
|
||||||
|
Message string `json:"message"`
|
||||||
|
StartsAt *time.Time `json:"starts_at"`
|
||||||
|
EndsAt *time.Time `json:"ends_at"`
|
||||||
|
Color string `json:"color"`
|
||||||
|
Font string `json:"font"`
|
||||||
|
ID int `json:"id"`
|
||||||
|
Active bool `json:"active"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListBroadcastMessagesOptions represents the available ListBroadcastMessages()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/broadcast_messages.html#get-all-broadcast-messages
|
||||||
|
type ListBroadcastMessagesOptions ListOptions
|
||||||
|
|
||||||
|
// ListBroadcastMessages gets a list of all broadcasted messages.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/broadcast_messages.html#get-all-broadcast-messages
|
||||||
|
func (s *BroadcastMessagesService) ListBroadcastMessages(opt *ListBroadcastMessagesOptions, options ...OptionFunc) ([]*BroadcastMessage, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "broadcast_messages", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var bs []*BroadcastMessage
|
||||||
|
resp, err := s.client.Do(req, &bs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return bs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBroadcastMessage gets a single broadcast message.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/broadcast_messages.html#get-a-specific-broadcast-message
|
||||||
|
func (s *BroadcastMessagesService) GetBroadcastMessage(broadcast int, options ...OptionFunc) (*BroadcastMessage, *Response, error) {
|
||||||
|
u := fmt.Sprintf("broadcast_messages/%d", broadcast)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
b := new(BroadcastMessage)
|
||||||
|
resp, err := s.client.Do(req, &b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateBroadcastMessageOptions represents the available CreateBroadcastMessage()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/broadcast_messages.html#create-a-broadcast-message
|
||||||
|
type CreateBroadcastMessageOptions struct {
|
||||||
|
Message *string `url:"message" json:"message"`
|
||||||
|
StartsAt *time.Time `url:"starts_at,omitempty" json:"starts_at,omitempty"`
|
||||||
|
EndsAt *time.Time `url:"ends_at,omitempty" json:"ends_at,omitempty"`
|
||||||
|
Color *string `url:"color,omitempty" json:"color,omitempty"`
|
||||||
|
Font *string `url:"font,omitempty" json:"font,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateBroadcastMessage creates a message to broadcast.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/broadcast_messages.html#create-a-broadcast-message
|
||||||
|
func (s *BroadcastMessagesService) CreateBroadcastMessage(opt *CreateBroadcastMessageOptions, options ...OptionFunc) (*BroadcastMessage, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("POST", "broadcast_messages", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
b := new(BroadcastMessage)
|
||||||
|
resp, err := s.client.Do(req, &b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateBroadcastMessageOptions represents the available CreateBroadcastMessage()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/broadcast_messages.html#update-a-broadcast-message
|
||||||
|
type UpdateBroadcastMessageOptions struct {
|
||||||
|
Message *string `url:"message,omitempty" json:"message,omitempty"`
|
||||||
|
StartsAt *time.Time `url:"starts_at,omitempty" json:"starts_at,omitempty"`
|
||||||
|
EndsAt *time.Time `url:"ends_at,omitempty" json:"ends_at,omitempty"`
|
||||||
|
Color *string `url:"color,omitempty" json:"color,omitempty"`
|
||||||
|
Font *string `url:"font,omitempty" json:"font,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateBroadcastMessage update a broadcasted message.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/broadcast_messages.html#update-a-broadcast-message
|
||||||
|
func (s *BroadcastMessagesService) UpdateBroadcastMessage(broadcast int, opt *UpdateBroadcastMessageOptions, options ...OptionFunc) (*BroadcastMessage, *Response, error) {
|
||||||
|
u := fmt.Sprintf("broadcast_messages/%d", broadcast)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
b := new(BroadcastMessage)
|
||||||
|
resp, err := s.client.Do(req, &b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteBroadcastMessage deletes a broadcasted message.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/broadcast_messages.html#delete-a-broadcast-message
|
||||||
|
func (s *BroadcastMessagesService) DeleteBroadcastMessage(broadcast int, options ...OptionFunc) (*Response, error) {
|
||||||
|
u := fmt.Sprintf("broadcast_messages/%d", broadcast)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
173
vendor/github.com/xanzy/go-gitlab/build_variables.go
generated
vendored
Normal file
173
vendor/github.com/xanzy/go-gitlab/build_variables.go
generated
vendored
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BuildVariablesService handles communication with the project variables related methods
|
||||||
|
// of the Gitlab API
|
||||||
|
//
|
||||||
|
// Gitlab API Docs : https://docs.gitlab.com/ce/api/build_variables.html
|
||||||
|
type BuildVariablesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// BuildVariable represents a variable available for each build of the given project
|
||||||
|
//
|
||||||
|
// Gitlab API Docs : https://docs.gitlab.com/ce/api/build_variables.html
|
||||||
|
type BuildVariable struct {
|
||||||
|
Key string `json:"key"`
|
||||||
|
Value string `json:"value"`
|
||||||
|
Protected bool `json:"protected"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v BuildVariable) String() string {
|
||||||
|
return Stringify(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListBuildVariablesOptions are the parameters to ListBuildVariables()
|
||||||
|
//
|
||||||
|
// Gitlab API Docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/build_variables.html#list-project-variables
|
||||||
|
type ListBuildVariablesOptions ListOptions
|
||||||
|
|
||||||
|
// ListBuildVariables gets the a list of project variables in a project
|
||||||
|
//
|
||||||
|
// Gitlab API Docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/build_variables.html#list-project-variables
|
||||||
|
func (s *BuildVariablesService) ListBuildVariables(pid interface{}, opts *ListBuildVariablesOptions, options ...OptionFunc) ([]*BuildVariable, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/variables", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opts, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var v []*BuildVariable
|
||||||
|
resp, err := s.client.Do(req, &v)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return v, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBuildVariable gets a single project variable of a project
|
||||||
|
//
|
||||||
|
// Gitlab API Docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/build_variables.html#show-variable-details
|
||||||
|
func (s *BuildVariablesService) GetBuildVariable(pid interface{}, key string, options ...OptionFunc) (*BuildVariable, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/variables/%s", url.QueryEscape(project), key)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
v := new(BuildVariable)
|
||||||
|
resp, err := s.client.Do(req, v)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return v, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateBuildVariableOptions are the parameters to CreateBuildVariable()
|
||||||
|
//
|
||||||
|
// Gitlab API Docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/build_variables.html#create-variable
|
||||||
|
type CreateBuildVariableOptions struct {
|
||||||
|
Key *string `url:"key" json:"key"`
|
||||||
|
Value *string `url:"value" json:"value"`
|
||||||
|
Protected *bool `url:"protected,omitempty" json:"protected,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateBuildVariable creates a variable for a given project
|
||||||
|
//
|
||||||
|
// Gitlab API Docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/build_variables.html#create-variable
|
||||||
|
func (s *BuildVariablesService) CreateBuildVariable(pid interface{}, opt *CreateBuildVariableOptions, options ...OptionFunc) (*BuildVariable, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/variables", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
v := new(BuildVariable)
|
||||||
|
resp, err := s.client.Do(req, v)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return v, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateBuildVariableOptions are the parameters to UpdateBuildVariable()
|
||||||
|
//
|
||||||
|
// Gitlab API Docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/build_variables.html#update-variable
|
||||||
|
type UpdateBuildVariableOptions struct {
|
||||||
|
Key *string `url:"key" json:"key"`
|
||||||
|
Value *string `url:"value" json:"value"`
|
||||||
|
Protected *bool `url:"protected,omitempty" json:"protected,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateBuildVariable updates an existing project variable
|
||||||
|
// The variable key must exist
|
||||||
|
//
|
||||||
|
// Gitlab API Docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/build_variables.html#update-variable
|
||||||
|
func (s *BuildVariablesService) UpdateBuildVariable(pid interface{}, key string, opt *UpdateBuildVariableOptions, options ...OptionFunc) (*BuildVariable, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/variables/%s", url.QueryEscape(project), key)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
v := new(BuildVariable)
|
||||||
|
resp, err := s.client.Do(req, v)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return v, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveBuildVariable removes a project variable of a given project identified by its key
|
||||||
|
//
|
||||||
|
// Gitlab API Docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/build_variables.html#remove-variable
|
||||||
|
func (s *BuildVariablesService) RemoveBuildVariable(pid interface{}, key string, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/variables/%s", url.QueryEscape(project), key)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
448
vendor/github.com/xanzy/go-gitlab/commits.go
generated
vendored
Normal file
448
vendor/github.com/xanzy/go-gitlab/commits.go
generated
vendored
Normal file
@ -0,0 +1,448 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CommitsService handles communication with the commit related methods
|
||||||
|
// of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html
|
||||||
|
type CommitsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commit represents a GitLab commit.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html
|
||||||
|
type Commit struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
ShortID string `json:"short_id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
AuthorName string `json:"author_name"`
|
||||||
|
AuthorEmail string `json:"author_email"`
|
||||||
|
AuthoredDate *time.Time `json:"authored_date"`
|
||||||
|
CommitterName string `json:"committer_name"`
|
||||||
|
CommitterEmail string `json:"committer_email"`
|
||||||
|
CommittedDate *time.Time `json:"committed_date"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
ParentIDs []string `json:"parent_ids"`
|
||||||
|
Stats *CommitStats `json:"stats"`
|
||||||
|
Status *BuildStateValue `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommitStats represents the number of added and deleted files in a commit.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html
|
||||||
|
type CommitStats struct {
|
||||||
|
Additions int `json:"additions"`
|
||||||
|
Deletions int `json:"deletions"`
|
||||||
|
Total int `json:"total"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c Commit) String() string {
|
||||||
|
return Stringify(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListCommitsOptions represents the available ListCommits() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html#list-repository-commits
|
||||||
|
type ListCommitsOptions struct {
|
||||||
|
ListOptions
|
||||||
|
RefName *string `url:"ref_name,omitempty" json:"ref_name,omitempty"`
|
||||||
|
Since *time.Time `url:"since,omitempty" json:"since,omitempty"`
|
||||||
|
Until *time.Time `url:"until,omitempty" json:"until,omitempty"`
|
||||||
|
Path *string `url:"path,omitempty" json:"path,omitempty"`
|
||||||
|
All *bool `url:"all,omitempty" json:"all,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListCommits gets a list of repository commits in a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html#list-commits
|
||||||
|
func (s *CommitsService) ListCommits(pid interface{}, opt *ListCommitsOptions, options ...OptionFunc) ([]*Commit, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/commits", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var c []*Commit
|
||||||
|
resp, err := s.client.Do(req, &c)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return c, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// FileAction represents the available actions that can be performed on a file.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html#create-a-commit-with-multiple-files-and-actions
|
||||||
|
type FileAction string
|
||||||
|
|
||||||
|
// The available file actions.
|
||||||
|
const (
|
||||||
|
FileCreate FileAction = "create"
|
||||||
|
FileDelete FileAction = "delete"
|
||||||
|
FileMove FileAction = "move"
|
||||||
|
FileUpdate FileAction = "update"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CommitAction represents a single file action within a commit.
|
||||||
|
type CommitAction struct {
|
||||||
|
Action FileAction `url:"action" json:"action"`
|
||||||
|
FilePath string `url:"file_path" json:"file_path"`
|
||||||
|
PreviousPath string `url:"previous_path,omitempty" json:"previous_path,omitempty"`
|
||||||
|
Content string `url:"content,omitempty" json:"content,omitempty"`
|
||||||
|
Encoding string `url:"encoding,omitempty" json:"encoding,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCommit gets a specific commit identified by the commit hash or name of a
|
||||||
|
// branch or tag.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html#get-a-single-commit
|
||||||
|
func (s *CommitsService) GetCommit(pid interface{}, sha string, options ...OptionFunc) (*Commit, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/commits/%s", url.QueryEscape(project), sha)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
c := new(Commit)
|
||||||
|
resp, err := s.client.Do(req, c)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return c, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateCommitOptions represents the available options for a new commit.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html#create-a-commit-with-multiple-files-and-actions
|
||||||
|
type CreateCommitOptions struct {
|
||||||
|
Branch *string `url:"branch" json:"branch"`
|
||||||
|
CommitMessage *string `url:"commit_message" json:"commit_message"`
|
||||||
|
StartBranch *string `url:"start_branch,omitempty" json:"start_branch,omitempty"`
|
||||||
|
Actions []*CommitAction `url:"actions" json:"actions"`
|
||||||
|
AuthorEmail *string `url:"author_email,omitempty" json:"author_email,omitempty"`
|
||||||
|
AuthorName *string `url:"author_name,omitempty" json:"author_name,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateCommit creates a commit with multiple files and actions.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html#create-a-commit-with-multiple-files-and-actions
|
||||||
|
func (s *CommitsService) CreateCommit(pid interface{}, opt *CreateCommitOptions, options ...OptionFunc) (*Commit, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/commits", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var c *Commit
|
||||||
|
resp, err := s.client.Do(req, &c)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return c, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Diff represents a GitLab diff.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html
|
||||||
|
type Diff struct {
|
||||||
|
Diff string `json:"diff"`
|
||||||
|
NewPath string `json:"new_path"`
|
||||||
|
OldPath string `json:"old_path"`
|
||||||
|
AMode string `json:"a_mode"`
|
||||||
|
BMode string `json:"b_mode"`
|
||||||
|
NewFile bool `json:"new_file"`
|
||||||
|
RenamedFile bool `json:"renamed_file"`
|
||||||
|
DeletedFile bool `json:"deleted_file"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d Diff) String() string {
|
||||||
|
return Stringify(d)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCommitDiffOptions represents the available GetCommitDiff() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/commits.html#get-the-diff-of-a-commit
|
||||||
|
type GetCommitDiffOptions ListOptions
|
||||||
|
|
||||||
|
// GetCommitDiff gets the diff of a commit in a project..
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/commits.html#get-the-diff-of-a-commit
|
||||||
|
func (s *CommitsService) GetCommitDiff(pid interface{}, sha string, opt *GetCommitDiffOptions, options ...OptionFunc) ([]*Diff, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/commits/%s/diff", url.QueryEscape(project), sha)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var d []*Diff
|
||||||
|
resp, err := s.client.Do(req, &d)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return d, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommitComment represents a GitLab commit comment.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html
|
||||||
|
type CommitComment struct {
|
||||||
|
Note string `json:"note"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
Line int `json:"line"`
|
||||||
|
LineType string `json:"line_type"`
|
||||||
|
Author Author `json:"author"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Author represents a GitLab commit author
|
||||||
|
type Author struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
State string `json:"state"`
|
||||||
|
Blocked bool `json:"blocked"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c CommitComment) String() string {
|
||||||
|
return Stringify(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCommitCommentsOptions represents the available GetCommitComments() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/commits.html#get-the-comments-of-a-commit
|
||||||
|
type GetCommitCommentsOptions ListOptions
|
||||||
|
|
||||||
|
// GetCommitComments gets the comments of a commit in a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/commits.html#get-the-comments-of-a-commit
|
||||||
|
func (s *CommitsService) GetCommitComments(pid interface{}, sha string, opt *GetCommitCommentsOptions, options ...OptionFunc) ([]*CommitComment, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/commits/%s/comments", url.QueryEscape(project), sha)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var c []*CommitComment
|
||||||
|
resp, err := s.client.Do(req, &c)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return c, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// PostCommitCommentOptions represents the available PostCommitComment()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/commits.html#post-comment-to-commit
|
||||||
|
type PostCommitCommentOptions struct {
|
||||||
|
Note *string `url:"note,omitempty" json:"note,omitempty"`
|
||||||
|
Path *string `url:"path" json:"path"`
|
||||||
|
Line *int `url:"line" json:"line"`
|
||||||
|
LineType *string `url:"line_type" json:"line_type"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PostCommitComment adds a comment to a commit. Optionally you can post
|
||||||
|
// comments on a specific line of a commit. Therefor both path, line_new and
|
||||||
|
// line_old are required.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/commits.html#post-comment-to-commit
|
||||||
|
func (s *CommitsService) PostCommitComment(pid interface{}, sha string, opt *PostCommitCommentOptions, options ...OptionFunc) (*CommitComment, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/commits/%s/comments", url.QueryEscape(project), sha)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
c := new(CommitComment)
|
||||||
|
resp, err := s.client.Do(req, c)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return c, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCommitStatusesOptions represents the available GetCommitStatuses() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html#get-the-status-of-a-commit
|
||||||
|
type GetCommitStatusesOptions struct {
|
||||||
|
ListOptions
|
||||||
|
Ref *string `url:"ref,omitempty" json:"ref,omitempty"`
|
||||||
|
Stage *string `url:"stage,omitempty" json:"stage,omitempty"`
|
||||||
|
Name *string `url:"name,omitempty" json:"name,omitempty"`
|
||||||
|
All *bool `url:"all,omitempty" json:"all,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommitStatus represents a GitLab commit status.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html#get-the-status-of-a-commit
|
||||||
|
type CommitStatus struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
SHA string `json:"sha"`
|
||||||
|
Ref string `json:"ref"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
TargetURL string `json:"target_url"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
StartedAt *time.Time `json:"started_at"`
|
||||||
|
FinishedAt *time.Time `json:"finished_at"`
|
||||||
|
Author Author `json:"author"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCommitStatuses gets the statuses of a commit in a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html#get-the-status-of-a-commit
|
||||||
|
func (s *CommitsService) GetCommitStatuses(pid interface{}, sha string, opt *GetCommitStatusesOptions, options ...OptionFunc) ([]*CommitStatus, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/commits/%s/statuses", url.QueryEscape(project), sha)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var cs []*CommitStatus
|
||||||
|
resp, err := s.client.Do(req, &cs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return cs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCommitStatusOptions represents the available SetCommitStatus() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html#post-the-status-to-commit
|
||||||
|
type SetCommitStatusOptions struct {
|
||||||
|
State BuildStateValue `url:"state" json:"state"`
|
||||||
|
Ref *string `url:"ref,omitempty" json:"ref,omitempty"`
|
||||||
|
Name *string `url:"name,omitempty" json:"name,omitempty"`
|
||||||
|
Context *string `url:"context,omitempty" json:"context,omitempty"`
|
||||||
|
TargetURL *string `url:"target_url,omitempty" json:"target_url,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCommitStatus sets the status of a commit in a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html#post-the-status-to-commit
|
||||||
|
func (s *CommitsService) SetCommitStatus(pid interface{}, sha string, opt *SetCommitStatusOptions, options ...OptionFunc) (*CommitStatus, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/statuses/%s", url.QueryEscape(project), sha)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var cs *CommitStatus
|
||||||
|
resp, err := s.client.Do(req, &cs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return cs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CherryPickCommitOptions represents the available options for cherry-picking a commit.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html#cherry-pick-a-commit
|
||||||
|
type CherryPickCommitOptions struct {
|
||||||
|
TargetBranch *string `url:"branch" json:"branch,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CherryPickCommit sherry picks a commit to a given branch.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/commits.html#cherry-pick-a-commit
|
||||||
|
func (s *CommitsService) CherryPickCommit(pid interface{}, sha string, opt *CherryPickCommitOptions, options ...OptionFunc) (*Commit, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/commits/%s/cherry_pick",
|
||||||
|
url.QueryEscape(project), url.QueryEscape(sha))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var c *Commit
|
||||||
|
resp, err := s.client.Do(req, &c)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return c, resp, err
|
||||||
|
}
|
201
vendor/github.com/xanzy/go-gitlab/deploy_keys.go
generated
vendored
Normal file
201
vendor/github.com/xanzy/go-gitlab/deploy_keys.go
generated
vendored
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeployKeysService handles communication with the keys related methods
|
||||||
|
// of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/deploy_keys.html
|
||||||
|
type DeployKeysService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeployKey represents a GitLab deploy key.
|
||||||
|
type DeployKey struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Key string `json:"key"`
|
||||||
|
CanPush *bool `json:"can_push"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (k DeployKey) String() string {
|
||||||
|
return Stringify(k)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListAllDeployKeys gets a list of all deploy keys
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/deploy_keys.html#list-all-deploy-keys
|
||||||
|
func (s *DeployKeysService) ListAllDeployKeys(options ...OptionFunc) ([]*DeployKey, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "deploy_keys", nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var ks []*DeployKey
|
||||||
|
resp, err := s.client.Do(req, &ks)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ks, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProjectDeployKeysOptions represents the available ListProjectDeployKeys()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/deploy_keys.html#list-project-deploy-keys
|
||||||
|
type ListProjectDeployKeysOptions ListOptions
|
||||||
|
|
||||||
|
// ListProjectDeployKeys gets a list of a project's deploy keys
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/deploy_keys.html#list-project-deploy-keys
|
||||||
|
func (s *DeployKeysService) ListProjectDeployKeys(pid interface{}, opt *ListProjectDeployKeysOptions, options ...OptionFunc) ([]*DeployKey, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/deploy_keys", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var ks []*DeployKey
|
||||||
|
resp, err := s.client.Do(req, &ks)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ks, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDeployKey gets a single deploy key.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/deploy_keys.html#single-deploy-key
|
||||||
|
func (s *DeployKeysService) GetDeployKey(pid interface{}, deployKey int, options ...OptionFunc) (*DeployKey, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/deploy_keys/%d", url.QueryEscape(project), deployKey)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
k := new(DeployKey)
|
||||||
|
resp, err := s.client.Do(req, k)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return k, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddDeployKeyOptions represents the available ADDDeployKey() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/deploy_keys.html#add-deploy-key
|
||||||
|
type AddDeployKeyOptions struct {
|
||||||
|
Title *string `url:"title,omitempty" json:"title,omitempty"`
|
||||||
|
Key *string `url:"key,omitempty" json:"key,omitempty"`
|
||||||
|
CanPush *bool `url:"can_push,omitempty" json:"can_push,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddDeployKey creates a new deploy key for a project. If deploy key already
|
||||||
|
// exists in another project - it will be joined to project but only if
|
||||||
|
// original one was is accessible by same user.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/deploy_keys.html#add-deploy-key
|
||||||
|
func (s *DeployKeysService) AddDeployKey(pid interface{}, opt *AddDeployKeyOptions, options ...OptionFunc) (*DeployKey, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/deploy_keys", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
k := new(DeployKey)
|
||||||
|
resp, err := s.client.Do(req, k)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return k, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteDeployKey deletes a deploy key from a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/deploy_keys.html#delete-deploy-key
|
||||||
|
func (s *DeployKeysService) DeleteDeployKey(pid interface{}, deployKey int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/deploy_keys/%d", url.QueryEscape(project), deployKey)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableDeployKey enables a deploy key.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/deploy_keys.html#enable-deploy-key
|
||||||
|
func (s *DeployKeysService) EnableDeployKey(pid interface{}, deployKey int, options ...OptionFunc) (*DeployKey, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/deploy_keys/%d/enable", url.QueryEscape(project), deployKey)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
k := new(DeployKey)
|
||||||
|
resp, err := s.client.Do(req, k)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return k, resp, err
|
||||||
|
}
|
121
vendor/github.com/xanzy/go-gitlab/deployments.go
generated
vendored
Normal file
121
vendor/github.com/xanzy/go-gitlab/deployments.go
generated
vendored
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2018, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeploymentsService handles communication with the deployment related methods
|
||||||
|
// of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/deployments.html
|
||||||
|
type DeploymentsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deployment represents the Gitlab deployment
|
||||||
|
type Deployment struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
IID int `json:"iid"`
|
||||||
|
Ref string `json:"ref"`
|
||||||
|
Sha string `json:"sha"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
User *ProjectUser `json:"user"`
|
||||||
|
Environment *Environment `json:"environment"`
|
||||||
|
Deployable struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Stage string `json:"stage"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Ref string `json:"ref"`
|
||||||
|
Tag bool `json:"tag"`
|
||||||
|
Coverage float64 `json:"coverage"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
StartedAt *time.Time `json:"started_at"`
|
||||||
|
FinishedAt *time.Time `json:"finished_at"`
|
||||||
|
Duration float64 `json:"duration"`
|
||||||
|
User *User `json:"user"`
|
||||||
|
Commit *Commit `json:"commit"`
|
||||||
|
Pipeline struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Sha string `json:"sha"`
|
||||||
|
Ref string `json:"ref"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
} `json:"pipeline"`
|
||||||
|
Runner *Runner `json:"runner"`
|
||||||
|
} `json:"deployable"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProjectDeploymentsOptions represents the available ListProjectDeployments() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/deployments.html#list-project-deployments
|
||||||
|
type ListProjectDeploymentsOptions struct {
|
||||||
|
ListOptions
|
||||||
|
OrderBy *string `url:"order_by,omitempty" json:"order_by,omitempty"`
|
||||||
|
Sort *string `url:"sort,omitempty" json:"sort,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProjectDeployments gets a list of deployments in a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/deployments.html#list-project-deployments
|
||||||
|
func (s *DeploymentsService) ListProjectDeployments(pid interface{}, opts *ListProjectDeploymentsOptions, options ...OptionFunc) ([]*Deployment, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/deployments", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opts, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var ds []*Deployment
|
||||||
|
resp, err := s.client.Do(req, &ds)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ds, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetProjectDeployment get a deployment for a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/deployments.html#get-a-specific-deployment
|
||||||
|
func (s *DeploymentsService) GetProjectDeployment(pid interface{}, deployment int, options ...OptionFunc) (*Deployment, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/deployments/%d", url.QueryEscape(project), deployment)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
d := new(Deployment)
|
||||||
|
resp, err := s.client.Do(req, d)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return d, resp, err
|
||||||
|
}
|
166
vendor/github.com/xanzy/go-gitlab/environments.go
generated
vendored
Normal file
166
vendor/github.com/xanzy/go-gitlab/environments.go
generated
vendored
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// EnvironmentsService handles communication with the environment related methods
|
||||||
|
// of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/environments.html
|
||||||
|
type EnvironmentsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Environment represents a GitLab environment.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/environments.html
|
||||||
|
type Environment struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Slug string `json:"slug"`
|
||||||
|
ExternalURL string `json:"external_url"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (env Environment) String() string {
|
||||||
|
return Stringify(env)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListEnvironmentsOptions represents the available ListEnvironments() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ee/api/environments.html#list-environments
|
||||||
|
type ListEnvironmentsOptions ListOptions
|
||||||
|
|
||||||
|
// ListEnvironments gets a list of environments from a project, sorted by name
|
||||||
|
// alphabetically.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ee/api/environments.html#list-environments
|
||||||
|
func (s *EnvironmentsService) ListEnvironments(pid interface{}, opts *ListEnvironmentsOptions, options ...OptionFunc) ([]*Environment, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/environments", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opts, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var envs []*Environment
|
||||||
|
resp, err := s.client.Do(req, &envs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return envs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateEnvironmentOptions represents the available CreateEnvironment() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ee/api/environments.html#create-a-new-environment
|
||||||
|
type CreateEnvironmentOptions struct {
|
||||||
|
Name *string `url:"name,omitempty" json:"name,omitempty"`
|
||||||
|
ExternalURL *string `url:"external_url,omitempty" json:"external_url,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateEnvironment adds a environment to a project. This is an idempotent
|
||||||
|
// method and can be called multiple times with the same parameters. Createing
|
||||||
|
// an environment that is already a environment does not affect the
|
||||||
|
// existing environmentship.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ee/api/environments.html#create-a-new-environment
|
||||||
|
func (s *EnvironmentsService) CreateEnvironment(pid interface{}, opt *CreateEnvironmentOptions, options ...OptionFunc) (*Environment, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/environments", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
env := new(Environment)
|
||||||
|
resp, err := s.client.Do(req, env)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return env, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditEnvironmentOptions represents the available EditEnvironment() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ee/api/environments.html#edit-an-existing-environment
|
||||||
|
type EditEnvironmentOptions struct {
|
||||||
|
Name *string `url:"name,omitempty" json:"name,omitempty"`
|
||||||
|
ExternalURL *string `url:"external_url,omitempty" json:"external_url,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditEnvironment updates a project team environment to a specified access level..
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ee/api/environments.html#edit-an-existing-environment
|
||||||
|
func (s *EnvironmentsService) EditEnvironment(pid interface{}, environment int, opt *EditEnvironmentOptions, options ...OptionFunc) (*Environment, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/environments/%d", url.QueryEscape(project), environment)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
env := new(Environment)
|
||||||
|
resp, err := s.client.Do(req, env)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return env, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteEnvironment removes a environment from a project team.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/environments.html#remove-a-environment-from-a-group-or-project
|
||||||
|
func (s *EnvironmentsService) DeleteEnvironment(pid interface{}, environment int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/environments/%d", url.QueryEscape(project), environment)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
649
vendor/github.com/xanzy/go-gitlab/event_types.go
generated
vendored
Normal file
649
vendor/github.com/xanzy/go-gitlab/event_types.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
147
vendor/github.com/xanzy/go-gitlab/events.go
generated
vendored
Normal file
147
vendor/github.com/xanzy/go-gitlab/events.go
generated
vendored
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// EventsService handles communication with the event related methods of
|
||||||
|
// the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/events.html
|
||||||
|
type EventsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// ContributionEvent represents a user's contribution
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/events.html#get-user-contribution-events
|
||||||
|
type ContributionEvent struct {
|
||||||
|
Title string `json:"title"`
|
||||||
|
ProjectID int `json:"project_id"`
|
||||||
|
ActionName string `json:"action_name"`
|
||||||
|
TargetID int `json:"target_id"`
|
||||||
|
TargetIID int `json:"target_iid"`
|
||||||
|
TargetType string `json:"target_type"`
|
||||||
|
AuthorID int `json:"author_id"`
|
||||||
|
TargetTitle string `json:"target_title"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
PushData struct {
|
||||||
|
CommitCount int `json:"commit_count"`
|
||||||
|
Action string `json:"action"`
|
||||||
|
RefType string `json:"ref_type"`
|
||||||
|
CommitFrom string `json:"commit_from"`
|
||||||
|
CommitTo string `json:"commit_to"`
|
||||||
|
Ref string `json:"ref"`
|
||||||
|
CommitTitle string `json:"commit_title"`
|
||||||
|
} `json:"push_data"`
|
||||||
|
Note *Note `json:"note"`
|
||||||
|
Author struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
ID int `json:"id"`
|
||||||
|
State string `json:"state"`
|
||||||
|
AvatarURL string `json:"avatar_url"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
} `json:"author"`
|
||||||
|
AuthorUsername string `json:"author_username"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListContributionEventsOptions represents the options for GetUserContributionEvents
|
||||||
|
//
|
||||||
|
// GitLap API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/events.html#get-user-contribution-events
|
||||||
|
type ListContributionEventsOptions struct {
|
||||||
|
ListOptions
|
||||||
|
Action *EventTypeValue `json:"action,omitempty"`
|
||||||
|
TargetType *EventTargetTypeValue `json:"target_type,omitempty"`
|
||||||
|
Before *ISOTime `json:"before,omitempty"`
|
||||||
|
After *ISOTime `json:"after,omitempty"`
|
||||||
|
Sort *string `json:"sort,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListUserContributionEvents retrieves user contribution events
|
||||||
|
// for the specified user, sorted from newest to oldest.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/events.html#get-user-contribution-events
|
||||||
|
func (s *UsersService) ListUserContributionEvents(uid interface{}, opt *ListContributionEventsOptions, options ...OptionFunc) ([]*ContributionEvent, *Response, error) {
|
||||||
|
user, err := parseID(uid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("users/%s/events", user)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var cs []*ContributionEvent
|
||||||
|
resp, err := s.client.Do(req, &cs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return cs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListCurrentUserContributionEvents gets a list currently authenticated user's events
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/events.html#list-currently-authenticated-user-39-s-events
|
||||||
|
func (s *EventsService) ListCurrentUserContributionEvents(opt *ListContributionEventsOptions, options ...OptionFunc) ([]*ContributionEvent, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "events", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var cs []*ContributionEvent
|
||||||
|
resp, err := s.client.Do(req, &cs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return cs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProjectContributionEvents gets a list currently authenticated user's events
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/events.html#list-a-project-39-s-visible-events
|
||||||
|
func (s *EventsService) ListProjectContributionEvents(pid interface{}, opt *ListContributionEventsOptions, options ...OptionFunc) ([]*ContributionEvent, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("%s/events", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var cs []*ContributionEvent
|
||||||
|
resp, err := s.client.Do(req, &cs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return cs, resp, err
|
||||||
|
}
|
79
vendor/github.com/xanzy/go-gitlab/feature_flags.go
generated
vendored
Normal file
79
vendor/github.com/xanzy/go-gitlab/feature_flags.go
generated
vendored
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FeaturesService handles the communication with the application FeaturesService
|
||||||
|
// related methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/features.html
|
||||||
|
type FeaturesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Feature represents a GitLab feature flag.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/features.html
|
||||||
|
type Feature struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
State string `json:"state"`
|
||||||
|
Gates []Gate
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gate represents a gate of a GitLab feature flag.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/features.html
|
||||||
|
type Gate struct {
|
||||||
|
Key string `json:"key"`
|
||||||
|
Value interface{} `json:"value"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f Feature) String() string {
|
||||||
|
return Stringify(f)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListFeatures gets a list of feature flags
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/features.html#list-all-features
|
||||||
|
func (s *FeaturesService) ListFeatures(options ...OptionFunc) ([]*Feature, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "features", nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var f []*Feature
|
||||||
|
resp, err := s.client.Do(req, &f)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
return f, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFeatureFlag sets or creates a feature flag gate
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/features.html#set-or-create-a-feature
|
||||||
|
func (s *FeaturesService) SetFeatureFlag(name string, value interface{}, options ...OptionFunc) (*Feature, *Response, error) {
|
||||||
|
u := fmt.Sprintf("features/%s", url.QueryEscape(name))
|
||||||
|
|
||||||
|
opt := struct {
|
||||||
|
Value interface{} `url:"value" json:"value"`
|
||||||
|
}{
|
||||||
|
value,
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
f := &Feature{}
|
||||||
|
resp, err := s.client.Do(req, f)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
return f, resp, err
|
||||||
|
}
|
84
vendor/github.com/xanzy/go-gitlab/gitignore_templates.go
generated
vendored
Normal file
84
vendor/github.com/xanzy/go-gitlab/gitignore_templates.go
generated
vendored
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2018, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GitIgnoreTemplatesService handles communication with the gitignore
|
||||||
|
// templates related methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/templates/gitignores.html
|
||||||
|
type GitIgnoreTemplatesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// GitIgnoreTemplate represents a GitLab gitignore template.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/templates/gitignores.html
|
||||||
|
type GitIgnoreTemplate struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Content string `json:"content"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListTemplatesOptions represents the available ListAllTemplates() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/templates/gitignores.html#list-gitignore-templates
|
||||||
|
type ListTemplatesOptions ListOptions
|
||||||
|
|
||||||
|
// ListTemplates get a list of available git ignore templates
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/templates/gitignores.html#list-gitignore-templates
|
||||||
|
func (s *GitIgnoreTemplatesService) ListTemplates(opt *ListTemplatesOptions, options ...OptionFunc) ([]*GitIgnoreTemplate, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "templates/gitignores", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var gs []*GitIgnoreTemplate
|
||||||
|
resp, err := s.client.Do(req, &gs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return gs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTemplate get a git ignore template
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/templates/gitignores.html#single-gitignore-template
|
||||||
|
func (s *GitIgnoreTemplatesService) GetTemplate(key string, options ...OptionFunc) (*GitIgnoreTemplate, *Response, error) {
|
||||||
|
u := fmt.Sprintf("templates/gitignores/%s", url.QueryEscape(key))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
g := new(GitIgnoreTemplate)
|
||||||
|
resp, err := s.client.Do(req, g)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return g, resp, err
|
||||||
|
}
|
836
vendor/github.com/xanzy/go-gitlab/gitlab.go
generated
vendored
Normal file
836
vendor/github.com/xanzy/go-gitlab/gitlab.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
195
vendor/github.com/xanzy/go-gitlab/group_members.go
generated
vendored
Normal file
195
vendor/github.com/xanzy/go-gitlab/group_members.go
generated
vendored
Normal file
@ -0,0 +1,195 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GroupMembersService handles communication with the group members
|
||||||
|
// related methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/members.html
|
||||||
|
type GroupMembersService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// GroupMember represents a GitLab group member.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/members.html
|
||||||
|
type GroupMember struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
State string `json:"state"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
AccessLevel AccessLevelValue `json:"access_level"`
|
||||||
|
ExpiresAt *ISOTime `json:"expires_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListGroupMembersOptions represents the available ListGroupMembers()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#list-all-members-of-a-group-or-project
|
||||||
|
type ListGroupMembersOptions struct {
|
||||||
|
ListOptions
|
||||||
|
Query *string `url:"query,omitempty" json:"query,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListGroupMembers get a list of group members viewable by the authenticated
|
||||||
|
// user.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#list-all-members-of-a-group-or-project
|
||||||
|
func (s *GroupsService) ListGroupMembers(gid interface{}, opt *ListGroupMembersOptions, options ...OptionFunc) ([]*GroupMember, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/members", url.QueryEscape(group))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var gm []*GroupMember
|
||||||
|
resp, err := s.client.Do(req, &gm)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return gm, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddGroupMemberOptions represents the available AddGroupMember() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#add-a-member-to-a-group-or-project
|
||||||
|
type AddGroupMemberOptions struct {
|
||||||
|
UserID *int `url:"user_id,omitempty" json:"user_id,omitempty"`
|
||||||
|
AccessLevel *AccessLevelValue `url:"access_level,omitempty" json:"access_level,omitempty"`
|
||||||
|
ExpiresAt *string `url:"expires_at,omitempty" json:"expires_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetGroupMember gets a member of a group.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#get-a-member-of-a-group-or-project
|
||||||
|
func (s *GroupMembersService) GetGroupMember(gid interface{}, user int, options ...OptionFunc) (*GroupMember, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/members/%d", url.QueryEscape(group), user)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
gm := new(GroupMember)
|
||||||
|
resp, err := s.client.Do(req, gm)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return gm, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddGroupMember adds a user to the list of group members.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#add-a-member-to-a-group-or-project
|
||||||
|
func (s *GroupMembersService) AddGroupMember(gid interface{}, opt *AddGroupMemberOptions, options ...OptionFunc) (*GroupMember, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/members", url.QueryEscape(group))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
gm := new(GroupMember)
|
||||||
|
resp, err := s.client.Do(req, gm)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return gm, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditGroupMemberOptions represents the available EditGroupMember()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#edit-a-member-of-a-group-or-project
|
||||||
|
type EditGroupMemberOptions struct {
|
||||||
|
AccessLevel *AccessLevelValue `url:"access_level,omitempty" json:"access_level,omitempty"`
|
||||||
|
ExpiresAt *string `url:"expires_at,omitempty" json:"expires_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditGroupMember updates a member of a group.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#edit-a-member-of-a-group-or-project
|
||||||
|
func (s *GroupMembersService) EditGroupMember(gid interface{}, user int, opt *EditGroupMemberOptions, options ...OptionFunc) (*GroupMember, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/members/%d", url.QueryEscape(group), user)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
gm := new(GroupMember)
|
||||||
|
resp, err := s.client.Do(req, gm)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return gm, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveGroupMember removes user from user team.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#remove-a-member-from-a-group-or-project
|
||||||
|
func (s *GroupMembersService) RemoveGroupMember(gid interface{}, user int, options ...OptionFunc) (*Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/members/%d", url.QueryEscape(group), user)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
250
vendor/github.com/xanzy/go-gitlab/group_milestones.go
generated
vendored
Normal file
250
vendor/github.com/xanzy/go-gitlab/group_milestones.go
generated
vendored
Normal file
@ -0,0 +1,250 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2018, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GroupMilestonesService handles communication with the milestone related
|
||||||
|
// methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/group_milestones.html
|
||||||
|
type GroupMilestonesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// GroupMilestone represents a GitLab milestone.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/group_milestones.html
|
||||||
|
type GroupMilestone struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
IID int `json:"iid"`
|
||||||
|
GroupID int `json:"group_id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
StartDate *ISOTime `json:"start_date"`
|
||||||
|
DueDate *ISOTime `json:"due_date"`
|
||||||
|
State string `json:"state"`
|
||||||
|
UpdatedAt *time.Time `json:"updated_at"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m GroupMilestone) String() string {
|
||||||
|
return Stringify(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListGroupMilestonesOptions represents the available
|
||||||
|
// ListGroupMilestones() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/group_milestones.html#list-group-milestones
|
||||||
|
type ListGroupMilestonesOptions struct {
|
||||||
|
ListOptions
|
||||||
|
IIDs []int `url:"iids,omitempty" json:"iids,omitempty"`
|
||||||
|
State string `url:"state,omitempty" json:"state,omitempty"`
|
||||||
|
Search string `url:"search,omitempty" json:"search,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListGroupMilestones returns a list of group milestones.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/group_milestones.html#list-group-milestones
|
||||||
|
func (s *GroupMilestonesService) ListGroupMilestones(gid interface{}, opt *ListGroupMilestonesOptions, options ...OptionFunc) ([]*GroupMilestone, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/milestones", url.QueryEscape(group))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var m []*GroupMilestone
|
||||||
|
resp, err := s.client.Do(req, &m)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return m, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetGroupMilestone gets a single group milestone.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/group_milestones.html#get-single-milestone
|
||||||
|
func (s *GroupMilestonesService) GetGroupMilestone(gid interface{}, milestone int, options ...OptionFunc) (*GroupMilestone, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/milestones/%d", url.QueryEscape(group), milestone)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
m := new(GroupMilestone)
|
||||||
|
resp, err := s.client.Do(req, m)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return m, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateGroupMilestoneOptions represents the available CreateGroupMilestone() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/group_milestones.html#create-new-milestone
|
||||||
|
type CreateGroupMilestoneOptions struct {
|
||||||
|
Title *string `url:"title,omitempty" json:"title,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
StartDate *ISOTime `url:"start_date,omitempty" json:"start_date,omitempty"`
|
||||||
|
DueDate *ISOTime `url:"due_date,omitempty" json:"due_date,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateGroupMilestone creates a new group milestone.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/group_milestones.html#create-new-milestone
|
||||||
|
func (s *GroupMilestonesService) CreateGroupMilestone(gid interface{}, opt *CreateGroupMilestoneOptions, options ...OptionFunc) (*GroupMilestone, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/milestones", url.QueryEscape(group))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
m := new(GroupMilestone)
|
||||||
|
resp, err := s.client.Do(req, m)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return m, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateGroupMilestoneOptions represents the available UpdateGroupMilestone() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/group_milestones.html#edit-milestone
|
||||||
|
type UpdateGroupMilestoneOptions struct {
|
||||||
|
Title *string `url:"title,omitempty" json:"title,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
StartDate *ISOTime `url:"start_date,omitempty" json:"start_date,omitempty"`
|
||||||
|
DueDate *ISOTime `url:"due_date,omitempty" json:"due_date,omitempty"`
|
||||||
|
StateEvent *string `url:"state_event,omitempty" json:"state_event,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateGroupMilestone updates an existing group milestone.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/group_milestones.html#edit-milestone
|
||||||
|
func (s *GroupMilestonesService) UpdateGroupMilestone(gid interface{}, milestone int, opt *UpdateGroupMilestoneOptions, options ...OptionFunc) (*GroupMilestone, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/milestones/%d", url.QueryEscape(group), milestone)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
m := new(GroupMilestone)
|
||||||
|
resp, err := s.client.Do(req, m)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return m, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetGroupMilestoneIssuesOptions represents the available GetGroupMilestoneIssues() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/group_milestones.html#get-all-issues-assigned-to-a-single-milestone
|
||||||
|
type GetGroupMilestoneIssuesOptions ListOptions
|
||||||
|
|
||||||
|
// GetGroupMilestoneIssues gets all issues assigned to a single group milestone.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/group_milestones.html#get-all-issues-assigned-to-a-single-milestone
|
||||||
|
func (s *GroupMilestonesService) GetGroupMilestoneIssues(gid interface{}, milestone int, opt *GetGroupMilestoneIssuesOptions, options ...OptionFunc) ([]*Issue, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/milestones/%d/issues", url.QueryEscape(group), milestone)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var i []*Issue
|
||||||
|
resp, err := s.client.Do(req, &i)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return i, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetGroupMilestoneMergeRequestsOptions represents the available
|
||||||
|
// GetGroupMilestoneMergeRequests() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/group_milestones.html#get-all-merge-requests-assigned-to-a-single-milestone
|
||||||
|
type GetGroupMilestoneMergeRequestsOptions ListOptions
|
||||||
|
|
||||||
|
// GetGroupMilestoneMergeRequests gets all merge requests assigned to a
|
||||||
|
// single group milestone.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/group_milestones.html#get-all-merge-requests-assigned-to-a-single-milestone
|
||||||
|
func (s *GroupMilestonesService) GetGroupMilestoneMergeRequests(gid interface{}, milestone int, opt *GetGroupMilestoneMergeRequestsOptions, options ...OptionFunc) ([]*MergeRequest, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/milestones/%d/merge_requests", url.QueryEscape(group), milestone)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var mr []*MergeRequest
|
||||||
|
resp, err := s.client.Do(req, &mr)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return mr, resp, err
|
||||||
|
}
|
307
vendor/github.com/xanzy/go-gitlab/groups.go
generated
vendored
Normal file
307
vendor/github.com/xanzy/go-gitlab/groups.go
generated
vendored
Normal file
@ -0,0 +1,307 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GroupsService handles communication with the group related methods of
|
||||||
|
// the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/groups.html
|
||||||
|
type GroupsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Group represents a GitLab group.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/groups.html
|
||||||
|
type Group struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Visibility *VisibilityValue `json:"visibility"`
|
||||||
|
LFSEnabled bool `json:"lfs_enabled"`
|
||||||
|
AvatarURL string `json:"avatar_url"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
RequestAccessEnabled bool `json:"request_access_enabled"`
|
||||||
|
FullName string `json:"full_name"`
|
||||||
|
FullPath string `json:"full_path"`
|
||||||
|
ParentID int `json:"parent_id"`
|
||||||
|
Projects []*Project `json:"projects"`
|
||||||
|
Statistics *StorageStatistics `json:"statistics"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListGroupsOptions represents the available ListGroups() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/groups.html#list-project-groups
|
||||||
|
type ListGroupsOptions struct {
|
||||||
|
ListOptions
|
||||||
|
AllAvailable *bool `url:"all_available,omitempty" json:"all_available,omitempty"`
|
||||||
|
OrderBy *string `url:"order_by,omitempty" json:"order_by,omitempty"`
|
||||||
|
Owned *bool `url:"owned,omitempty" json:"owned,omitempty"`
|
||||||
|
Search *string `url:"search,omitempty" json:"search,omitempty"`
|
||||||
|
Sort *string `url:"sort,omitempty" json:"sort,omitempty"`
|
||||||
|
Statistics *bool `url:"statistics,omitempty" json:"statistics,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListGroups gets a list of groups (as user: my groups, as admin: all groups).
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/groups.html#list-project-groups
|
||||||
|
func (s *GroupsService) ListGroups(opt *ListGroupsOptions, options ...OptionFunc) ([]*Group, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "groups", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var g []*Group
|
||||||
|
resp, err := s.client.Do(req, &g)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return g, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetGroup gets all details of a group.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/groups.html#details-of-a-group
|
||||||
|
func (s *GroupsService) GetGroup(gid interface{}, options ...OptionFunc) (*Group, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s", url.QueryEscape(group))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
g := new(Group)
|
||||||
|
resp, err := s.client.Do(req, g)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return g, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateGroupOptions represents the available CreateGroup() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/groups.html#new-group
|
||||||
|
type CreateGroupOptions struct {
|
||||||
|
Name *string `url:"name,omitempty" json:"name,omitempty"`
|
||||||
|
Path *string `url:"path,omitempty" json:"path,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
Visibility *VisibilityValue `url:"visibility,omitempty" json:"visibility,omitempty"`
|
||||||
|
LFSEnabled *bool `url:"lfs_enabled,omitempty" json:"lfs_enabled,omitempty"`
|
||||||
|
RequestAccessEnabled *bool `url:"request_access_enabled,omitempty" json:"request_access_enabled,omitempty"`
|
||||||
|
ParentID *int `url:"parent_id,omitempty" json:"parent_id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateGroup creates a new project group. Available only for users who can
|
||||||
|
// create groups.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/groups.html#new-group
|
||||||
|
func (s *GroupsService) CreateGroup(opt *CreateGroupOptions, options ...OptionFunc) (*Group, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("POST", "groups", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
g := new(Group)
|
||||||
|
resp, err := s.client.Do(req, g)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return g, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// TransferGroup transfers a project to the Group namespace. Available only
|
||||||
|
// for admin.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/groups.html#transfer-project-to-group
|
||||||
|
func (s *GroupsService) TransferGroup(gid interface{}, pid interface{}, options ...OptionFunc) (*Group, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
u := fmt.Sprintf("groups/%s/projects/%s", url.QueryEscape(group),
|
||||||
|
url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
g := new(Group)
|
||||||
|
resp, err := s.client.Do(req, g)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return g, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateGroupOptions represents the set of available options to update a Group;
|
||||||
|
// as of today these are exactly the same available when creating a new Group.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/groups.html#update-group
|
||||||
|
type UpdateGroupOptions CreateGroupOptions
|
||||||
|
|
||||||
|
// UpdateGroup updates an existing group; only available to group owners and
|
||||||
|
// administrators.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/groups.html#update-group
|
||||||
|
func (s *GroupsService) UpdateGroup(gid interface{}, opt *UpdateGroupOptions, options ...OptionFunc) (*Group, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s", url.QueryEscape(group))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
g := new(Group)
|
||||||
|
resp, err := s.client.Do(req, g)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return g, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteGroup removes group with all projects inside.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/groups.html#remove-group
|
||||||
|
func (s *GroupsService) DeleteGroup(gid interface{}, options ...OptionFunc) (*Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s", url.QueryEscape(group))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SearchGroup get all groups that match your string in their name or path.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/groups.html#search-for-group
|
||||||
|
func (s *GroupsService) SearchGroup(query string, options ...OptionFunc) ([]*Group, *Response, error) {
|
||||||
|
var q struct {
|
||||||
|
Search string `url:"search,omitempty" json:"search,omitempty"`
|
||||||
|
}
|
||||||
|
q.Search = query
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", "groups", &q, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var g []*Group
|
||||||
|
resp, err := s.client.Do(req, &g)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return g, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListGroupProjectsOptions represents the available ListGroupProjects()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/groups.html#list-a-group-39-s-projects
|
||||||
|
type ListGroupProjectsOptions ListProjectsOptions
|
||||||
|
|
||||||
|
// ListGroupProjects get a list of group projects
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/groups.html#list-a-group-39-s-projects
|
||||||
|
func (s *GroupsService) ListGroupProjects(gid interface{}, opt *ListGroupProjectsOptions, options ...OptionFunc) ([]*Project, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/projects", url.QueryEscape(group))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var p []*Project
|
||||||
|
resp, err := s.client.Do(req, &p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSubgroupsOptions represents the available ListSubgroupsOptions()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/groups.html#list-a-groups-s-subgroups
|
||||||
|
type ListSubgroupsOptions ListGroupsOptions
|
||||||
|
|
||||||
|
// ListSubgroups gets a list of subgroups for a given project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/groups.html#list-a-groups-s-subgroups
|
||||||
|
func (s *GroupsService) ListSubgroups(gid interface{}, opt *ListSubgroupsOptions, options ...OptionFunc) ([]*Group, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/subgroups", url.QueryEscape(group))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var g []*Group
|
||||||
|
resp, err := s.client.Do(req, &g)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return g, resp, err
|
||||||
|
}
|
128
vendor/github.com/xanzy/go-gitlab/issue_links.go
generated
vendored
Normal file
128
vendor/github.com/xanzy/go-gitlab/issue_links.go
generated
vendored
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Arkbriar
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// IssueLinksService handles communication with the issue relations related methods
|
||||||
|
// of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ee/api/issue_links.html
|
||||||
|
type IssueLinksService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// IssueLink represents a two-way relation between two issues.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ee/api/issue_links.html
|
||||||
|
type IssueLink struct {
|
||||||
|
SourceIssue *Issue `json:"source_issue"`
|
||||||
|
TargetIssue *Issue `json:"target_issue"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListIssueRelations gets a list of related issues of a given issue,
|
||||||
|
// sorted by the relationship creation datetime (ascending).
|
||||||
|
//
|
||||||
|
// Issues will be filtered according to the user authorizations.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ee/api/issue_links.html#list-issue-relations
|
||||||
|
func (s *IssueLinksService) ListIssueRelations(pid interface{}, issueIID int, options ...OptionFunc) ([]*Issue, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/issues/%d/links", url.QueryEscape(project), issueIID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var is []*Issue
|
||||||
|
resp, err := s.client.Do(req, &is)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return is, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateIssueLinkOptions represents the available CreateIssueLink() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ee/api/issue_links.html
|
||||||
|
type CreateIssueLinkOptions struct {
|
||||||
|
TargetProjectID *string `json:"target_project_id"`
|
||||||
|
TargetIssueIID *string `json:"target_issue_iid"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateIssueLink creates a two-way relation between two issues.
|
||||||
|
// User must be allowed to update both issues in order to succeed.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ee/api/issue_links.html#create-an-issue-link
|
||||||
|
func (s *IssueLinksService) CreateIssueLink(pid interface{}, issueIID int, opt *CreateIssueLinkOptions, options ...OptionFunc) (*IssueLink, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/issues/%d/links", url.QueryEscape(project), issueIID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
i := new(IssueLink)
|
||||||
|
resp, err := s.client.Do(req, &i)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return i, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteIssueLink deletes an issue link, thus removes the two-way relationship.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ee/api/issue_links.html#delete-an-issue-link
|
||||||
|
func (s *IssueLinksService) DeleteIssueLink(pid interface{}, issueIID, issueLinkID int, options ...OptionFunc) (*IssueLink, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/issues/%d/links/%d",
|
||||||
|
url.QueryEscape(project),
|
||||||
|
issueIID,
|
||||||
|
issueLinkID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
i := new(IssueLink)
|
||||||
|
resp, err := s.client.Do(req, &i)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return i, resp, err
|
||||||
|
}
|
436
vendor/github.com/xanzy/go-gitlab/issues.go
generated
vendored
Normal file
436
vendor/github.com/xanzy/go-gitlab/issues.go
generated
vendored
Normal file
@ -0,0 +1,436 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// IssuesService handles communication with the issue related methods
|
||||||
|
// of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html
|
||||||
|
type IssuesService struct {
|
||||||
|
client *Client
|
||||||
|
timeStats *timeStatsService
|
||||||
|
}
|
||||||
|
|
||||||
|
// Issue represents a GitLab issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html
|
||||||
|
type Issue struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
IID int `json:"iid"`
|
||||||
|
ProjectID int `json:"project_id"`
|
||||||
|
Milestone *Milestone `json:"milestone"`
|
||||||
|
Author struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
State string `json:"state"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
} `json:"author"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
State string `json:"state"`
|
||||||
|
Assignees []struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
State string `json:"state"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
} `json:"assignees"`
|
||||||
|
Assignee struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
State string `json:"state"`
|
||||||
|
AvatarURL string `json:"avatar_url"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
} `json:"assignee"`
|
||||||
|
Upvotes int `json:"upvotes"`
|
||||||
|
Downvotes int `json:"downvotes"`
|
||||||
|
Labels []string `json:"labels"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
UpdatedAt *time.Time `json:"updated_at"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
ClosedAt *time.Time `json:"closed_at"`
|
||||||
|
Subscribed bool `json:"subscribed"`
|
||||||
|
UserNotesCount int `json:"user_notes_count"`
|
||||||
|
DueDate *ISOTime `json:"due_date"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
TimeStats *TimeStats `json:"time_stats"`
|
||||||
|
Confidential bool `json:"confidential"`
|
||||||
|
Weight int `json:"weight"`
|
||||||
|
DiscussionLocked bool `json:"discussion_locked"`
|
||||||
|
Links struct {
|
||||||
|
Self string `json:"self"`
|
||||||
|
Notes string `json:"notes"`
|
||||||
|
AwardEmoji string `json:"award_emoji"`
|
||||||
|
Project string `json:"project"`
|
||||||
|
} `json:"_links"`
|
||||||
|
IssueLinkID int `json:"issue_link_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i Issue) String() string {
|
||||||
|
return Stringify(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Labels is a custom type with specific marshaling characteristics.
|
||||||
|
type Labels []string
|
||||||
|
|
||||||
|
// MarshalJSON implements the json.Marshaler interface.
|
||||||
|
func (l *Labels) MarshalJSON() ([]byte, error) {
|
||||||
|
return json.Marshal(strings.Join(*l, ","))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListIssuesOptions represents the available ListIssues() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html#list-issues
|
||||||
|
type ListIssuesOptions struct {
|
||||||
|
ListOptions
|
||||||
|
State *string `url:"state,omitempty" json:"state,omitempty"`
|
||||||
|
Labels Labels `url:"labels,comma,omitempty" json:"labels,omitempty"`
|
||||||
|
Milestone *string `url:"milestone,omitempty" json:"milestone,omitempty"`
|
||||||
|
Scope *string `url:"scope,omitempty" json:"scope,omitempty"`
|
||||||
|
AuthorID *int `url:"author_id,omitempty" json:"author_id,omitempty"`
|
||||||
|
AssigneeID *int `url:"assignee_id,omitempty" json:"assignee_id,omitempty"`
|
||||||
|
MyReactionEmoji *string `url:"my_reaction_emoji,omitempty" json:"my_reaction_emoji,omitempty"`
|
||||||
|
IIDs []int `url:"iids[],omitempty" json:"iids,omitempty"`
|
||||||
|
OrderBy *string `url:"order_by,omitempty" json:"order_by,omitempty"`
|
||||||
|
Sort *string `url:"sort,omitempty" json:"sort,omitempty"`
|
||||||
|
Search *string `url:"search,omitempty" json:"search,omitempty"`
|
||||||
|
CreatedAfter *time.Time `url:"created_after,omitempty" json:"created_after,omitempty"`
|
||||||
|
CreatedBefore *time.Time `url:"created_before,omitempty" json:"created_before,omitempty"`
|
||||||
|
UpdatedAfter *time.Time `url:"updated_after,omitempty" json:"updated_after,omitempty"`
|
||||||
|
UpdatedBefore *time.Time `url:"updated_before,omitempty" json:"updated_before,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListIssues gets all issues created by authenticated user. This function
|
||||||
|
// takes pagination parameters page and per_page to restrict the list of issues.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html#list-issues
|
||||||
|
func (s *IssuesService) ListIssues(opt *ListIssuesOptions, options ...OptionFunc) ([]*Issue, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "issues", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var i []*Issue
|
||||||
|
resp, err := s.client.Do(req, &i)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return i, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListGroupIssuesOptions represents the available ListGroupIssues() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html#list-group-issues
|
||||||
|
type ListGroupIssuesOptions struct {
|
||||||
|
ListOptions
|
||||||
|
State *string `url:"state,omitempty" json:"state,omitempty"`
|
||||||
|
Labels Labels `url:"labels,comma,omitempty" json:"labels,omitempty"`
|
||||||
|
IIDs []int `url:"iids[],omitempty" json:"iids,omitempty"`
|
||||||
|
Milestone *string `url:"milestone,omitempty" json:"milestone,omitempty"`
|
||||||
|
Scope *string `url:"scope,omitempty" json:"scope,omitempty"`
|
||||||
|
AuthorID *int `url:"author_id,omitempty" json:"author_id,omitempty"`
|
||||||
|
AssigneeID *int `url:"assignee_id,omitempty" json:"assignee_id,omitempty"`
|
||||||
|
MyReactionEmoji *string `url:"my_reaction_emoji,omitempty" json:"my_reaction_emoji,omitempty"`
|
||||||
|
OrderBy *string `url:"order_by,omitempty" json:"order_by,omitempty"`
|
||||||
|
Sort *string `url:"sort,omitempty" json:"sort,omitempty"`
|
||||||
|
Search *string `url:"search,omitempty" json:"search,omitempty"`
|
||||||
|
CreatedAfter *time.Time `url:"created_after,omitempty" json:"created_after,omitempty"`
|
||||||
|
CreatedBefore *time.Time `url:"created_before,omitempty" json:"created_before,omitempty"`
|
||||||
|
UpdatedAfter *time.Time `url:"updated_after,omitempty" json:"updated_after,omitempty"`
|
||||||
|
UpdatedBefore *time.Time `url:"updated_before,omitempty" json:"updated_before,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListGroupIssues gets a list of group issues. This function accepts
|
||||||
|
// pagination parameters page and per_page to return the list of group issues.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html#list-group-issues
|
||||||
|
func (s *IssuesService) ListGroupIssues(pid interface{}, opt *ListGroupIssuesOptions, options ...OptionFunc) ([]*Issue, *Response, error) {
|
||||||
|
group, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/issues", url.QueryEscape(group))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var i []*Issue
|
||||||
|
resp, err := s.client.Do(req, &i)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return i, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProjectIssuesOptions represents the available ListProjectIssues() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html#list-project-issues
|
||||||
|
type ListProjectIssuesOptions struct {
|
||||||
|
ListOptions
|
||||||
|
IIDs []int `url:"iids[],omitempty" json:"iids,omitempty"`
|
||||||
|
State *string `url:"state,omitempty" json:"state,omitempty"`
|
||||||
|
Labels Labels `url:"labels,comma,omitempty" json:"labels,omitempty"`
|
||||||
|
Milestone *string `url:"milestone,omitempty" json:"milestone,omitempty"`
|
||||||
|
Scope *string `url:"scope,omitempty" json:"scope,omitempty"`
|
||||||
|
AuthorID *int `url:"author_id,omitempty" json:"author_id,omitempty"`
|
||||||
|
AssigneeID *int `url:"assignee_id,omitempty" json:"assignee_id,omitempty"`
|
||||||
|
MyReactionEmoji *string `url:"my_reaction_emoji,omitempty" json:"my_reaction_emoji,omitempty"`
|
||||||
|
OrderBy *string `url:"order_by,omitempty" json:"order_by,omitempty"`
|
||||||
|
Sort *string `url:"sort,omitempty" json:"sort,omitempty"`
|
||||||
|
Search *string `url:"search,omitempty" json:"search,omitempty"`
|
||||||
|
CreatedAfter *time.Time `url:"created_after,omitempty" json:"created_after,omitempty"`
|
||||||
|
CreatedBefore *time.Time `url:"created_before,omitempty" json:"created_before,omitempty"`
|
||||||
|
UpdatedAfter *time.Time `url:"updated_after,omitempty" json:"updated_after,omitempty"`
|
||||||
|
UpdatedBefore *time.Time `url:"updated_before,omitempty" json:"updated_before,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProjectIssues gets a list of project issues. This function accepts
|
||||||
|
// pagination parameters page and per_page to return the list of project issues.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html#list-project-issues
|
||||||
|
func (s *IssuesService) ListProjectIssues(pid interface{}, opt *ListProjectIssuesOptions, options ...OptionFunc) ([]*Issue, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/issues", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var i []*Issue
|
||||||
|
resp, err := s.client.Do(req, &i)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return i, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIssue gets a single project issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html#single-issues
|
||||||
|
func (s *IssuesService) GetIssue(pid interface{}, issue int, options ...OptionFunc) (*Issue, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/issues/%d", url.QueryEscape(project), issue)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
i := new(Issue)
|
||||||
|
resp, err := s.client.Do(req, i)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return i, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateIssueOptions represents the available CreateIssue() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html#new-issues
|
||||||
|
type CreateIssueOptions struct {
|
||||||
|
Title *string `url:"title,omitempty" json:"title,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
Confidential *bool `url:"confidential,omitempty" json:"confidential,omitempty"`
|
||||||
|
AssigneeIDs []int `url:"assignee_ids,omitempty" json:"assignee_ids,omitempty"`
|
||||||
|
MilestoneID *int `url:"milestone_id,omitempty" json:"milestone_id,omitempty"`
|
||||||
|
Labels Labels `url:"labels,comma,omitempty" json:"labels,omitempty"`
|
||||||
|
CreatedAt *time.Time `url:"created_at,omitempty" json:"created_at,omitempty"`
|
||||||
|
DueDate *ISOTime `url:"due_date,omitempty" json:"due_date,omitempty"`
|
||||||
|
MergeRequestToResolveDiscussionsOf *int `url:"merge_request_to_resolve_discussions_of,omitempty" json:"merge_request_to_resolve_discussions_of,omitempty"`
|
||||||
|
DiscussionToResolve *string `url:"discussion_to_resolve,omitempty" json:"discussion_to_resolve,omitempty"`
|
||||||
|
Weight *int `url:"weight,omitempty" json:"weight,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateIssue creates a new project issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html#new-issues
|
||||||
|
func (s *IssuesService) CreateIssue(pid interface{}, opt *CreateIssueOptions, options ...OptionFunc) (*Issue, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/issues", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
i := new(Issue)
|
||||||
|
resp, err := s.client.Do(req, i)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return i, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateIssueOptions represents the available UpdateIssue() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html#edit-issues
|
||||||
|
type UpdateIssueOptions struct {
|
||||||
|
Title *string `url:"title,omitempty" json:"title,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
Confidential *bool `url:"confidential,omitempty" json:"confidential,omitempty"`
|
||||||
|
AssigneeIDs []int `url:"assignee_ids,omitempty" json:"assignee_ids,omitempty"`
|
||||||
|
MilestoneID *int `url:"milestone_id,omitempty" json:"milestone_id,omitempty"`
|
||||||
|
Labels Labels `url:"labels,comma,omitempty" json:"labels,omitempty"`
|
||||||
|
StateEvent *string `url:"state_event,omitempty" json:"state_event,omitempty"`
|
||||||
|
UpdatedAt *time.Time `url:"updated_at,omitempty" json:"updated_at,omitempty"`
|
||||||
|
DueDate *ISOTime `url:"due_date,omitempty" json:"due_date,omitempty"`
|
||||||
|
DiscussionLocked *bool `url:"discussion_locked,omitempty" json:"discussion_locked,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateIssue updates an existing project issue. This function is also used
|
||||||
|
// to mark an issue as closed.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html#edit-issues
|
||||||
|
func (s *IssuesService) UpdateIssue(pid interface{}, issue int, opt *UpdateIssueOptions, options ...OptionFunc) (*Issue, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/issues/%d", url.QueryEscape(project), issue)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
i := new(Issue)
|
||||||
|
resp, err := s.client.Do(req, i)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return i, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteIssue deletes a single project issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/issues.html#delete-an-issue
|
||||||
|
func (s *IssuesService) DeleteIssue(pid interface{}, issue int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/issues/%d", url.QueryEscape(project), issue)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListMergeRequestsClosingIssueOptions represents the available
|
||||||
|
// ListMergeRequestsClosingIssue() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/issues.html#list-merge-requests-that-will-close-issue-on-merge
|
||||||
|
type ListMergeRequestsClosingIssueOptions ListOptions
|
||||||
|
|
||||||
|
// ListMergeRequestsClosingIssue gets all the merge requests that will close
|
||||||
|
// issue when merged.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/issues.html#list-merge-requests-that-will-close-issue-on-merge
|
||||||
|
func (s *IssuesService) ListMergeRequestsClosingIssue(pid interface{}, issue int, opt *ListMergeRequestsClosingIssueOptions, options ...OptionFunc) ([]*MergeRequest, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("/projects/%s/issues/%d/closed_by", url.QueryEscape(project), issue)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var m []*MergeRequest
|
||||||
|
resp, err := s.client.Do(req, &m)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return m, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTimeEstimate sets the time estimate for a single project issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/issues.html#set-a-time-estimate-for-an-issue
|
||||||
|
func (s *IssuesService) SetTimeEstimate(pid interface{}, issue int, opt *SetTimeEstimateOptions, options ...OptionFunc) (*TimeStats, *Response, error) {
|
||||||
|
return s.timeStats.setTimeEstimate(pid, "issues", issue, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResetTimeEstimate resets the time estimate for a single project issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/issues.html#reset-the-time-estimate-for-an-issue
|
||||||
|
func (s *IssuesService) ResetTimeEstimate(pid interface{}, issue int, options ...OptionFunc) (*TimeStats, *Response, error) {
|
||||||
|
return s.timeStats.resetTimeEstimate(pid, "issues", issue, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddSpentTime adds spent time for a single project issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/issues.html#add-spent-time-for-an-issue
|
||||||
|
func (s *IssuesService) AddSpentTime(pid interface{}, issue int, opt *AddSpentTimeOptions, options ...OptionFunc) (*TimeStats, *Response, error) {
|
||||||
|
return s.timeStats.addSpentTime(pid, "issues", issue, opt, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResetSpentTime resets the spent time for a single project issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/issues.html#reset-spent-time-for-an-issue
|
||||||
|
func (s *IssuesService) ResetSpentTime(pid interface{}, issue int, options ...OptionFunc) (*TimeStats, *Response, error) {
|
||||||
|
return s.timeStats.resetSpentTime(pid, "issues", issue, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTimeSpent gets the spent time for a single project issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/issues.html#get-time-tracking-stats
|
||||||
|
func (s *IssuesService) GetTimeSpent(pid interface{}, issue int, options ...OptionFunc) (*TimeStats, *Response, error) {
|
||||||
|
return s.timeStats.getTimeSpent(pid, "issues", issue, options...)
|
||||||
|
}
|
350
vendor/github.com/xanzy/go-gitlab/jobs.go
generated
vendored
Normal file
350
vendor/github.com/xanzy/go-gitlab/jobs.go
generated
vendored
Normal file
@ -0,0 +1,350 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Arkbriar
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// JobsService handles communication with the ci builds related methods
|
||||||
|
// of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/jobs.html
|
||||||
|
type JobsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Job represents a ci build.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/jobs.html
|
||||||
|
type Job struct {
|
||||||
|
Commit *Commit `json:"commit"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
Coverage float64 `json:"coverage"`
|
||||||
|
ArtifactsFile struct {
|
||||||
|
Filename string `json:"filename"`
|
||||||
|
Size int `json:"size"`
|
||||||
|
} `json:"artifacts_file"`
|
||||||
|
FinishedAt *time.Time `json:"finished_at"`
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Ref string `json:"ref"`
|
||||||
|
Runner struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Active bool `json:"active"`
|
||||||
|
IsShared bool `json:"is_shared"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
} `json:"runner"`
|
||||||
|
Stage string `json:"stage"`
|
||||||
|
StartedAt *time.Time `json:"started_at"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Tag bool `json:"tag"`
|
||||||
|
User *User `json:"user"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListJobsOptions are options for two list apis
|
||||||
|
type ListJobsOptions struct {
|
||||||
|
ListOptions
|
||||||
|
Scope []BuildStateValue `url:"scope,omitempty" json:"scope,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProjectJobs gets a list of jobs in a project.
|
||||||
|
//
|
||||||
|
// The scope of jobs to show, one or array of: created, pending, running,
|
||||||
|
// failed, success, canceled, skipped; showing all jobs if none provided
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/jobs.html#list-project-jobs
|
||||||
|
func (s *JobsService) ListProjectJobs(pid interface{}, opts *ListJobsOptions, options ...OptionFunc) ([]Job, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/jobs", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opts, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var jobs []Job
|
||||||
|
resp, err := s.client.Do(req, &jobs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return jobs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPipelineJobs gets a list of jobs for specific pipeline in a
|
||||||
|
// project. If the pipeline ID is not found, it will respond with 404.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/jobs.html#list-pipeline-jobs
|
||||||
|
func (s *JobsService) ListPipelineJobs(pid interface{}, pipelineID int, opts *ListJobsOptions, options ...OptionFunc) ([]*Job, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipelines/%d/jobs", url.QueryEscape(project), pipelineID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opts, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var jobs []*Job
|
||||||
|
resp, err := s.client.Do(req, &jobs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return jobs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetJob gets a single job of a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/jobs.html#get-a-single-job
|
||||||
|
func (s *JobsService) GetJob(pid interface{}, jobID int, options ...OptionFunc) (*Job, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/jobs/%d", url.QueryEscape(project), jobID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
job := new(Job)
|
||||||
|
resp, err := s.client.Do(req, job)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return job, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetJobArtifacts get jobs artifacts of a project
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/jobs.html#get-job-artifacts
|
||||||
|
func (s *JobsService) GetJobArtifacts(pid interface{}, jobID int, options ...OptionFunc) (io.Reader, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/jobs/%d/artifacts", url.QueryEscape(project), jobID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
artifactsBuf := new(bytes.Buffer)
|
||||||
|
resp, err := s.client.Do(req, artifactsBuf)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return artifactsBuf, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DownloadArtifactsFile download the artifacts file from the given
|
||||||
|
// reference name and job provided the job finished successfully.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/jobs.html#download-the-artifacts-file
|
||||||
|
func (s *JobsService) DownloadArtifactsFile(pid interface{}, refName string, job string, options ...OptionFunc) (io.Reader, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/jobs/artifacts/%s/download?job=%s", url.QueryEscape(project), refName, job)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
artifactsBuf := new(bytes.Buffer)
|
||||||
|
resp, err := s.client.Do(req, artifactsBuf)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return artifactsBuf, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTraceFile gets a trace of a specific job of a project
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/jobs.html#get-a-trace-file
|
||||||
|
func (s *JobsService) GetTraceFile(pid interface{}, jobID int, options ...OptionFunc) (io.Reader, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/jobs/%d/trace", url.QueryEscape(project), jobID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
traceBuf := new(bytes.Buffer)
|
||||||
|
resp, err := s.client.Do(req, traceBuf)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return traceBuf, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CancelJob cancels a single job of a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/jobs.html#cancel-a-job
|
||||||
|
func (s *JobsService) CancelJob(pid interface{}, jobID int, options ...OptionFunc) (*Job, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/jobs/%d/cancel", url.QueryEscape(project), jobID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
job := new(Job)
|
||||||
|
resp, err := s.client.Do(req, job)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return job, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// RetryJob retries a single job of a project
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/jobs.html#retry-a-job
|
||||||
|
func (s *JobsService) RetryJob(pid interface{}, jobID int, options ...OptionFunc) (*Job, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/jobs/%d/retry", url.QueryEscape(project), jobID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
job := new(Job)
|
||||||
|
resp, err := s.client.Do(req, job)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return job, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// EraseJob erases a single job of a project, removes a job
|
||||||
|
// artifacts and a job trace.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/jobs.html#erase-a-job
|
||||||
|
func (s *JobsService) EraseJob(pid interface{}, jobID int, options ...OptionFunc) (*Job, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/jobs/%d/erase", url.QueryEscape(project), jobID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
job := new(Job)
|
||||||
|
resp, err := s.client.Do(req, job)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return job, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// KeepArtifacts prevents artifacts from being deleted when
|
||||||
|
// expiration is set.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/jobs.html#keep-artifacts
|
||||||
|
func (s *JobsService) KeepArtifacts(pid interface{}, jobID int, options ...OptionFunc) (*Job, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/jobs/%d/artifacts/keep", url.QueryEscape(project), jobID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
job := new(Job)
|
||||||
|
resp, err := s.client.Do(req, job)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return job, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// PlayJob triggers a manual action to start a job.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/jobs.html#play-a-job
|
||||||
|
func (s *JobsService) PlayJob(pid interface{}, jobID int, options ...OptionFunc) (*Job, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/jobs/%d/play", url.QueryEscape(project), jobID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
job := new(Job)
|
||||||
|
resp, err := s.client.Do(req, job)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return job, resp, err
|
||||||
|
}
|
228
vendor/github.com/xanzy/go-gitlab/labels.go
generated
vendored
Normal file
228
vendor/github.com/xanzy/go-gitlab/labels.go
generated
vendored
Normal file
@ -0,0 +1,228 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// LabelsService handles communication with the label related methods of the
|
||||||
|
// GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/labels.html
|
||||||
|
type LabelsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Label represents a GitLab label.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/labels.html
|
||||||
|
type Label struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Color string `json:"color"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
OpenIssuesCount int `json:"open_issues_count"`
|
||||||
|
ClosedIssuesCount int `json:"closed_issues_count"`
|
||||||
|
OpenMergeRequestsCount int `json:"open_merge_requests_count"`
|
||||||
|
Subscribed bool `json:"subscribed"`
|
||||||
|
Priority int `json:"priority"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l Label) String() string {
|
||||||
|
return Stringify(l)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListLabelsOptions represents the available ListLabels() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/labels.html#list-labels
|
||||||
|
type ListLabelsOptions ListOptions
|
||||||
|
|
||||||
|
// ListLabels gets all labels for given project.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/labels.html#list-labels
|
||||||
|
func (s *LabelsService) ListLabels(pid interface{}, opt *ListLabelsOptions, options ...OptionFunc) ([]*Label, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/labels", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var l []*Label
|
||||||
|
resp, err := s.client.Do(req, &l)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return l, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateLabelOptions represents the available CreateLabel() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/labels.html#create-a-new-label
|
||||||
|
type CreateLabelOptions struct {
|
||||||
|
Name *string `url:"name,omitempty" json:"name,omitempty"`
|
||||||
|
Color *string `url:"color,omitempty" json:"color,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateLabel creates a new label for given repository with given name and
|
||||||
|
// color.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/labels.html#create-a-new-label
|
||||||
|
func (s *LabelsService) CreateLabel(pid interface{}, opt *CreateLabelOptions, options ...OptionFunc) (*Label, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/labels", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
l := new(Label)
|
||||||
|
resp, err := s.client.Do(req, l)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return l, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteLabelOptions represents the available DeleteLabel() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/labels.html#delete-a-label
|
||||||
|
type DeleteLabelOptions struct {
|
||||||
|
Name *string `url:"name,omitempty" json:"name,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteLabel deletes a label given by its name.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/labels.html#delete-a-label
|
||||||
|
func (s *LabelsService) DeleteLabel(pid interface{}, opt *DeleteLabelOptions, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/labels", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateLabelOptions represents the available UpdateLabel() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/labels.html#delete-a-label
|
||||||
|
type UpdateLabelOptions struct {
|
||||||
|
Name *string `url:"name,omitempty" json:"name,omitempty"`
|
||||||
|
NewName *string `url:"new_name,omitempty" json:"new_name,omitempty"`
|
||||||
|
Color *string `url:"color,omitempty" json:"color,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateLabel updates an existing label with new name or now color. At least
|
||||||
|
// one parameter is required, to update the label.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/labels.html#edit-an-existing-label
|
||||||
|
func (s *LabelsService) UpdateLabel(pid interface{}, opt *UpdateLabelOptions, options ...OptionFunc) (*Label, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/labels", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
l := new(Label)
|
||||||
|
resp, err := s.client.Do(req, l)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return l, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// SubscribeToLabel subscribes the authenticated user to a label to receive
|
||||||
|
// notifications. If the user is already subscribed to the label, the status
|
||||||
|
// code 304 is returned.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/labels.html#subscribe-to-a-label
|
||||||
|
func (s *LabelsService) SubscribeToLabel(pid interface{}, labelID interface{}, options ...OptionFunc) (*Label, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
label, err := parseID(labelID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/labels/%s/subscribe", url.QueryEscape(project), label)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
l := new(Label)
|
||||||
|
resp, err := s.client.Do(req, l)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return l, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnsubscribeFromLabel unsubscribes the authenticated user from a label to not
|
||||||
|
// receive notifications from it. If the user is not subscribed to the label, the
|
||||||
|
// status code 304 is returned.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/labels.html#unsubscribe-from-a-label
|
||||||
|
func (s *LabelsService) UnsubscribeFromLabel(pid interface{}, labelID interface{}, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
label, err := parseID(labelID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/labels/%s/unsubscribe", url.QueryEscape(project), label)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
125
vendor/github.com/xanzy/go-gitlab/merge_request_approvals.go
generated
vendored
Normal file
125
vendor/github.com/xanzy/go-gitlab/merge_request_approvals.go
generated
vendored
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// MergeRequestApprovalsService handles communication with the merge request
|
||||||
|
// approvals related methods of the GitLab API. This includes reading/updating
|
||||||
|
// approval settings and approve/unapproving merge requests
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ee/api/merge_request_approvals.html
|
||||||
|
type MergeRequestApprovalsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// MergeRequestApprovals represents GitLab merge request approvals.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ee/api/merge_request_approvals.html#merge-request-level-mr-approvals
|
||||||
|
type MergeRequestApprovals struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
ProjectID int `json:"project_id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
State string `json:"state"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
UpdatedAt *time.Time `json:"updated_at"`
|
||||||
|
MergeStatus string `json:"merge_status"`
|
||||||
|
ApprovalsRequired int `json:"approvals_required"`
|
||||||
|
ApprovalsLeft int `json:"approvals_left"`
|
||||||
|
ApprovedBy []struct {
|
||||||
|
User struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
State string `json:"state"`
|
||||||
|
AvatarURL string `json:"avatar_url"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
} `json:"user"`
|
||||||
|
} `json:"approved_by"`
|
||||||
|
Approvers []struct {
|
||||||
|
User struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
State string `json:"state"`
|
||||||
|
AvatarURL string `json:"avatar_url"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
} `json:"user"`
|
||||||
|
} `json:"approvers"`
|
||||||
|
ApproverGroups []struct {
|
||||||
|
Group struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Visibility string `json:"visibility"`
|
||||||
|
AvatarURL string `json:"avatar_url"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
FullName string `json:"full_name"`
|
||||||
|
FullPath string `json:"full_path"`
|
||||||
|
LFSEnabled bool `json:"lfs_enabled"`
|
||||||
|
RequestAccessEnabled bool `json:"request_access_enabled"`
|
||||||
|
} `json:"group"`
|
||||||
|
} `json:"approver_group"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m MergeRequestApprovals) String() string {
|
||||||
|
return Stringify(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ApproveMergeRequestOptions represents the available ApproveMergeRequest() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ee/api/merge_request_approvals.html#approve-merge-request
|
||||||
|
type ApproveMergeRequestOptions struct {
|
||||||
|
Sha *string `url:"sha,omitempty" json:"sha,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ApproveMergeRequest approves a merge request on GitLab. If a non-empty sha
|
||||||
|
// is provided then it must match the sha at the HEAD of the MR.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ee/api/merge_request_approvals.html#approve-merge-request
|
||||||
|
func (s *MergeRequestApprovalsService) ApproveMergeRequest(pid interface{}, mr int, opt *ApproveMergeRequestOptions, options ...OptionFunc) (*MergeRequestApprovals, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/merge_requests/%d/approve", url.QueryEscape(project), mr)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
m := new(MergeRequestApprovals)
|
||||||
|
resp, err := s.client.Do(req, m)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return m, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnapproveMergeRequest unapproves a previously approved merge request on GitLab.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ee/api/merge_request_approvals.html#unapprove-merge-request
|
||||||
|
func (s *MergeRequestApprovalsService) UnapproveMergeRequest(pid interface{}, mr int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/merge_requests/%d/unapprove", url.QueryEscape(project), mr)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
743
vendor/github.com/xanzy/go-gitlab/merge_requests.go
generated
vendored
Normal file
743
vendor/github.com/xanzy/go-gitlab/merge_requests.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
267
vendor/github.com/xanzy/go-gitlab/milestones.go
generated
vendored
Normal file
267
vendor/github.com/xanzy/go-gitlab/milestones.go
generated
vendored
Normal file
@ -0,0 +1,267 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// MilestonesService handles communication with the milestone related methods
|
||||||
|
// of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/milestones.html
|
||||||
|
type MilestonesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Milestone represents a GitLab milestone.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/milestones.html
|
||||||
|
type Milestone struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
IID int `json:"iid"`
|
||||||
|
ProjectID int `json:"project_id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
StartDate *ISOTime `json:"start_date"`
|
||||||
|
DueDate *ISOTime `json:"due_date"`
|
||||||
|
State string `json:"state"`
|
||||||
|
UpdatedAt *time.Time `json:"updated_at"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m Milestone) String() string {
|
||||||
|
return Stringify(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListMilestonesOptions represents the available ListMilestones() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/milestones.html#list-project-milestones
|
||||||
|
type ListMilestonesOptions struct {
|
||||||
|
ListOptions
|
||||||
|
IIDs []int `url:"iids,omitempty" json:"iids,omitempty"`
|
||||||
|
State string `url:"state,omitempty" json:"state,omitempty"`
|
||||||
|
Search string `url:"search,omitempty" json:"search,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListMilestones returns a list of project milestones.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/milestones.html#list-project-milestones
|
||||||
|
func (s *MilestonesService) ListMilestones(pid interface{}, opt *ListMilestonesOptions, options ...OptionFunc) ([]*Milestone, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/milestones", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var m []*Milestone
|
||||||
|
resp, err := s.client.Do(req, &m)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return m, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMilestone gets a single project milestone.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/milestones.html#get-single-milestone
|
||||||
|
func (s *MilestonesService) GetMilestone(pid interface{}, milestone int, options ...OptionFunc) (*Milestone, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/milestones/%d", url.QueryEscape(project), milestone)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
m := new(Milestone)
|
||||||
|
resp, err := s.client.Do(req, m)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return m, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateMilestoneOptions represents the available CreateMilestone() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/milestones.html#create-new-milestone
|
||||||
|
type CreateMilestoneOptions struct {
|
||||||
|
Title *string `url:"title,omitempty" json:"title,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
StartDate *ISOTime `url:"start_date,omitempty" json:"start_date,omitempty"`
|
||||||
|
DueDate *ISOTime `url:"due_date,omitempty" json:"due_date,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateMilestone creates a new project milestone.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/milestones.html#create-new-milestone
|
||||||
|
func (s *MilestonesService) CreateMilestone(pid interface{}, opt *CreateMilestoneOptions, options ...OptionFunc) (*Milestone, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/milestones", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
m := new(Milestone)
|
||||||
|
resp, err := s.client.Do(req, m)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return m, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateMilestoneOptions represents the available UpdateMilestone() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/milestones.html#edit-milestone
|
||||||
|
type UpdateMilestoneOptions struct {
|
||||||
|
Title *string `url:"title,omitempty" json:"title,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
StartDate *ISOTime `url:"start_date,omitempty" json:"start_date,omitempty"`
|
||||||
|
DueDate *ISOTime `url:"due_date,omitempty" json:"due_date,omitempty"`
|
||||||
|
StateEvent *string `url:"state_event,omitempty" json:"state_event,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateMilestone updates an existing project milestone.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/milestones.html#edit-milestone
|
||||||
|
func (s *MilestonesService) UpdateMilestone(pid interface{}, milestone int, opt *UpdateMilestoneOptions, options ...OptionFunc) (*Milestone, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/milestones/%d", url.QueryEscape(project), milestone)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
m := new(Milestone)
|
||||||
|
resp, err := s.client.Do(req, m)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return m, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteMilestone deletes a specified project milestone.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/milestones.html#delete-project-milestone
|
||||||
|
func (s *MilestonesService) DeleteMilestone(pid interface{}, milestone int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/milestones/%d", url.QueryEscape(project), milestone)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMilestoneIssuesOptions represents the available GetMilestoneIssues() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/milestones.html#get-all-issues-assigned-to-a-single-milestone
|
||||||
|
type GetMilestoneIssuesOptions ListOptions
|
||||||
|
|
||||||
|
// GetMilestoneIssues gets all issues assigned to a single project milestone.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/milestones.html#get-all-issues-assigned-to-a-single-milestone
|
||||||
|
func (s *MilestonesService) GetMilestoneIssues(pid interface{}, milestone int, opt *GetMilestoneIssuesOptions, options ...OptionFunc) ([]*Issue, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/milestones/%d/issues", url.QueryEscape(project), milestone)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var i []*Issue
|
||||||
|
resp, err := s.client.Do(req, &i)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return i, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMilestoneMergeRequestsOptions represents the available
|
||||||
|
// GetMilestoneMergeRequests() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/milestones.html#get-all-merge-requests-assigned-to-a-single-milestone
|
||||||
|
type GetMilestoneMergeRequestsOptions ListOptions
|
||||||
|
|
||||||
|
// GetMilestoneMergeRequests gets all merge requests assigned to a single
|
||||||
|
// project milestone.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/milestones.html#get-all-merge-requests-assigned-to-a-single-milestone
|
||||||
|
func (s *MilestonesService) GetMilestoneMergeRequests(pid interface{}, milestone int, opt *GetMilestoneMergeRequestsOptions, options ...OptionFunc) ([]*MergeRequest, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/milestones/%d/merge_requests", url.QueryEscape(project), milestone)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var mr []*MergeRequest
|
||||||
|
resp, err := s.client.Do(req, &mr)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return mr, resp, err
|
||||||
|
}
|
122
vendor/github.com/xanzy/go-gitlab/namespaces.go
generated
vendored
Normal file
122
vendor/github.com/xanzy/go-gitlab/namespaces.go
generated
vendored
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NamespacesService handles communication with the namespace related methods
|
||||||
|
// of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/namespaces.html
|
||||||
|
type NamespacesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Namespace represents a GitLab namespace.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/namespaces.html
|
||||||
|
type Namespace struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
Kind string `json:"kind"`
|
||||||
|
FullPath string `json:"full_path"`
|
||||||
|
ParentID int `json:"parent_id"`
|
||||||
|
MembersCountWithDescendants int `json:"members_count_with_descendants"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n Namespace) String() string {
|
||||||
|
return Stringify(n)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListNamespacesOptions represents the available ListNamespaces() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/namespaces.html#list-namespaces
|
||||||
|
type ListNamespacesOptions struct {
|
||||||
|
ListOptions
|
||||||
|
Search *string `url:"search,omitempty" json:"search,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListNamespaces gets a list of projects accessible by the authenticated user.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/namespaces.html#list-namespaces
|
||||||
|
func (s *NamespacesService) ListNamespaces(opt *ListNamespacesOptions, options ...OptionFunc) ([]*Namespace, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "namespaces", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var n []*Namespace
|
||||||
|
resp, err := s.client.Do(req, &n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// SearchNamespace gets all namespaces that match your string in their name
|
||||||
|
// or path.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/namespaces.html#search-for-namespace
|
||||||
|
func (s *NamespacesService) SearchNamespace(query string, options ...OptionFunc) ([]*Namespace, *Response, error) {
|
||||||
|
var q struct {
|
||||||
|
Search string `url:"search,omitempty" json:"search,omitempty"`
|
||||||
|
}
|
||||||
|
q.Search = query
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", "namespaces", &q, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var n []*Namespace
|
||||||
|
resp, err := s.client.Do(req, &n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetNamespace gets a namespace by id.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/namespaces.html#get-namespace-by-id
|
||||||
|
func (s *NamespacesService) GetNamespace(id interface{}, options ...OptionFunc) (*Namespace, *Response, error) {
|
||||||
|
namespace, err := parseID(id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("namespaces/%s", namespace)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n := new(Namespace)
|
||||||
|
resp, err := s.client.Do(req, n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
490
vendor/github.com/xanzy/go-gitlab/notes.go
generated
vendored
Normal file
490
vendor/github.com/xanzy/go-gitlab/notes.go
generated
vendored
Normal file
@ -0,0 +1,490 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NotesService handles communication with the notes related methods
|
||||||
|
// of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/notes.html
|
||||||
|
type NotesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Note represents a GitLab note.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/notes.html
|
||||||
|
type Note struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Body string `json:"body"`
|
||||||
|
Attachment string `json:"attachment"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
FileName string `json:"file_name"`
|
||||||
|
Author struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
State string `json:"state"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
AvatarURL string `json:"avatar_url"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
} `json:"author"`
|
||||||
|
System bool `json:"system"`
|
||||||
|
ExpiresAt *time.Time `json:"expires_at"`
|
||||||
|
UpdatedAt *time.Time `json:"updated_at"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
NoteableID int `json:"noteable_id"`
|
||||||
|
NoteableType string `json:"noteable_type"`
|
||||||
|
NoteableIID int `json:"noteable_iid"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n Note) String() string {
|
||||||
|
return Stringify(n)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListIssueNotesOptions represents the available ListIssueNotes() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#list-project-issue-notes
|
||||||
|
type ListIssueNotesOptions ListOptions
|
||||||
|
|
||||||
|
// ListIssueNotes gets a list of all notes for a single issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#list-project-issue-notes
|
||||||
|
func (s *NotesService) ListIssueNotes(pid interface{}, issue int, opt *ListIssueNotesOptions, options ...OptionFunc) ([]*Note, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/issues/%d/notes", url.QueryEscape(project), issue)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var n []*Note
|
||||||
|
resp, err := s.client.Do(req, &n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetIssueNote returns a single note for a specific project issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#get-single-issue-note
|
||||||
|
func (s *NotesService) GetIssueNote(pid interface{}, issue, note int, options ...OptionFunc) (*Note, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/issues/%d/notes/%d", url.QueryEscape(project), issue, note)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n := new(Note)
|
||||||
|
resp, err := s.client.Do(req, n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateIssueNoteOptions represents the available CreateIssueNote()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#create-new-issue-note
|
||||||
|
type CreateIssueNoteOptions struct {
|
||||||
|
Body *string `url:"body,omitempty" json:"body,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateIssueNote creates a new note to a single project issue.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#create-new-issue-note
|
||||||
|
func (s *NotesService) CreateIssueNote(pid interface{}, issue int, opt *CreateIssueNoteOptions, options ...OptionFunc) (*Note, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/issues/%d/notes", url.QueryEscape(project), issue)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n := new(Note)
|
||||||
|
resp, err := s.client.Do(req, n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateIssueNoteOptions represents the available UpdateIssueNote()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#modify-existing-issue-note
|
||||||
|
type UpdateIssueNoteOptions struct {
|
||||||
|
Body *string `url:"body,omitempty" json:"body,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateIssueNote modifies existing note of an issue.
|
||||||
|
//
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#modify-existing-issue-note
|
||||||
|
func (s *NotesService) UpdateIssueNote(pid interface{}, issue, note int, opt *UpdateIssueNoteOptions, options ...OptionFunc) (*Note, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/issues/%d/notes/%d", url.QueryEscape(project), issue, note)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n := new(Note)
|
||||||
|
resp, err := s.client.Do(req, n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteIssueNote deletes an existing note of an issue.
|
||||||
|
//
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#delete-an-issue-note
|
||||||
|
func (s *NotesService) DeleteIssueNote(pid interface{}, issue, note int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/issues/%d/notes/%d", url.QueryEscape(project), issue, note)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSnippetNotesOptions represents the available ListSnippetNotes() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#list-all-snippet-notes
|
||||||
|
type ListSnippetNotesOptions ListOptions
|
||||||
|
|
||||||
|
// ListSnippetNotes gets a list of all notes for a single snippet. Snippet
|
||||||
|
// notes are comments users can post to a snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#list-all-snippet-notes
|
||||||
|
func (s *NotesService) ListSnippetNotes(pid interface{}, snippet int, opt *ListSnippetNotesOptions, options ...OptionFunc) ([]*Note, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/snippets/%d/notes", url.QueryEscape(project), snippet)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var n []*Note
|
||||||
|
resp, err := s.client.Do(req, &n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSnippetNote returns a single note for a given snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#get-single-snippet-note
|
||||||
|
func (s *NotesService) GetSnippetNote(pid interface{}, snippet, note int, options ...OptionFunc) (*Note, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/snippets/%d/notes/%d", url.QueryEscape(project), snippet, note)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n := new(Note)
|
||||||
|
resp, err := s.client.Do(req, n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateSnippetNoteOptions represents the available CreateSnippetNote()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#create-new-snippet-note
|
||||||
|
type CreateSnippetNoteOptions struct {
|
||||||
|
Body *string `url:"body,omitempty" json:"body,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateSnippetNote creates a new note for a single snippet. Snippet notes are
|
||||||
|
// comments users can post to a snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#create-new-snippet-note
|
||||||
|
func (s *NotesService) CreateSnippetNote(pid interface{}, snippet int, opt *CreateSnippetNoteOptions, options ...OptionFunc) (*Note, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/snippets/%d/notes", url.QueryEscape(project), snippet)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n := new(Note)
|
||||||
|
resp, err := s.client.Do(req, n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateSnippetNoteOptions represents the available UpdateSnippetNote()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#modify-existing-snippet-note
|
||||||
|
type UpdateSnippetNoteOptions struct {
|
||||||
|
Body *string `url:"body,omitempty" json:"body,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateSnippetNote modifies existing note of a snippet.
|
||||||
|
//
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#modify-existing-snippet-note
|
||||||
|
func (s *NotesService) UpdateSnippetNote(pid interface{}, snippet, note int, opt *UpdateSnippetNoteOptions, options ...OptionFunc) (*Note, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/snippets/%d/notes/%d", url.QueryEscape(project), snippet, note)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n := new(Note)
|
||||||
|
resp, err := s.client.Do(req, n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteSnippetNote deletes an existing note of a snippet.
|
||||||
|
//
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#delete-a-snippet-note
|
||||||
|
func (s *NotesService) DeleteSnippetNote(pid interface{}, snippet, note int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/snippets/%d/notes/%d", url.QueryEscape(project), snippet, note)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListMergeRequestNotesOptions represents the available ListMergeRequestNotes()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#list-all-merge-request-notes
|
||||||
|
type ListMergeRequestNotesOptions ListOptions
|
||||||
|
|
||||||
|
// ListMergeRequestNotes gets a list of all notes for a single merge request.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#list-all-merge-request-notes
|
||||||
|
func (s *NotesService) ListMergeRequestNotes(pid interface{}, mergeRequest int, opt *ListMergeRequestNotesOptions, options ...OptionFunc) ([]*Note, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/merge_requests/%d/notes", url.QueryEscape(project), mergeRequest)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var n []*Note
|
||||||
|
resp, err := s.client.Do(req, &n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMergeRequestNote returns a single note for a given merge request.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#get-single-merge-request-note
|
||||||
|
func (s *NotesService) GetMergeRequestNote(pid interface{}, mergeRequest, note int, options ...OptionFunc) (*Note, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/merge_requests/%d/notes/%d", url.QueryEscape(project), mergeRequest, note)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n := new(Note)
|
||||||
|
resp, err := s.client.Do(req, n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateMergeRequestNoteOptions represents the available
|
||||||
|
// CreateMergeRequestNote() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#create-new-merge-request-note
|
||||||
|
type CreateMergeRequestNoteOptions struct {
|
||||||
|
Body *string `url:"body,omitempty" json:"body,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateMergeRequestNote creates a new note for a single merge request.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#create-new-merge-request-note
|
||||||
|
func (s *NotesService) CreateMergeRequestNote(pid interface{}, mergeRequest int, opt *CreateMergeRequestNoteOptions, options ...OptionFunc) (*Note, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/merge_requests/%d/notes", url.QueryEscape(project), mergeRequest)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n := new(Note)
|
||||||
|
resp, err := s.client.Do(req, n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateMergeRequestNoteOptions represents the available
|
||||||
|
// UpdateMergeRequestNote() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#modify-existing-merge-request-note
|
||||||
|
type UpdateMergeRequestNoteOptions struct {
|
||||||
|
Body *string `url:"body,omitempty" json:"body,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateMergeRequestNote modifies existing note of a merge request.
|
||||||
|
//
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#modify-existing-merge-request-note
|
||||||
|
func (s *NotesService) UpdateMergeRequestNote(pid interface{}, mergeRequest, note int, opt *UpdateMergeRequestNoteOptions, options ...OptionFunc) (*Note, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf(
|
||||||
|
"projects/%s/merge_requests/%d/notes/%d", url.QueryEscape(project), mergeRequest, note)
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n := new(Note)
|
||||||
|
resp, err := s.client.Do(req, n)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return n, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteMergeRequestNote deletes an existing note of a merge request.
|
||||||
|
//
|
||||||
|
// https://docs.gitlab.com/ce/api/notes.html#delete-a-merge-request-note
|
||||||
|
func (s *NotesService) DeleteMergeRequestNote(pid interface{}, mergeRequest, note int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf(
|
||||||
|
"projects/%s/merge_requests/%d/notes/%d", url.QueryEscape(project), mergeRequest, note)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
214
vendor/github.com/xanzy/go-gitlab/notifications.go
generated
vendored
Normal file
214
vendor/github.com/xanzy/go-gitlab/notifications.go
generated
vendored
Normal file
@ -0,0 +1,214 @@
|
|||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NotificationSettingsService handles communication with the notification settings
|
||||||
|
// related methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/notification_settings.html
|
||||||
|
type NotificationSettingsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// NotificationSettings represents the Gitlab notification setting.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notification_settings.html#notification-settings
|
||||||
|
type NotificationSettings struct {
|
||||||
|
Level NotificationLevelValue `json:"level"`
|
||||||
|
NotificationEmail string `json:"notification_email"`
|
||||||
|
Events *NotificationEvents `json:"events"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// NotificationEvents represents the available notification setting events.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notification_settings.html#notification-settings
|
||||||
|
type NotificationEvents struct {
|
||||||
|
CloseIssue bool `json:"close_issue"`
|
||||||
|
CloseMergeRequest bool `json:"close_merge_request"`
|
||||||
|
FailedPipeline bool `json:"failed_pipeline"`
|
||||||
|
MergeMergeRequest bool `json:"merge_merge_request"`
|
||||||
|
NewIssue bool `json:"new_issue"`
|
||||||
|
NewMergeRequest bool `json:"new_merge_request"`
|
||||||
|
NewNote bool `json:"new_note"`
|
||||||
|
ReassignIssue bool `json:"reassign_issue"`
|
||||||
|
ReassignMergeRequest bool `json:"reassign_merge_request"`
|
||||||
|
ReopenIssue bool `json:"reopen_issue"`
|
||||||
|
ReopenMergeRequest bool `json:"reopen_merge_request"`
|
||||||
|
SuccessPipeline bool `json:"success_pipeline"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ns NotificationSettings) String() string {
|
||||||
|
return Stringify(ns)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetGlobalSettings returns current notification settings and email address.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notification_settings.html#global-notification-settings
|
||||||
|
func (s *NotificationSettingsService) GetGlobalSettings(options ...OptionFunc) (*NotificationSettings, *Response, error) {
|
||||||
|
u := "notification_settings"
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ns := new(NotificationSettings)
|
||||||
|
resp, err := s.client.Do(req, ns)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ns, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// NotificationSettingsOptions represents the available options that can be passed
|
||||||
|
// to the API when updating the notification settings.
|
||||||
|
type NotificationSettingsOptions struct {
|
||||||
|
Level *NotificationLevelValue `url:"level,omitempty" json:"level,omitempty"`
|
||||||
|
NotificationEmail *string `url:"notification_email,omitempty" json:"notification_email,omitempty"`
|
||||||
|
CloseIssue *bool `url:"close_issue,omitempty" json:"close_issue,omitempty"`
|
||||||
|
CloseMergeRequest *bool `url:"close_merge_request,omitempty" json:"close_merge_request,omitempty"`
|
||||||
|
FailedPipeline *bool `url:"failed_pipeline,omitempty" json:"failed_pipeline,omitempty"`
|
||||||
|
MergeMergeRequest *bool `url:"merge_merge_request,omitempty" json:"merge_merge_request,omitempty"`
|
||||||
|
NewIssue *bool `url:"new_issue,omitempty" json:"new_issue,omitempty"`
|
||||||
|
NewMergeRequest *bool `url:"new_merge_request,omitempty" json:"new_merge_request,omitempty"`
|
||||||
|
NewNote *bool `url:"new_note,omitempty" json:"new_note,omitempty"`
|
||||||
|
ReassignIssue *bool `url:"reassign_issue,omitempty" json:"reassign_issue,omitempty"`
|
||||||
|
ReassignMergeRequest *bool `url:"reassign_merge_request,omitempty" json:"reassign_merge_request,omitempty"`
|
||||||
|
ReopenIssue *bool `url:"reopen_issue,omitempty" json:"reopen_issue,omitempty"`
|
||||||
|
ReopenMergeRequest *bool `url:"reopen_merge_request,omitempty" json:"reopen_merge_request,omitempty"`
|
||||||
|
SuccessPipeline *bool `url:"success_pipeline,omitempty" json:"success_pipeline,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateGlobalSettings updates current notification settings and email address.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notification_settings.html#update-global-notification-settings
|
||||||
|
func (s *NotificationSettingsService) UpdateGlobalSettings(opt *NotificationSettingsOptions, options ...OptionFunc) (*NotificationSettings, *Response, error) {
|
||||||
|
if opt.Level != nil && *opt.Level == GlobalNotificationLevel {
|
||||||
|
return nil, nil, errors.New(
|
||||||
|
"notification level 'global' is not valid for global notification settings")
|
||||||
|
}
|
||||||
|
|
||||||
|
u := "notification_settings"
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ns := new(NotificationSettings)
|
||||||
|
resp, err := s.client.Do(req, ns)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ns, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSettingsForGroup returns current group notification settings.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notification_settings.html#group-project-level-notification-settings
|
||||||
|
func (s *NotificationSettingsService) GetSettingsForGroup(gid interface{}, options ...OptionFunc) (*NotificationSettings, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/notification_settings", url.QueryEscape(group))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ns := new(NotificationSettings)
|
||||||
|
resp, err := s.client.Do(req, ns)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ns, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSettingsForProject returns current project notification settings.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notification_settings.html#group-project-level-notification-settings
|
||||||
|
func (s *NotificationSettingsService) GetSettingsForProject(pid interface{}, options ...OptionFunc) (*NotificationSettings, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/notification_settings", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ns := new(NotificationSettings)
|
||||||
|
resp, err := s.client.Do(req, ns)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ns, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateSettingsForGroup updates current group notification settings.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notification_settings.html#update-group-project-level-notification-settings
|
||||||
|
func (s *NotificationSettingsService) UpdateSettingsForGroup(gid interface{}, opt *NotificationSettingsOptions, options ...OptionFunc) (*NotificationSettings, *Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/notification_settings", url.QueryEscape(group))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ns := new(NotificationSettings)
|
||||||
|
resp, err := s.client.Do(req, ns)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ns, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateSettingsForProject updates current project notification settings.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/notification_settings.html#update-group-project-level-notification-settings
|
||||||
|
func (s *NotificationSettingsService) UpdateSettingsForProject(pid interface{}, opt *NotificationSettingsOptions, options ...OptionFunc) (*NotificationSettings, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/notification_settings", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ns := new(NotificationSettings)
|
||||||
|
resp, err := s.client.Do(req, ns)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ns, resp, err
|
||||||
|
}
|
175
vendor/github.com/xanzy/go-gitlab/pages_domains.go
generated
vendored
Normal file
175
vendor/github.com/xanzy/go-gitlab/pages_domains.go
generated
vendored
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// PagesDomainsService handles communication with the pages domains
|
||||||
|
// related methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/pages_domains.html
|
||||||
|
type PagesDomainsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// PagesDomain represents a pages domain.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/pages_domains.html
|
||||||
|
type PagesDomain struct {
|
||||||
|
Domain string `json:"domain"`
|
||||||
|
URL string `json:"url"`
|
||||||
|
ProjectID int `json:"project_id"`
|
||||||
|
Verified bool `json:"verified"`
|
||||||
|
VerificationCode string `json:"verification_code"`
|
||||||
|
EnabledUntil *time.Time `json:"enabled_until"`
|
||||||
|
Certificate struct {
|
||||||
|
Expired bool `json:"expired"`
|
||||||
|
Expiration *time.Time `json:"expiration"`
|
||||||
|
} `json:"certificate"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPagesDomainsOptions represents the available ListPagesDomains() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pages_domains.html#list-pages-domains
|
||||||
|
type ListPagesDomainsOptions ListOptions
|
||||||
|
|
||||||
|
// ListPagesDomains gets a list of project pages domains.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pages_domains.html#list-pages-domains
|
||||||
|
func (s *PagesDomainsService) ListPagesDomains(pid interface{}, opt *ListPagesDomainsOptions, options ...OptionFunc) ([]*PagesDomain, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pages/domains", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var pd []*PagesDomain
|
||||||
|
resp, err := s.client.Do(req, &pd)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pd, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPagesDomain get a specific pages domain for a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pages_domains.html#single-pages-domain
|
||||||
|
func (s *PagesDomainsService) GetPagesDomain(pid interface{}, domain string, options ...OptionFunc) (*PagesDomain, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pages/domains/%s", url.QueryEscape(project), domain)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
pd := new(PagesDomain)
|
||||||
|
resp, err := s.client.Do(req, pd)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pd, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreatePagesDomainOptions represents the available CreatePagesDomain() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// // https://docs.gitlab.com/ce/api/pages_domains.html#create-new-pages-domain
|
||||||
|
type CreatePagesDomainOptions struct {
|
||||||
|
Domain *string `url:"domain,omitempty" json:"domain,omitempty"`
|
||||||
|
Certificate *string `url:"certifiate,omitempty" json:"certifiate,omitempty"`
|
||||||
|
Key *string `url:"key,omitempty" json:"key,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreatePagesDomain creates a new project pages domain.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pages_domains.html#create-new-pages-domain
|
||||||
|
func (s *PagesDomainsService) CreatePagesDomain(pid interface{}, opt *CreatePagesDomainOptions, options ...OptionFunc) (*PagesDomain, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pages/domains", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
pd := new(PagesDomain)
|
||||||
|
resp, err := s.client.Do(req, pd)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pd, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdatePagesDomainOptions represents the available UpdatePagesDomain() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pages_domains.html#update-pages-domain
|
||||||
|
type UpdatePagesDomainOptions struct {
|
||||||
|
Cerificate *string `url:"certifiate" json:"certifiate"`
|
||||||
|
Key *string `url:"key" json:"key"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdatePagesDomain updates an existing project pages domain.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pages_domains.html#update-pages-domain
|
||||||
|
func (s *PagesDomainsService) UpdatePagesDomain(pid interface{}, domain string, opt *UpdatePagesDomainOptions, options ...OptionFunc) (*PagesDomain, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pages/domains/%s", url.QueryEscape(project), domain)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
pd := new(PagesDomain)
|
||||||
|
resp, err := s.client.Do(req, pd)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pd, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePagesDomain deletes an existing prject pages domain.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pages_domains.html#delete-pages-domain
|
||||||
|
func (s *PagesDomainsService) DeletePagesDomain(pid interface{}, domain string, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pages/domains/%s", url.QueryEscape(project), domain)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
341
vendor/github.com/xanzy/go-gitlab/pipeline_schedules.go
generated
vendored
Normal file
341
vendor/github.com/xanzy/go-gitlab/pipeline_schedules.go
generated
vendored
Normal file
@ -0,0 +1,341 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2018, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// PipelineSchedulesService handles communication with the pipeline
|
||||||
|
// schedules related methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/pipeline_schedules.html
|
||||||
|
type PipelineSchedulesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// PipelineVariable represents a pipeline schedule variable.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html#pipeline-schedule-variable
|
||||||
|
type PipelineVariable struct {
|
||||||
|
Key string `json:"key"`
|
||||||
|
Value string `json:"value"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PipelineSchedule represents a pipeline schedule.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html
|
||||||
|
type PipelineSchedule struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Ref string `json:"ref"`
|
||||||
|
Cron string `json:"cron"`
|
||||||
|
CronTimezone string `json:"cron_timezone"`
|
||||||
|
NextRunAt *time.Time `json:"next_run_at"`
|
||||||
|
Active bool `json:"active"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
UpdatedAt *time.Time `json:"updated_at"`
|
||||||
|
Owner *User `json:"owner"`
|
||||||
|
LastPipeline struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Sha string `json:"sha"`
|
||||||
|
Ref string `json:"ref"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
} `json:"last_pipeline"`
|
||||||
|
Variables []*PipelineVariable `json:"variables"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPipelineSchedulesOptions represents the available ListPipelineTriggers() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_triggers.html#list-project-triggers
|
||||||
|
type ListPipelineSchedulesOptions ListOptions
|
||||||
|
|
||||||
|
// ListPipelineSchedules gets a list of project triggers.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html
|
||||||
|
func (s *PipelineSchedulesService) ListPipelineSchedules(pid interface{}, opt *ListPipelineSchedulesOptions, options ...OptionFunc) ([]*PipelineSchedule, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipeline_schedules", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var ps []*PipelineSchedule
|
||||||
|
resp, err := s.client.Do(req, &ps)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ps, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPipelineSchedule gets a pipeline schedule.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html
|
||||||
|
func (s *PipelineSchedulesService) GetPipelineSchedule(pid interface{}, schedule int, options ...OptionFunc) (*PipelineSchedule, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipeline_schedules/%d", url.QueryEscape(project), schedule)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(PipelineSchedule)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreatePipelineScheduleOptions represents the available
|
||||||
|
// CreatePipelineSchedule() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html#create-a-new-pipeline-schedule
|
||||||
|
type CreatePipelineScheduleOptions struct {
|
||||||
|
Description *string `url:"description" json:"description"`
|
||||||
|
Ref *string `url:"ref" json:"ref"`
|
||||||
|
Cron *string `url:"cron" json:"cron"`
|
||||||
|
CronTimezone *string `url:"cron_timezone,omitempty" json:"cron_timezone,omitempty"`
|
||||||
|
Active *bool `url:"active,omitempty" json:"active,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreatePipelineSchedule creates a pipeline schedule.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html#create-a-new-pipeline-schedule
|
||||||
|
func (s *PipelineSchedulesService) CreatePipelineSchedule(pid interface{}, opt *CreatePipelineScheduleOptions, options ...OptionFunc) (*PipelineSchedule, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipeline_schedules", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(PipelineSchedule)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditPipelineScheduleOptions represents the available
|
||||||
|
// EditPipelineSchedule() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html#create-a-new-pipeline-schedule
|
||||||
|
type EditPipelineScheduleOptions struct {
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
Ref *string `url:"ref,omitempty" json:"ref,omitempty"`
|
||||||
|
Cron *string `url:"cron,omitempty" json:"cron,omitempty"`
|
||||||
|
CronTimezone *string `url:"cron_timezone,omitempty" json:"cron_timezone,omitempty"`
|
||||||
|
Active *bool `url:"active,omitempty" json:"active,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditPipelineSchedule edits a pipeline schedule.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html#edit-a-pipeline-schedule
|
||||||
|
func (s *PipelineSchedulesService) EditPipelineSchedule(pid interface{}, schedule int, opt *EditPipelineScheduleOptions, options ...OptionFunc) (*PipelineSchedule, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipeline_schedules/%d", url.QueryEscape(project), schedule)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(PipelineSchedule)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// TakeOwnershipOfPipelineSchedule sets the owner of the specified
|
||||||
|
// pipeline schedule to the user issuing the request.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html#take-ownership-of-a-pipeline-schedule
|
||||||
|
func (s *PipelineSchedulesService) TakeOwnershipOfPipelineSchedule(pid interface{}, schedule int, options ...OptionFunc) (*PipelineSchedule, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipeline_schedules/%d/take_ownership", url.QueryEscape(project), schedule)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(PipelineSchedule)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePipelineSchedule deletes a pipeline schedule.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html#delete-a-pipeline-schedule
|
||||||
|
func (s *PipelineSchedulesService) DeletePipelineSchedule(pid interface{}, schedule int, options ...OptionFunc) (*PipelineSchedule, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipeline_schedules/%d", url.QueryEscape(project), schedule)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(PipelineSchedule)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreatePipelineScheduleVariableOptions represents the available
|
||||||
|
// CreatePipelineScheduleVariable() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html#create-a-new-pipeline-schedule
|
||||||
|
type CreatePipelineScheduleVariableOptions struct {
|
||||||
|
Key *string `url:"key" json:"key"`
|
||||||
|
Value *string `url:"value" json:"value"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreatePipelineScheduleVariable creates a pipeline schedule variable.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html#create-a-new-pipeline-schedule
|
||||||
|
func (s *PipelineSchedulesService) CreatePipelineScheduleVariable(pid interface{}, schedule int, opt *CreatePipelineScheduleVariableOptions, options ...OptionFunc) (*PipelineVariable, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipeline_schedules/%d/variables", url.QueryEscape(project), schedule)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(PipelineVariable)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditPipelineScheduleVariableOptions represents the available
|
||||||
|
// EditPipelineScheduleVariable() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html#edit-a-pipeline-schedule-variable
|
||||||
|
type EditPipelineScheduleVariableOptions struct {
|
||||||
|
Value *string `url:"value" json:"value"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditPipelineScheduleVariable creates a pipeline schedule variable.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html#edit-a-pipeline-schedule-variable
|
||||||
|
func (s *PipelineSchedulesService) EditPipelineScheduleVariable(pid interface{}, schedule int, key string, opt *EditPipelineScheduleVariableOptions, options ...OptionFunc) (*PipelineVariable, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipeline_schedules/%d/variables/%s", url.QueryEscape(project), schedule, key)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(PipelineVariable)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePipelineScheduleVariable creates a pipeline schedule variable.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_schedules.html#delete-a-pipeline-schedule-variable
|
||||||
|
func (s *PipelineSchedulesService) DeletePipelineScheduleVariable(pid interface{}, schedule int, key string, options ...OptionFunc) (*PipelineVariable, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipeline_schedules/%d/variables/%s", url.QueryEscape(project), schedule, key)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(PipelineVariable)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
232
vendor/github.com/xanzy/go-gitlab/pipeline_triggers.go
generated
vendored
Normal file
232
vendor/github.com/xanzy/go-gitlab/pipeline_triggers.go
generated
vendored
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// PipelineTriggersService handles Project pipeline triggers.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_triggers.html
|
||||||
|
type PipelineTriggersService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// PipelineTrigger represents a project pipeline trigger.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_triggers.html#pipeline-triggers
|
||||||
|
type PipelineTrigger struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
DeletedAt *time.Time `json:"deleted_at"`
|
||||||
|
LastUsed *time.Time `json:"last_used"`
|
||||||
|
Token string `json:"token"`
|
||||||
|
UpdatedAt *time.Time `json:"updated_at"`
|
||||||
|
Owner *User `json:"owner"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPipelineTriggersOptions represents the available ListPipelineTriggers() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_triggers.html#list-project-triggers
|
||||||
|
type ListPipelineTriggersOptions ListOptions
|
||||||
|
|
||||||
|
// ListPipelineTriggers gets a list of project triggers.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_triggers.html#list-project-triggers
|
||||||
|
func (s *PipelineTriggersService) ListPipelineTriggers(pid interface{}, opt *ListPipelineTriggersOptions, options ...OptionFunc) ([]*PipelineTrigger, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/triggers", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var pt []*PipelineTrigger
|
||||||
|
resp, err := s.client.Do(req, &pt)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pt, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPipelineTrigger gets a specific pipeline trigger for a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_triggers.html#get-trigger-details
|
||||||
|
func (s *PipelineTriggersService) GetPipelineTrigger(pid interface{}, trigger int, options ...OptionFunc) (*PipelineTrigger, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/triggers/%d", url.QueryEscape(project), trigger)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
pt := new(PipelineTrigger)
|
||||||
|
resp, err := s.client.Do(req, pt)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pt, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddPipelineTriggerOptions represents the available AddPipelineTrigger() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_triggers.html#create-a-project-trigger
|
||||||
|
type AddPipelineTriggerOptions struct {
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddPipelineTrigger adds a pipeline trigger to a specified project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_triggers.html#create-a-project-trigger
|
||||||
|
func (s *PipelineTriggersService) AddPipelineTrigger(pid interface{}, opt *AddPipelineTriggerOptions, options ...OptionFunc) (*PipelineTrigger, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/triggers", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
pt := new(PipelineTrigger)
|
||||||
|
resp, err := s.client.Do(req, pt)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pt, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditPipelineTriggerOptions represents the available EditPipelineTrigger() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_triggers.html#update-a-project-trigger
|
||||||
|
type EditPipelineTriggerOptions struct {
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditPipelineTrigger edits a trigger for a specified project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_triggers.html#update-a-project-trigger
|
||||||
|
func (s *PipelineTriggersService) EditPipelineTrigger(pid interface{}, trigger int, opt *EditPipelineTriggerOptions, options ...OptionFunc) (*PipelineTrigger, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/triggers/%d", url.QueryEscape(project), trigger)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
pt := new(PipelineTrigger)
|
||||||
|
resp, err := s.client.Do(req, pt)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pt, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// TakeOwnershipOfPipelineTrigger sets the owner of the specified
|
||||||
|
// pipeline trigger to the user issuing the request.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_triggers.html#take-ownership-of-a-project-trigger
|
||||||
|
func (s *PipelineTriggersService) TakeOwnershipOfPipelineTrigger(pid interface{}, trigger int, options ...OptionFunc) (*PipelineTrigger, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/triggers/%d/take_ownership", url.QueryEscape(project), trigger)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
pt := new(PipelineTrigger)
|
||||||
|
resp, err := s.client.Do(req, pt)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pt, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePipelineTrigger removes a trigger from a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipeline_triggers.html#remove-a-project-trigger
|
||||||
|
func (s *PipelineTriggersService) DeletePipelineTrigger(pid interface{}, trigger int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/triggers/%d", url.QueryEscape(project), trigger)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RunPipelineTriggerOptions represents the available RunPipelineTrigger() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/ci/triggers/README.html#triggering-a-pipeline
|
||||||
|
type RunPipelineTriggerOptions struct {
|
||||||
|
Ref *string `url:"ref" json:"ref"`
|
||||||
|
Token *string `url:"token" json:"token"`
|
||||||
|
Variables map[string]string `url:"variables,omitempty" json:"variables,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// RunPipelineTrigger starts a trigger from a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/ci/triggers/README.html#triggering-a-pipeline
|
||||||
|
func (s *PipelineTriggersService) RunPipelineTrigger(pid interface{}, opt *RunPipelineTriggerOptions, options ...OptionFunc) (*Pipeline, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/trigger/pipeline", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
pt := new(Pipeline)
|
||||||
|
resp, err := s.client.Do(req, pt)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pt, resp, err
|
||||||
|
}
|
220
vendor/github.com/xanzy/go-gitlab/pipelines.go
generated
vendored
Normal file
220
vendor/github.com/xanzy/go-gitlab/pipelines.go
generated
vendored
Normal file
@ -0,0 +1,220 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Igor Varavko
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// PipelinesService handles communication with the repositories related
|
||||||
|
// methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/pipelines.html
|
||||||
|
type PipelinesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pipeline represents a GitLab pipeline.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/pipelines.html
|
||||||
|
type Pipeline struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Ref string `json:"ref"`
|
||||||
|
Sha string `json:"sha"`
|
||||||
|
BeforeSha string `json:"before_sha"`
|
||||||
|
Tag bool `json:"tag"`
|
||||||
|
YamlErrors string `json:"yaml_errors"`
|
||||||
|
User struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
ID int `json:"id"`
|
||||||
|
State string `json:"state"`
|
||||||
|
AvatarURL string `json:"avatar_url"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
}
|
||||||
|
UpdatedAt *time.Time `json:"updated_at"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
StartedAt *time.Time `json:"started_at"`
|
||||||
|
FinishedAt *time.Time `json:"finished_at"`
|
||||||
|
CommittedAt *time.Time `json:"committed_at"`
|
||||||
|
Duration int `json:"duration"`
|
||||||
|
Coverage string `json:"coverage"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i Pipeline) String() string {
|
||||||
|
return Stringify(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
// PipelineList represents a GitLab list project pipelines
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/pipelines.html#list-project-pipelines
|
||||||
|
type PipelineList []struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Ref string `json:"ref"`
|
||||||
|
Sha string `json:"sha"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i PipelineList) String() string {
|
||||||
|
return Stringify(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProjectPipelinesOptions represents the available ListProjectPipelines() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/pipelines.html#list-project-pipelines
|
||||||
|
type ListProjectPipelinesOptions struct {
|
||||||
|
ListOptions
|
||||||
|
Scope *string `url:"scope,omitempty" json:"scope,omitempty"`
|
||||||
|
Status *BuildStateValue `url:"status,omitempty" json:"status,omitempty"`
|
||||||
|
Ref *string `url:"ref,omitempty" json:"ref,omitempty"`
|
||||||
|
YamlErrors *bool `url:"yaml_errors,omitempty" json:"yaml_errors,omitempty"`
|
||||||
|
Name *string `url:"name,omitempty" json:"name,omitempty"`
|
||||||
|
Username *string `url:"username,omitempty" json:"username,omitempty"`
|
||||||
|
OrderBy *string `url:"order_by,omitempty" json:"order_by,omitempty"`
|
||||||
|
Sort *string `url:"sort,omitempty" json:"sort,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProjectPipelines gets a list of project piplines.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/pipelines.html#list-project-pipelines
|
||||||
|
func (s *PipelinesService) ListProjectPipelines(pid interface{}, opt *ListProjectPipelinesOptions, options ...OptionFunc) (PipelineList, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipelines", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var p PipelineList
|
||||||
|
resp, err := s.client.Do(req, &p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPipeline gets a single project pipeline.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/pipelines.html#get-a-single-pipeline
|
||||||
|
func (s *PipelinesService) GetPipeline(pid interface{}, pipeline int, options ...OptionFunc) (*Pipeline, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipelines/%d", url.QueryEscape(project), pipeline)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(Pipeline)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreatePipelineOptions represents the available CreatePipeline() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/pipelines.html#create-a-new-pipeline
|
||||||
|
type CreatePipelineOptions struct {
|
||||||
|
Ref *string `url:"ref,omitempty" json:"ref"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreatePipeline creates a new project pipeline.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/pipelines.html#create-a-new-pipeline
|
||||||
|
func (s *PipelinesService) CreatePipeline(pid interface{}, opt *CreatePipelineOptions, options ...OptionFunc) (*Pipeline, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipeline", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(Pipeline)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// RetryPipelineBuild retries failed builds in a pipeline
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/pipelines.html#retry-failed-builds-in-a-pipeline
|
||||||
|
func (s *PipelinesService) RetryPipelineBuild(pid interface{}, pipelineID int, options ...OptionFunc) (*Pipeline, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipelines/%d/retry", project, pipelineID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(Pipeline)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CancelPipelineBuild cancels a pipeline builds
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
//https://docs.gitlab.com/ce/api/pipelines.html#cancel-a-pipelines-builds
|
||||||
|
func (s *PipelinesService) CancelPipelineBuild(pid interface{}, pipelineID int, options ...OptionFunc) (*Pipeline, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/pipelines/%d/cancel", project, pipelineID)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(Pipeline)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
179
vendor/github.com/xanzy/go-gitlab/project_members.go
generated
vendored
Normal file
179
vendor/github.com/xanzy/go-gitlab/project_members.go
generated
vendored
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProjectMembersService handles communication with the project members
|
||||||
|
// related methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/members.html
|
||||||
|
type ProjectMembersService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProjectMembersOptions represents the available ListProjectMembers()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#list-all-members-of-a-group-or-project
|
||||||
|
type ListProjectMembersOptions struct {
|
||||||
|
ListOptions
|
||||||
|
Query *string `url:"query,omitempty" json:"query,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProjectMembers gets a list of a project's team members.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#list-all-members-of-a-group-or-project
|
||||||
|
func (s *ProjectMembersService) ListProjectMembers(pid interface{}, opt *ListProjectMembersOptions, options ...OptionFunc) ([]*ProjectMember, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/members", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var pm []*ProjectMember
|
||||||
|
resp, err := s.client.Do(req, &pm)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pm, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetProjectMember gets a project team member.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#get-a-member-of-a-group-or-project
|
||||||
|
func (s *ProjectMembersService) GetProjectMember(pid interface{}, user int, options ...OptionFunc) (*ProjectMember, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/members/%d", url.QueryEscape(project), user)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
pm := new(ProjectMember)
|
||||||
|
resp, err := s.client.Do(req, pm)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pm, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddProjectMemberOptions represents the available AddProjectMember() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#add-a-member-to-a-group-or-project
|
||||||
|
type AddProjectMemberOptions struct {
|
||||||
|
UserID *int `url:"user_id,omitempty" json:"user_id,omitempty"`
|
||||||
|
AccessLevel *AccessLevelValue `url:"access_level,omitempty" json:"access_level,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddProjectMember adds a user to a project team. This is an idempotent
|
||||||
|
// method and can be called multiple times with the same parameters. Adding
|
||||||
|
// team membership to a user that is already a member does not affect the
|
||||||
|
// existing membership.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#add-a-member-to-a-group-or-project
|
||||||
|
func (s *ProjectMembersService) AddProjectMember(pid interface{}, opt *AddProjectMemberOptions, options ...OptionFunc) (*ProjectMember, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/members", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
pm := new(ProjectMember)
|
||||||
|
resp, err := s.client.Do(req, pm)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pm, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditProjectMemberOptions represents the available EditProjectMember() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#edit-a-member-of-a-group-or-project
|
||||||
|
type EditProjectMemberOptions struct {
|
||||||
|
AccessLevel *AccessLevelValue `url:"access_level,omitempty" json:"access_level,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditProjectMember updates a project team member to a specified access level..
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#edit-a-member-of-a-group-or-project
|
||||||
|
func (s *ProjectMembersService) EditProjectMember(pid interface{}, user int, opt *EditProjectMemberOptions, options ...OptionFunc) (*ProjectMember, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/members/%d", url.QueryEscape(project), user)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
pm := new(ProjectMember)
|
||||||
|
resp, err := s.client.Do(req, pm)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pm, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteProjectMember removes a user from a project team.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/members.html#remove-a-member-from-a-group-or-project
|
||||||
|
func (s *ProjectMembersService) DeleteProjectMember(pid interface{}, user int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/members/%d", url.QueryEscape(project), user)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
207
vendor/github.com/xanzy/go-gitlab/project_snippets.go
generated
vendored
Normal file
207
vendor/github.com/xanzy/go-gitlab/project_snippets.go
generated
vendored
Normal file
@ -0,0 +1,207 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProjectSnippetsService handles communication with the project snippets
|
||||||
|
// related methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/project_snippets.html
|
||||||
|
type ProjectSnippetsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProjectSnippetsOptions represents the available ListSnippets() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/project_snippets.html#list-snippets
|
||||||
|
type ListProjectSnippetsOptions ListOptions
|
||||||
|
|
||||||
|
// ListSnippets gets a list of project snippets.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/project_snippets.html#list-snippets
|
||||||
|
func (s *ProjectSnippetsService) ListSnippets(pid interface{}, opt *ListProjectSnippetsOptions, options ...OptionFunc) ([]*Snippet, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/snippets", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var ps []*Snippet
|
||||||
|
resp, err := s.client.Do(req, &ps)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ps, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSnippet gets a single project snippet
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/project_snippets.html#single-snippet
|
||||||
|
func (s *ProjectSnippetsService) GetSnippet(pid interface{}, snippet int, options ...OptionFunc) (*Snippet, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/snippets/%d", url.QueryEscape(project), snippet)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ps := new(Snippet)
|
||||||
|
resp, err := s.client.Do(req, ps)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ps, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateProjectSnippetOptions represents the available CreateSnippet() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/project_snippets.html#create-new-snippet
|
||||||
|
type CreateProjectSnippetOptions struct {
|
||||||
|
Title *string `url:"title,omitempty" json:"title,omitempty"`
|
||||||
|
FileName *string `url:"file_name,omitempty" json:"file_name,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
Code *string `url:"code,omitempty" json:"code,omitempty"`
|
||||||
|
Visibility *VisibilityValue `url:"visibility,omitempty" json:"visibility,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateSnippet creates a new project snippet. The user must have permission
|
||||||
|
// to create new snippets.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/project_snippets.html#create-new-snippet
|
||||||
|
func (s *ProjectSnippetsService) CreateSnippet(pid interface{}, opt *CreateProjectSnippetOptions, options ...OptionFunc) (*Snippet, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/snippets", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ps := new(Snippet)
|
||||||
|
resp, err := s.client.Do(req, ps)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ps, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateProjectSnippetOptions represents the available UpdateSnippet() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/project_snippets.html#update-snippet
|
||||||
|
type UpdateProjectSnippetOptions struct {
|
||||||
|
Title *string `url:"title,omitempty" json:"title,omitempty"`
|
||||||
|
FileName *string `url:"file_name,omitempty" json:"file_name,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
Code *string `url:"code,omitempty" json:"code,omitempty"`
|
||||||
|
Visibility *VisibilityValue `url:"visibility,omitempty" json:"visibility,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateSnippet updates an existing project snippet. The user must have
|
||||||
|
// permission to change an existing snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/project_snippets.html#update-snippet
|
||||||
|
func (s *ProjectSnippetsService) UpdateSnippet(pid interface{}, snippet int, opt *UpdateProjectSnippetOptions, options ...OptionFunc) (*Snippet, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/snippets/%d", url.QueryEscape(project), snippet)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ps := new(Snippet)
|
||||||
|
resp, err := s.client.Do(req, ps)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ps, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteSnippet deletes an existing project snippet. This is an idempotent
|
||||||
|
// function and deleting a non-existent snippet still returns a 200 OK status
|
||||||
|
// code.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/project_snippets.html#delete-snippet
|
||||||
|
func (s *ProjectSnippetsService) DeleteSnippet(pid interface{}, snippet int, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/snippets/%d", url.QueryEscape(project), snippet)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SnippetContent returns the raw project snippet as plain text.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/project_snippets.html#snippet-content
|
||||||
|
func (s *ProjectSnippetsService) SnippetContent(pid interface{}, snippet int, options ...OptionFunc) ([]byte, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/snippets/%d/raw", url.QueryEscape(project), snippet)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var b bytes.Buffer
|
||||||
|
resp, err := s.client.Do(req, &b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b.Bytes(), resp, err
|
||||||
|
}
|
997
vendor/github.com/xanzy/go-gitlab/projects.go
generated
vendored
Normal file
997
vendor/github.com/xanzy/go-gitlab/projects.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
165
vendor/github.com/xanzy/go-gitlab/protected_branches.go
generated
vendored
Normal file
165
vendor/github.com/xanzy/go-gitlab/protected_branches.go
generated
vendored
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen, Michael Lihs
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProtectedBranchesService handles communication with the protected branch
|
||||||
|
// related methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/protected_branches.html#protected-branches-api
|
||||||
|
type ProtectedBranchesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// BranchAccessDescription represents the access description for a protected
|
||||||
|
// branch.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/protected_branches.html#protected-branches-api
|
||||||
|
type BranchAccessDescription struct {
|
||||||
|
AccessLevel AccessLevelValue `json:"access_level"`
|
||||||
|
AccessLevelDescription string `json:"access_level_description"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProtectedBranch represents a protected branch.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/protected_branches.html#list-protected-branches
|
||||||
|
type ProtectedBranch struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
PushAccessLevels []*BranchAccessDescription `json:"push_access_levels"`
|
||||||
|
MergeAccessLevels []*BranchAccessDescription `json:"merge_access_levels"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProtectedBranchesOptions represents the available ListProtectedBranches()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/protected_branches.html#list-protected-branches
|
||||||
|
type ListProtectedBranchesOptions ListOptions
|
||||||
|
|
||||||
|
// ListProtectedBranches gets a list of protected branches from a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/protected_branches.html#list-protected-branches
|
||||||
|
func (s *ProtectedBranchesService) ListProtectedBranches(pid interface{}, opt *ListProtectedBranchesOptions, options ...OptionFunc) ([]*ProtectedBranch, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/protected_branches", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var p []*ProtectedBranch
|
||||||
|
resp, err := s.client.Do(req, &p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetProtectedBranch gets a single protected branch or wildcard protected branch.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/protected_branches.html#get-a-single-protected-branch-or-wildcard-protected-branch
|
||||||
|
func (s *ProtectedBranchesService) GetProtectedBranch(pid interface{}, branch string, options ...OptionFunc) (*ProtectedBranch, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/protected_branches/%s", url.QueryEscape(project), branch)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(ProtectedBranch)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProtectRepositoryBranchesOptions represents the available
|
||||||
|
// ProtectRepositoryBranches() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/protected_branches.html#protect-repository-branches
|
||||||
|
type ProtectRepositoryBranchesOptions struct {
|
||||||
|
Name *string `url:"name,omitempty" json:"name,omitempty"`
|
||||||
|
PushAccessLevel *AccessLevelValue `url:"push_access_level,omitempty" json:"push_access_level,omitempty"`
|
||||||
|
MergeAccessLevel *AccessLevelValue `url:"merge_access_level,omitempty" json:"merge_access_level,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProtectRepositoryBranches protects a single repository branch or several
|
||||||
|
// project repository branches using a wildcard protected branch.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/protected_branches.html#protect-repository-branches
|
||||||
|
func (s *ProtectedBranchesService) ProtectRepositoryBranches(pid interface{}, opt *ProtectRepositoryBranchesOptions, options ...OptionFunc) (*ProtectedBranch, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/protected_branches", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(ProtectedBranch)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnprotectRepositoryBranches unprotects the given protected branch or wildcard
|
||||||
|
// protected branch.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/protected_branches.html#unprotect-repository-branches
|
||||||
|
func (s *ProtectedBranchesService) UnprotectRepositoryBranches(pid interface{}, branch string, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/protected_branches/%s", url.QueryEscape(project), branch)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
260
vendor/github.com/xanzy/go-gitlab/repositories.go
generated
vendored
Normal file
260
vendor/github.com/xanzy/go-gitlab/repositories.go
generated
vendored
Normal file
@ -0,0 +1,260 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// RepositoriesService handles communication with the repositories related
|
||||||
|
// methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/repositories.html
|
||||||
|
type RepositoriesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// TreeNode represents a GitLab repository file or directory.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/repositories.html
|
||||||
|
type TreeNode struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
Mode string `json:"mode"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t TreeNode) String() string {
|
||||||
|
return Stringify(t)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListTreeOptions represents the available ListTree() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repositories.html#list-repository-tree
|
||||||
|
type ListTreeOptions struct {
|
||||||
|
ListOptions
|
||||||
|
Path *string `url:"path,omitempty" json:"path,omitempty"`
|
||||||
|
Ref *string `url:"ref,omitempty" json:"ref,omitempty"`
|
||||||
|
Recursive *bool `url:"recursive,omitempty" json:"recursive,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListTree gets a list of repository files and directories in a project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repositories.html#list-repository-tree
|
||||||
|
func (s *RepositoriesService) ListTree(pid interface{}, opt *ListTreeOptions, options ...OptionFunc) ([]*TreeNode, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/tree", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var t []*TreeNode
|
||||||
|
resp, err := s.client.Do(req, &t)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return t, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// RawFileContent gets the raw file contents for a file by commit SHA and path
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repositories.html#raw-file-content
|
||||||
|
func (s *RepositoriesService) RawFileContent(pid interface{}, sha string, options ...OptionFunc) ([]byte, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/blobs/%s", url.QueryEscape(project), sha)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var b bytes.Buffer
|
||||||
|
resp, err := s.client.Do(req, &b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b.Bytes(), resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// RawBlobContent gets the raw file contents for a blob by blob SHA.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repositories.html#raw-blob-content
|
||||||
|
func (s *RepositoriesService) RawBlobContent(pid interface{}, sha string, options ...OptionFunc) ([]byte, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/blobs/%s/raw", url.QueryEscape(project), sha)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var b bytes.Buffer
|
||||||
|
resp, err := s.client.Do(req, &b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b.Bytes(), resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArchiveOptions represents the available Archive() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repositories.html#get-file-archive
|
||||||
|
type ArchiveOptions struct {
|
||||||
|
SHA *string `url:"sha,omitempty" json:"sha,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Archive gets an archive of the repository.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repositories.html#get-file-archive
|
||||||
|
func (s *RepositoriesService) Archive(pid interface{}, opt *ArchiveOptions, options ...OptionFunc) ([]byte, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/archive", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var b bytes.Buffer
|
||||||
|
resp, err := s.client.Do(req, &b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b.Bytes(), resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compare represents the result of a comparison of branches, tags or commits.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repositories.html#compare-branches-tags-or-commits
|
||||||
|
type Compare struct {
|
||||||
|
Commit *Commit `json:"commit"`
|
||||||
|
Commits []*Commit `json:"commits"`
|
||||||
|
Diffs []*Diff `json:"diffs"`
|
||||||
|
CompareTimeout bool `json:"compare_timeout"`
|
||||||
|
CompareSameRef bool `json:"compare_same_ref"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c Compare) String() string {
|
||||||
|
return Stringify(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CompareOptions represents the available Compare() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repositories.html#compare-branches-tags-or-commits
|
||||||
|
type CompareOptions struct {
|
||||||
|
From *string `url:"from,omitempty" json:"from,omitempty"`
|
||||||
|
To *string `url:"to,omitempty" json:"to,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compare compares branches, tags or commits.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repositories.html#compare-branches-tags-or-commits
|
||||||
|
func (s *RepositoriesService) Compare(pid interface{}, opt *CompareOptions, options ...OptionFunc) (*Compare, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/compare", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
c := new(Compare)
|
||||||
|
resp, err := s.client.Do(req, c)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return c, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Contributor represents a GitLap contributor.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/repositories.html#contributors
|
||||||
|
type Contributor struct {
|
||||||
|
Name string `json:"name,omitempty"`
|
||||||
|
Email string `json:"email,omitempty"`
|
||||||
|
Commits int `json:"commits,omitempty"`
|
||||||
|
Additions int `json:"additions,omitempty"`
|
||||||
|
Deletions int `json:"deletions,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c Contributor) String() string {
|
||||||
|
return Stringify(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListContributorsOptions represents the available ListContributorsOptions()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/repositories.html#contributors
|
||||||
|
type ListContributorsOptions ListOptions
|
||||||
|
|
||||||
|
// Contributors gets the repository contributors list.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/repositories.html#contributors
|
||||||
|
func (s *RepositoriesService) Contributors(pid interface{}, opt *ListContributorsOptions, options ...OptionFunc) ([]*Contributor, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/contributors", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var c []*Contributor
|
||||||
|
resp, err := s.client.Do(req, &c)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return c, resp, err
|
||||||
|
}
|
235
vendor/github.com/xanzy/go-gitlab/repository_files.go
generated
vendored
Normal file
235
vendor/github.com/xanzy/go-gitlab/repository_files.go
generated
vendored
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// RepositoryFilesService handles communication with the repository files
|
||||||
|
// related methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/repository_files.html
|
||||||
|
type RepositoryFilesService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// File represents a GitLab repository file.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/repository_files.html
|
||||||
|
type File struct {
|
||||||
|
FileName string `json:"file_name"`
|
||||||
|
FilePath string `json:"file_path"`
|
||||||
|
Size int `json:"size"`
|
||||||
|
Encoding string `json:"encoding"`
|
||||||
|
Content string `json:"content"`
|
||||||
|
Ref string `json:"ref"`
|
||||||
|
BlobID string `json:"blob_id"`
|
||||||
|
CommitID string `json:"commit_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r File) String() string {
|
||||||
|
return Stringify(r)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFileOptions represents the available GetFile() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repository_files.html#get-file-from-repository
|
||||||
|
type GetFileOptions struct {
|
||||||
|
Ref *string `url:"ref,omitempty" json:"ref,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFile allows you to receive information about a file in repository like
|
||||||
|
// name, size, content. Note that file content is Base64 encoded.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repository_files.html#get-file-from-repository
|
||||||
|
func (s *RepositoryFilesService) GetFile(pid interface{}, fileName string, opt *GetFileOptions, options ...OptionFunc) (*File, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/files/%s", url.QueryEscape(project), url.QueryEscape(fileName))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
f := new(File)
|
||||||
|
resp, err := s.client.Do(req, f)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return f, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRawFileOptions represents the available GetRawFile() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repository_files.html#get-raw-file-from-repository
|
||||||
|
type GetRawFileOptions struct {
|
||||||
|
Ref *string `url:"ref,omitempty" json:"ref,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRawFile allows you to receive the raw file in repository.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repository_files.html#get-raw-file-from-repository
|
||||||
|
func (s *RepositoryFilesService) GetRawFile(pid interface{}, fileName string, opt *GetRawFileOptions, options ...OptionFunc) ([]byte, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/files/%s/raw", url.QueryEscape(project), url.QueryEscape(fileName))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var f bytes.Buffer
|
||||||
|
resp, err := s.client.Do(req, &f)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return f.Bytes(), resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// FileInfo represents file details of a GitLab repository file.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/repository_files.html
|
||||||
|
type FileInfo struct {
|
||||||
|
FilePath string `json:"file_path"`
|
||||||
|
Branch string `json:"branch"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r FileInfo) String() string {
|
||||||
|
return Stringify(r)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateFileOptions represents the available CreateFile() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repository_files.html#create-new-file-in-repository
|
||||||
|
type CreateFileOptions struct {
|
||||||
|
Branch *string `url:"branch,omitempty" json:"branch,omitempty"`
|
||||||
|
Encoding *string `url:"encoding,omitempty" json:"encoding,omitempty"`
|
||||||
|
AuthorEmail *string `url:"author_email,omitempty" json:"author_email,omitempty"`
|
||||||
|
AuthorName *string `url:"author_name,omitempty" json:"author_name,omitempty"`
|
||||||
|
Content *string `url:"content,omitempty" json:"content,omitempty"`
|
||||||
|
CommitMessage *string `url:"commit_message,omitempty" json:"commit_message,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateFile creates a new file in a repository.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repository_files.html#create-new-file-in-repository
|
||||||
|
func (s *RepositoryFilesService) CreateFile(pid interface{}, fileName string, opt *CreateFileOptions, options ...OptionFunc) (*FileInfo, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/files/%s", url.QueryEscape(project), url.QueryEscape(fileName))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
f := new(FileInfo)
|
||||||
|
resp, err := s.client.Do(req, f)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return f, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateFileOptions represents the available UpdateFile() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repository_files.html#update-existing-file-in-repository
|
||||||
|
type UpdateFileOptions struct {
|
||||||
|
Branch *string `url:"branch,omitempty" json:"branch,omitempty"`
|
||||||
|
Encoding *string `url:"encoding,omitempty" json:"encoding,omitempty"`
|
||||||
|
AuthorEmail *string `url:"author_email,omitempty" json:"author_email,omitempty"`
|
||||||
|
AuthorName *string `url:"author_name,omitempty" json:"author_name,omitempty"`
|
||||||
|
Content *string `url:"content,omitempty" json:"content,omitempty"`
|
||||||
|
CommitMessage *string `url:"commit_message,omitempty" json:"commit_message,omitempty"`
|
||||||
|
LastCommitID *string `url:"last_commit_id,omitempty" json:"last_commit_id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateFile updates an existing file in a repository
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repository_files.html#update-existing-file-in-repository
|
||||||
|
func (s *RepositoryFilesService) UpdateFile(pid interface{}, fileName string, opt *UpdateFileOptions, options ...OptionFunc) (*FileInfo, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/files/%s", url.QueryEscape(project), url.QueryEscape(fileName))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
f := new(FileInfo)
|
||||||
|
resp, err := s.client.Do(req, f)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return f, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteFileOptions represents the available DeleteFile() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repository_files.html#delete-existing-file-in-repository
|
||||||
|
type DeleteFileOptions struct {
|
||||||
|
Branch *string `url:"branch,omitempty" json:"branch,omitempty"`
|
||||||
|
AuthorEmail *string `url:"author_email,omitempty" json:"author_email,omitempty"`
|
||||||
|
AuthorName *string `url:"author_name,omitempty" json:"author_name,omitempty"`
|
||||||
|
CommitMessage *string `url:"commit_message,omitempty" json:"commit_message,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteFile deletes an existing file in a repository
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/repository_files.html#delete-existing-file-in-repository
|
||||||
|
func (s *RepositoryFilesService) DeleteFile(pid interface{}, fileName string, opt *DeleteFileOptions, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/files/%s", url.QueryEscape(project), url.QueryEscape(fileName))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
326
vendor/github.com/xanzy/go-gitlab/runners.go
generated
vendored
Normal file
326
vendor/github.com/xanzy/go-gitlab/runners.go
generated
vendored
Normal file
@ -0,0 +1,326 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// RunnersService handles communication with the runner related methods of the
|
||||||
|
// GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/runners.html
|
||||||
|
type RunnersService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Runner represents a GitLab CI Runner.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/runners.html
|
||||||
|
type Runner struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Active bool `json:"active"`
|
||||||
|
IsShared bool `json:"is_shared"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Online bool `json:"online"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// RunnerDetails represents the GitLab CI runner details.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/runners.html
|
||||||
|
type RunnerDetails struct {
|
||||||
|
Active bool `json:"active"`
|
||||||
|
Architecture string `json:"architecture"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
ID int `json:"id"`
|
||||||
|
IsShared bool `json:"is_shared"`
|
||||||
|
ContactedAt *time.Time `json:"contacted_at,omitempty"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Online bool `json:"online"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Platform string `json:"platform,omitempty"`
|
||||||
|
Projects []struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
NameWithNamespace string `json:"name_with_namespace"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
PathWithNamespace string `json:"path_with_namespace"`
|
||||||
|
} `json:"projects"`
|
||||||
|
Token string `json:"Token"`
|
||||||
|
Revision string `json:"revision,omitempty"`
|
||||||
|
TagList []string `json:"tag_list"`
|
||||||
|
Version string `json:"version,omitempty"`
|
||||||
|
AccessLevel string `json:"access_level"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListRunnersOptions represents the available ListRunners() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#list-owned-runners
|
||||||
|
type ListRunnersOptions struct {
|
||||||
|
ListOptions
|
||||||
|
Scope *string `url:"scope,omitempty" json:"scope,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListRunners gets a list of runners accessible by the authenticated user.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#list-owned-runners
|
||||||
|
func (s *RunnersService) ListRunners(opt *ListRunnersOptions, options ...OptionFunc) ([]*Runner, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "runners", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var rs []*Runner
|
||||||
|
resp, err := s.client.Do(req, &rs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return rs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListAllRunners gets a list of all runners in the GitLab instance. Access is
|
||||||
|
// restricted to users with admin privileges.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#list-all-runners
|
||||||
|
func (s *RunnersService) ListAllRunners(opt *ListRunnersOptions, options ...OptionFunc) ([]*Runner, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "runners/all", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var rs []*Runner
|
||||||
|
resp, err := s.client.Do(req, &rs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return rs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRunnerDetails returns details for given runner.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#get-runner-39-s-details
|
||||||
|
func (s *RunnersService) GetRunnerDetails(rid interface{}, options ...OptionFunc) (*RunnerDetails, *Response, error) {
|
||||||
|
runner, err := parseID(rid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("runners/%s", runner)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var rs *RunnerDetails
|
||||||
|
resp, err := s.client.Do(req, &rs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return rs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateRunnerDetailsOptions represents the available UpdateRunnerDetails() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#update-runner-39-s-details
|
||||||
|
type UpdateRunnerDetailsOptions struct {
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
Active *bool `url:"active,omitempty" json:"active,omitempty"`
|
||||||
|
TagList []string `url:"tag_list[],omitempty" json:"tag_list,omitempty"`
|
||||||
|
RunUntagged *bool `url:"run_untagged,omitempty" json:"run_untagged,omitempty"`
|
||||||
|
Locked *bool `url:"locked,omitempty" json:"locked,omitempty"`
|
||||||
|
AccessLevel *string `url:"access_level,omitempty" json:"access_level,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateRunnerDetails updates details for a given runner.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#update-runner-39-s-details
|
||||||
|
func (s *RunnersService) UpdateRunnerDetails(rid interface{}, opt *UpdateRunnerDetailsOptions, options ...OptionFunc) (*RunnerDetails, *Response, error) {
|
||||||
|
runner, err := parseID(rid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("runners/%s", runner)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var rs *RunnerDetails
|
||||||
|
resp, err := s.client.Do(req, &rs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return rs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveRunner removes a runner.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#remove-a-runner
|
||||||
|
func (s *RunnersService) RemoveRunner(rid interface{}, options ...OptionFunc) (*Response, error) {
|
||||||
|
runner, err := parseID(rid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("runners/%s", runner)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListRunnerJobsOptions represents the available ListRunnerJobs()
|
||||||
|
// options. Status can be one of: running, success, failed, canceled.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#list-runner-39-s-jobs
|
||||||
|
type ListRunnerJobsOptions struct {
|
||||||
|
ListOptions
|
||||||
|
Status *string `url:"status,omitempty" json:"status,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListRunnerJobs gets a list of jobs that are being processed or were processed by specified Runner.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#list-runner-39-s-jobs
|
||||||
|
func (s *RunnersService) ListRunnerJobs(rid interface{}, opt *ListRunnerJobsOptions, options ...OptionFunc) ([]*Job, *Response, error) {
|
||||||
|
runner, err := parseID(rid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("runners/%s/jobs", runner)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var rs []*Job
|
||||||
|
resp, err := s.client.Do(req, &rs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return rs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProjectRunnersOptions represents the available ListProjectRunners()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#list-project-s-runners
|
||||||
|
type ListProjectRunnersOptions ListRunnersOptions
|
||||||
|
|
||||||
|
// ListProjectRunners gets a list of runners accessible by the authenticated user.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#list-project-s-runners
|
||||||
|
func (s *RunnersService) ListProjectRunners(pid interface{}, opt *ListProjectRunnersOptions, options ...OptionFunc) ([]*Runner, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/runners", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var rs []*Runner
|
||||||
|
resp, err := s.client.Do(req, &rs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return rs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableProjectRunnerOptions represents the available EnableProjectRunner()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#enable-a-runner-in-project
|
||||||
|
type EnableProjectRunnerOptions struct {
|
||||||
|
RunnerID int `json:"runner_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableProjectRunner enables an available specific runner in the project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#enable-a-runner-in-project
|
||||||
|
func (s *RunnersService) EnableProjectRunner(pid interface{}, opt *EnableProjectRunnerOptions, options ...OptionFunc) (*Runner, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/runners", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var r *Runner
|
||||||
|
resp, err := s.client.Do(req, &r)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return r, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DisableProjectRunner disables a specific runner from project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/runners.html#disable-a-runner-from-project
|
||||||
|
func (s *RunnersService) DisableProjectRunner(pid interface{}, rid interface{}, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
runner, err := parseID(rid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/runners/%s", url.QueryEscape(project), url.QueryEscape(runner))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
326
vendor/github.com/xanzy/go-gitlab/search.go
generated
vendored
Normal file
326
vendor/github.com/xanzy/go-gitlab/search.go
generated
vendored
Normal file
@ -0,0 +1,326 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2018, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SearchService handles communication with the search related methods of the
|
||||||
|
// GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html
|
||||||
|
type SearchService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// SearchOptions represents the available options for all search methods.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html
|
||||||
|
type SearchOptions ListOptions
|
||||||
|
|
||||||
|
type searchOptions struct {
|
||||||
|
SearchOptions
|
||||||
|
Scope string `url:"scope" json:"scope"`
|
||||||
|
Search string `url:"search" json:"search"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Projects searches the expression within projects
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#scope-projects
|
||||||
|
func (s *SearchService) Projects(query string, opt *SearchOptions, options ...OptionFunc) ([]*Project, *Response, error) {
|
||||||
|
var ps []*Project
|
||||||
|
resp, err := s.search("projects", query, &ps, opt, options...)
|
||||||
|
return ps, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProjectsByGroup searches the expression within projects for
|
||||||
|
// the specified group
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#group-search-api
|
||||||
|
func (s *SearchService) ProjectsByGroup(gid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*Project, *Response, error) {
|
||||||
|
var ps []*Project
|
||||||
|
resp, err := s.searchByGroup(gid, "projects", query, &ps, opt, options...)
|
||||||
|
return ps, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Issues searches the expression within issues
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#scope-issues
|
||||||
|
func (s *SearchService) Issues(query string, opt *SearchOptions, options ...OptionFunc) ([]*Issue, *Response, error) {
|
||||||
|
var is []*Issue
|
||||||
|
resp, err := s.search("issues", query, &is, opt, options...)
|
||||||
|
return is, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// IssuesByGroup searches the expression within issues for
|
||||||
|
// the specified group
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#scope-issues
|
||||||
|
func (s *SearchService) IssuesByGroup(gid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*Issue, *Response, error) {
|
||||||
|
var is []*Issue
|
||||||
|
resp, err := s.searchByGroup(gid, "issues", query, &is, opt, options...)
|
||||||
|
return is, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// IssuesByProject searches the expression within issues for
|
||||||
|
// the specified project
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#scope-issues
|
||||||
|
func (s *SearchService) IssuesByProject(pid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*Issue, *Response, error) {
|
||||||
|
var is []*Issue
|
||||||
|
resp, err := s.searchByProject(pid, "issues", query, &is, opt, options...)
|
||||||
|
return is, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// MergeRequests searches the expression within merge requests
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/search.html#scope-merge_requests
|
||||||
|
func (s *SearchService) MergeRequests(query string, opt *SearchOptions, options ...OptionFunc) ([]*MergeRequest, *Response, error) {
|
||||||
|
var ms []*MergeRequest
|
||||||
|
resp, err := s.search("merge_requests", query, &ms, opt, options...)
|
||||||
|
return ms, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// MergeRequestsByGroup searches the expression within merge requests for
|
||||||
|
// the specified group
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/search.html#scope-merge_requests
|
||||||
|
func (s *SearchService) MergeRequestsByGroup(gid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*MergeRequest, *Response, error) {
|
||||||
|
var ms []*MergeRequest
|
||||||
|
resp, err := s.searchByGroup(gid, "merge_requests", query, &ms, opt, options...)
|
||||||
|
return ms, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// MergeRequestsByProject searches the expression within merge requests for
|
||||||
|
// the specified project
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/search.html#scope-merge_requests
|
||||||
|
func (s *SearchService) MergeRequestsByProject(pid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*MergeRequest, *Response, error) {
|
||||||
|
var ms []*MergeRequest
|
||||||
|
resp, err := s.searchByProject(pid, "merge_requests", query, &ms, opt, options...)
|
||||||
|
return ms, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Milestones searches the expression within milestones
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#scope-milestones
|
||||||
|
func (s *SearchService) Milestones(query string, opt *SearchOptions, options ...OptionFunc) ([]*Milestone, *Response, error) {
|
||||||
|
var ms []*Milestone
|
||||||
|
resp, err := s.search("milestones", query, &ms, opt, options...)
|
||||||
|
return ms, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// MilestonesByGroup searches the expression within milestones for
|
||||||
|
// the specified group
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#scope-milestones
|
||||||
|
func (s *SearchService) MilestonesByGroup(gid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*Milestone, *Response, error) {
|
||||||
|
var ms []*Milestone
|
||||||
|
resp, err := s.searchByGroup(gid, "milestones", query, &ms, opt, options...)
|
||||||
|
return ms, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// MilestonesByProject searches the expression within milestones for
|
||||||
|
// the specified project
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#scope-milestones
|
||||||
|
func (s *SearchService) MilestonesByProject(pid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*Milestone, *Response, error) {
|
||||||
|
var ms []*Milestone
|
||||||
|
resp, err := s.searchByProject(pid, "milestones", query, &ms, opt, options...)
|
||||||
|
return ms, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// SnippetTitles searches the expression within snippet titles
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/search.html#scope-snippet_titles
|
||||||
|
func (s *SearchService) SnippetTitles(query string, opt *SearchOptions, options ...OptionFunc) ([]*Snippet, *Response, error) {
|
||||||
|
var ss []*Snippet
|
||||||
|
resp, err := s.search("snippet_titles", query, &ss, opt, options...)
|
||||||
|
return ss, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// SnippetBlobs searches the expression within snippet blobs
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/search.html#scope-snippet_blobs
|
||||||
|
func (s *SearchService) SnippetBlobs(query string, opt *SearchOptions, options ...OptionFunc) ([]*Snippet, *Response, error) {
|
||||||
|
var ss []*Snippet
|
||||||
|
resp, err := s.search("snippet_blobs", query, &ss, opt, options...)
|
||||||
|
return ss, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// NotesByProject searches the expression within notes for the specified
|
||||||
|
// project
|
||||||
|
//
|
||||||
|
// GitLab API docs: // https://docs.gitlab.com/ce/api/search.html#scope-notes
|
||||||
|
func (s *SearchService) NotesByProject(pid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*Note, *Response, error) {
|
||||||
|
var ns []*Note
|
||||||
|
resp, err := s.searchByProject(pid, "notes", query, &ns, opt, options...)
|
||||||
|
return ns, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// WikiBlobs searches the expression within all wiki blobs
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/search.html#scope-wiki_blobs
|
||||||
|
func (s *SearchService) WikiBlobs(query string, opt *SearchOptions, options ...OptionFunc) ([]*Wiki, *Response, error) {
|
||||||
|
var ws []*Wiki
|
||||||
|
resp, err := s.search("wiki_blobs", query, &ws, opt, options...)
|
||||||
|
return ws, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// WikiBlobsByGroup searches the expression within wiki blobs for
|
||||||
|
// specified group
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/search.html#scope-wiki_blobs
|
||||||
|
func (s *SearchService) WikiBlobsByGroup(gid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*Wiki, *Response, error) {
|
||||||
|
var ws []*Wiki
|
||||||
|
resp, err := s.searchByGroup(gid, "wiki_blobs", query, &ws, opt, options...)
|
||||||
|
return ws, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// WikiBlobsByProject searches the expression within wiki blobs for
|
||||||
|
// the specified project
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/search.html#scope-wiki_blobs
|
||||||
|
func (s *SearchService) WikiBlobsByProject(pid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*Wiki, *Response, error) {
|
||||||
|
var ws []*Wiki
|
||||||
|
resp, err := s.searchByProject(pid, "wiki_blobs", query, &ws, opt, options...)
|
||||||
|
return ws, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commits searches the expression within all commits
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#scope-commits
|
||||||
|
func (s *SearchService) Commits(query string, opt *SearchOptions, options ...OptionFunc) ([]*Commit, *Response, error) {
|
||||||
|
var cs []*Commit
|
||||||
|
resp, err := s.search("commits", query, &cs, opt, options...)
|
||||||
|
return cs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommitsByGroup searches the expression within commits for the specified
|
||||||
|
// group
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#scope-commits
|
||||||
|
func (s *SearchService) CommitsByGroup(gid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*Commit, *Response, error) {
|
||||||
|
var cs []*Commit
|
||||||
|
resp, err := s.searchByGroup(gid, "commits", query, &cs, opt, options...)
|
||||||
|
return cs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommitsByProject searches the expression within commits for the
|
||||||
|
// specified project
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#scope-commits
|
||||||
|
func (s *SearchService) CommitsByProject(pid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*Commit, *Response, error) {
|
||||||
|
var cs []*Commit
|
||||||
|
resp, err := s.searchByProject(pid, "commits", query, &cs, opt, options...)
|
||||||
|
return cs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Blob represents a single blob.
|
||||||
|
type Blob struct {
|
||||||
|
Basename string `json:"basename"`
|
||||||
|
Data string `json:"data"`
|
||||||
|
Filename string `json:"filename"`
|
||||||
|
ID int `json:"id"`
|
||||||
|
Ref string `json:"ref"`
|
||||||
|
Startline int `json:"startline"`
|
||||||
|
ProjectID int `json:"project_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Blobs searches the expression within all blobs
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#scope-blobs
|
||||||
|
func (s *SearchService) Blobs(query string, opt *SearchOptions, options ...OptionFunc) ([]*Blob, *Response, error) {
|
||||||
|
var bs []*Blob
|
||||||
|
resp, err := s.search("blobs", query, &bs, opt, options...)
|
||||||
|
return bs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// BlobsByGroup searches the expression within blobs for the specified
|
||||||
|
// group
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#scope-blobs
|
||||||
|
func (s *SearchService) BlobsByGroup(gid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*Blob, *Response, error) {
|
||||||
|
var bs []*Blob
|
||||||
|
resp, err := s.searchByGroup(gid, "blobs", query, &bs, opt, options...)
|
||||||
|
return bs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// BlobsByProject searches the expression within blobs for the specified
|
||||||
|
// project
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/search.html#scope-blobs
|
||||||
|
func (s *SearchService) BlobsByProject(pid interface{}, query string, opt *SearchOptions, options ...OptionFunc) ([]*Blob, *Response, error) {
|
||||||
|
var bs []*Blob
|
||||||
|
resp, err := s.searchByProject(pid, "blobs", query, &bs, opt, options...)
|
||||||
|
return bs, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SearchService) search(scope, query string, result interface{}, opt *SearchOptions, options ...OptionFunc) (*Response, error) {
|
||||||
|
opts := &searchOptions{SearchOptions: *opt, Scope: scope, Search: query}
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", "search", opts, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SearchService) searchByGroup(gid interface{}, scope, query string, result interface{}, opt *SearchOptions, options ...OptionFunc) (*Response, error) {
|
||||||
|
group, err := parseID(gid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("groups/%s/-/search", url.QueryEscape(group))
|
||||||
|
|
||||||
|
opts := &searchOptions{SearchOptions: *opt, Scope: scope, Search: query}
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opts, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SearchService) searchByProject(pid interface{}, scope, query string, result interface{}, opt *SearchOptions, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/-/search", url.QueryEscape(project))
|
||||||
|
|
||||||
|
opts := &searchOptions{SearchOptions: *opt, Scope: scope, Search: query}
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opts, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, result)
|
||||||
|
}
|
515
vendor/github.com/xanzy/go-gitlab/services.go
generated
vendored
Normal file
515
vendor/github.com/xanzy/go-gitlab/services.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
78
vendor/github.com/xanzy/go-gitlab/session.go
generated
vendored
Normal file
78
vendor/github.com/xanzy/go-gitlab/session.go
generated
vendored
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
// SessionService handles communication with the session related methods of
|
||||||
|
// the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/session.html
|
||||||
|
type SessionService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Session represents a GitLab session.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/session.html#session
|
||||||
|
type Session struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
PrivateToken string `json:"private_token"`
|
||||||
|
Blocked bool `json:"blocked"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
Bio interface{} `json:"bio"`
|
||||||
|
Skype string `json:"skype"`
|
||||||
|
Linkedin string `json:"linkedin"`
|
||||||
|
Twitter string `json:"twitter"`
|
||||||
|
WebsiteURL string `json:"website_url"`
|
||||||
|
DarkScheme bool `json:"dark_scheme"`
|
||||||
|
ThemeID int `json:"theme_id"`
|
||||||
|
IsAdmin bool `json:"is_admin"`
|
||||||
|
CanCreateGroup bool `json:"can_create_group"`
|
||||||
|
CanCreateTeam bool `json:"can_create_team"`
|
||||||
|
CanCreateProject bool `json:"can_create_project"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSessionOptions represents the available Session() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/session.html#session
|
||||||
|
type GetSessionOptions struct {
|
||||||
|
Login *string `url:"login,omitempty" json:"login,omitempty"`
|
||||||
|
Email *string `url:"email,omitempty" json:"email,omitempty"`
|
||||||
|
Password *string `url:"password,omitempty" json:"password,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSession logs in to get private token.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/session.html#session
|
||||||
|
func (s *SessionService) GetSession(opt *GetSessionOptions, options ...OptionFunc) (*Session, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("POST", "session", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
session := new(Session)
|
||||||
|
resp, err := s.client.Do(req, session)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return session, resp, err
|
||||||
|
}
|
265
vendor/github.com/xanzy/go-gitlab/settings.go
generated
vendored
Normal file
265
vendor/github.com/xanzy/go-gitlab/settings.go
generated
vendored
Normal file
@ -0,0 +1,265 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
// SettingsService handles communication with the application SettingsService
|
||||||
|
// related methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/settings.html
|
||||||
|
type SettingsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Settings represents the GitLab application settings.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/settings.html
|
||||||
|
type Settings struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
UpdatedAt *time.Time `json:"updated_at"`
|
||||||
|
AdminNotificationEmail string `json:"admin_notification_email"`
|
||||||
|
AfterSignOutPath string `json:"after_sign_out_path"`
|
||||||
|
AfterSignUpText string `json:"after_sign_up_text"`
|
||||||
|
AkismetAPIKey string `json:"akismet_api_key"`
|
||||||
|
AkismetEnabled bool `json:"akismet_enabled"`
|
||||||
|
CircuitbreakerAccessRetries int `json:"circuitbreaker_access_retries"`
|
||||||
|
CircuitbreakerBackoffThreshold int `json:"circuitbreaker_backoff_threshold"`
|
||||||
|
CircuitbreakerFailureCountThreshold int `json:"circuitbreaker_failure_count_threshold"`
|
||||||
|
CircuitbreakerFailureResetTime int `json:"circuitbreaker_failure_reset_time"`
|
||||||
|
CircuitbreakerFailureWaitTime int `json:"circuitbreaker_failure_wait_time"`
|
||||||
|
CircuitbreakerStorageTimeout int `json:"circuitbreaker_storage_timeout"`
|
||||||
|
ClientsideSentryDSN string `json:"clientside_sentry_dsn"`
|
||||||
|
ClientsideSentryEnabled bool `json:"clientside_sentry_enabled"`
|
||||||
|
ContainerRegistryTokenExpireDelay int `json:"container_registry_token_expire_delay"`
|
||||||
|
DefaultArtifactsExpireIn string `json:"default_artifacts_expire_in"`
|
||||||
|
DefaultBranchProtection int `json:"default_branch_protection"`
|
||||||
|
DefaultGroupVisibility string `json:"default_group_visibility"`
|
||||||
|
DefaultProjectVisibility string `json:"default_project_visibility"`
|
||||||
|
DefaultProjectsLimit int `json:"default_projects_limit"`
|
||||||
|
DefaultSnippetVisibility string `json:"default_snippet_visibility"`
|
||||||
|
DisabledOauthSignInSources []string `json:"disabled_oauth_sign_in_sources"`
|
||||||
|
DomainBlacklistEnabled bool `json:"domain_blacklist_enabled"`
|
||||||
|
DomainBlacklist []string `json:"domain_blacklist"`
|
||||||
|
DomainWhitelist []string `json:"domain_whitelist"`
|
||||||
|
DSAKeyRestriction int `json:"dsa_key_restriction"`
|
||||||
|
ECDSAKeyRestriction int `json:"ecdsa_key_restriction"`
|
||||||
|
Ed25519KeyRestriction int `json:"ed25519_key_restriction"`
|
||||||
|
EmailAuthorInBody bool `json:"email_author_in_body"`
|
||||||
|
EnabledGitAccessProtocol string `json:"enabled_git_access_protocol"`
|
||||||
|
GravatarEnabled bool `json:"gravatar_enabled"`
|
||||||
|
HelpPageHideCommercialContent bool `json:"help_page_hide_commercial_content"`
|
||||||
|
HelpPageSupportURL string `json:"help_page_support_url"`
|
||||||
|
HomePageURL string `json:"home_page_url"`
|
||||||
|
HousekeepingBitmapsEnabled bool `json:"housekeeping_bitmaps_enabled"`
|
||||||
|
HousekeepingEnabled bool `json:"housekeeping_enabled"`
|
||||||
|
HousekeepingFullRepackPeriod int `json:"housekeeping_full_repack_period"`
|
||||||
|
HousekeepingGcPeriod int `json:"housekeeping_gc_period"`
|
||||||
|
HousekeepingIncrementalRepackPeriod int `json:"housekeeping_incremental_repack_period"`
|
||||||
|
HTMLEmailsEnabled bool `json:"html_emails_enabled"`
|
||||||
|
ImportSources []string `json:"import_sources"`
|
||||||
|
KodingEnabled bool `json:"koding_enabled"`
|
||||||
|
KodingURL string `json:"koding_url"`
|
||||||
|
MaxArtifactsSize int `json:"max_artifacts_size"`
|
||||||
|
MaxAttachmentSize int `json:"max_attachment_size"`
|
||||||
|
MaxPagesSize int `json:"max_pages_size"`
|
||||||
|
MetricsEnabled bool `json:"metrics_enabled"`
|
||||||
|
MetricsHost string `json:"metrics_host"`
|
||||||
|
MetricsMethodCallThreshold int `json:"metrics_method_call_threshold"`
|
||||||
|
MetricsPacketSize int `json:"metrics_packet_size"`
|
||||||
|
MetricsPoolSize int `json:"metrics_pool_size"`
|
||||||
|
MetricsPort int `json:"metrics_port"`
|
||||||
|
MetricsSampleInterval int `json:"metrics_sample_interval"`
|
||||||
|
MetricsTimeout int `json:"metrics_timeout"`
|
||||||
|
PasswordAuthenticationEnabledForWeb bool `json:"password_authentication_enabled_for_web"`
|
||||||
|
PasswordAuthenticationEnabledForGit bool `json:"password_authentication_enabled_for_git"`
|
||||||
|
PerformanceBarAllowedGroupID string `json:"performance_bar_allowed_group_id"`
|
||||||
|
PerformanceBarEnabled bool `json:"performance_bar_enabled"`
|
||||||
|
PlantumlEnabled bool `json:"plantuml_enabled"`
|
||||||
|
PlantumlURL string `json:"plantuml_url"`
|
||||||
|
PollingIntervalMultiplier float64 `json:"polling_interval_multiplier"`
|
||||||
|
ProjectExportEnabled bool `json:"project_export_enabled"`
|
||||||
|
PrometheusMetricsEnabled bool `json:"prometheus_metrics_enabled"`
|
||||||
|
RecaptchaEnabled bool `json:"recaptcha_enabled"`
|
||||||
|
RecaptchaPrivateKey string `json:"recaptcha_private_key"`
|
||||||
|
RecaptchaSiteKey string `json:"recaptcha_site_key"`
|
||||||
|
RepositoryChecksEnabled bool `json:"repository_checks_enabled"`
|
||||||
|
RepositoryStorages []string `json:"repository_storages"`
|
||||||
|
RequireTwoFactorAuthentication bool `json:"require_two_factor_authentication"`
|
||||||
|
RestrictedVisibilityLevels []VisibilityValue `json:"restricted_visibility_levels"`
|
||||||
|
RsaKeyRestriction int `json:"rsa_key_restriction"`
|
||||||
|
SendUserConfirmationEmail bool `json:"send_user_confirmation_email"`
|
||||||
|
SentryDSN string `json:"sentry_dsn"`
|
||||||
|
SentryEnabled bool `json:"sentry_enabled"`
|
||||||
|
SessionExpireDelay int `json:"session_expire_delay"`
|
||||||
|
SharedRunnersEnabled bool `json:"shared_runners_enabled"`
|
||||||
|
SharedRunnersText string `json:"shared_runners_text"`
|
||||||
|
SidekiqThrottlingEnabled bool `json:"sidekiq_throttling_enabled"`
|
||||||
|
SidekiqThrottlingFactor float64 `json:"sidekiq_throttling_factor"`
|
||||||
|
SidekiqThrottlingQueues []string `json:"sidekiq_throttling_queues"`
|
||||||
|
SignInText string `json:"sign_in_text"`
|
||||||
|
SignupEnabled bool `json:"signup_enabled"`
|
||||||
|
TerminalMaxSessionTime int `json:"terminal_max_session_time"`
|
||||||
|
TwoFactorGracePeriod int `json:"two_factor_grace_period"`
|
||||||
|
UniqueIPsLimitEnabled bool `json:"unique_ips_limit_enabled"`
|
||||||
|
UniqueIPsLimitPerUser int `json:"unique_ips_limit_per_user"`
|
||||||
|
UniqueIPsLimitTimeWindow int `json:"unique_ips_limit_time_window"`
|
||||||
|
UsagePingEnabled bool `json:"usage_ping_enabled"`
|
||||||
|
UserDefaultExternal bool `json:"user_default_external"`
|
||||||
|
UserOauthApplications bool `json:"user_oauth_applications"`
|
||||||
|
VersionCheckEnabled bool `json:"version_check_enabled"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s Settings) String() string {
|
||||||
|
return Stringify(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSettings gets the current application settings.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/settings.html#get-current-application.settings
|
||||||
|
func (s *SettingsService) GetSettings(options ...OptionFunc) (*Settings, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "application/settings", nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
as := new(Settings)
|
||||||
|
resp, err := s.client.Do(req, as)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return as, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateSettingsOptions represents the available UpdateSettings() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/settings.html#change-application.settings
|
||||||
|
type UpdateSettingsOptions struct {
|
||||||
|
AdminNotificationEmail *string `url:"admin_notification_email,omitempty" json:"admin_notification_email,omitempty"`
|
||||||
|
AfterSignOutPath *string `url:"after_sign_out_path,omitempty" json:"after_sign_out_path,omitempty"`
|
||||||
|
AfterSignUpText *string `url:"after_sign_up_text,omitempty" json:"after_sign_up_text,omitempty"`
|
||||||
|
AkismetAPIKey *string `url:"akismet_api_key,omitempty" json:"akismet_api_key,omitempty"`
|
||||||
|
AkismetEnabled *bool `url:"akismet_enabled,omitempty" json:"akismet_enabled,omitempty"`
|
||||||
|
CircuitbreakerAccessRetries *int `url:"circuitbreaker_access_retries,omitempty" json:"circuitbreaker_access_retries,omitempty"`
|
||||||
|
CircuitbreakerBackoffThreshold *int `url:"circuitbreaker_backoff_threshold,omitempty" json:"circuitbreaker_backoff_threshold,omitempty"`
|
||||||
|
CircuitbreakerFailureCountThreshold *int `url:"circuitbreaker_failure_count_threshold,omitempty" json:"circuitbreaker_failure_count_threshold,omitempty"`
|
||||||
|
CircuitbreakerFailureResetTime *int `url:"circuitbreaker_failure_reset_time,omitempty" json:"circuitbreaker_failure_reset_time,omitempty"`
|
||||||
|
CircuitbreakerFailureWaitTime *int `url:"circuitbreaker_failure_wait_time,omitempty" json:"circuitbreaker_failure_wait_time,omitempty"`
|
||||||
|
CircuitbreakerStorageTimeout *int `url:"circuitbreaker_storage_timeout,omitempty" json:"circuitbreaker_storage_timeout,omitempty"`
|
||||||
|
ClientsideSentryDSN *string `url:"clientside_sentry_dsn,omitempty" json:"clientside_sentry_dsn,omitempty"`
|
||||||
|
ClientsideSentryEnabled *bool `url:"clientside_sentry_enabled,omitempty" json:"clientside_sentry_enabled,omitempty"`
|
||||||
|
ContainerRegistryTokenExpireDelay *int `url:"container_registry_token_expire_delay,omitempty" json:"container_registry_token_expire_delay,omitempty"`
|
||||||
|
DefaultArtifactsExpireIn *string `url:"default_artifacts_expire_in,omitempty" json:"default_artifacts_expire_in,omitempty"`
|
||||||
|
DefaultBranchProtection *int `url:"default_branch_protection,omitempty" json:"default_branch_protection,omitempty"`
|
||||||
|
DefaultGroupVisibility *string `url:"default_group_visibility,omitempty" json:"default_group_visibility,omitempty"`
|
||||||
|
DefaultProjectVisibility *string `url:"default_project_visibility,omitempty" json:"default_project_visibility,omitempty"`
|
||||||
|
DefaultProjectsLimit *int `url:"default_projects_limit,omitempty" json:"default_projects_limit,omitempty"`
|
||||||
|
DefaultSnippetVisibility *string `url:"default_snippet_visibility,omitempty" json:"default_snippet_visibility,omitempty"`
|
||||||
|
DisabledOauthSignInSources []string `url:"disabled_oauth_sign_in_sources,omitempty" json:"disabled_oauth_sign_in_sources,omitempty"`
|
||||||
|
DomainBlacklistEnabled *bool `url:"domain_blacklist_enabled,omitempty" json:"domain_blacklist_enabled,omitempty"`
|
||||||
|
DomainBlacklist []string `url:"domain_blacklist,omitempty" json:"domain_blacklist,omitempty"`
|
||||||
|
DomainWhitelist []string `url:"domain_whitelist,omitempty" json:"domain_whitelist,omitempty"`
|
||||||
|
DSAKeyRestriction *int `url:"dsa_key_restriction,omitempty" json:"dsa_key_restriction,omitempty"`
|
||||||
|
ECDSAKeyRestriction *int `url:"ecdsa_key_restriction,omitempty" json:"ecdsa_key_restriction,omitempty"`
|
||||||
|
Ed25519KeyRestriction *int `url:"ed25519_key_restriction,omitempty" json:"ed25519_key_restriction,omitempty"`
|
||||||
|
EmailAuthorInBody *bool `url:"email_author_in_body,omitempty" json:"email_author_in_body,omitempty"`
|
||||||
|
EnabledGitAccessProtocol *string `url:"enabled_git_access_protocol,omitempty" json:"enabled_git_access_protocol,omitempty"`
|
||||||
|
GravatarEnabled *bool `url:"gravatar_enabled,omitempty" json:"gravatar_enabled,omitempty"`
|
||||||
|
HelpPageHideCommercialContent *bool `url:"help_page_hide_commercial_content,omitempty" json:"help_page_hide_commercial_content,omitempty"`
|
||||||
|
HelpPageSupportURL *string `url:"help_page_support_url,omitempty" json:"help_page_support_url,omitempty"`
|
||||||
|
HomePageURL *string `url:"home_page_url,omitempty" json:"home_page_url,omitempty"`
|
||||||
|
HousekeepingBitmapsEnabled *bool `url:"housekeeping_bitmaps_enabled,omitempty" json:"housekeeping_bitmaps_enabled,omitempty"`
|
||||||
|
HousekeepingEnabled *bool `url:"housekeeping_enabled,omitempty" json:"housekeeping_enabled,omitempty"`
|
||||||
|
HousekeepingFullRepackPeriod *int `url:"housekeeping_full_repack_period,omitempty" json:"housekeeping_full_repack_period,omitempty"`
|
||||||
|
HousekeepingGcPeriod *int `url:"housekeeping_gc_period,omitempty" json:"housekeeping_gc_period,omitempty"`
|
||||||
|
HousekeepingIncrementalRepackPeriod *int `url:"housekeeping_incremental_repack_period,omitempty" json:"housekeeping_incremental_repack_period,omitempty"`
|
||||||
|
HTMLEmailsEnabled *bool `url:"html_emails_enabled,omitempty" json:"html_emails_enabled,omitempty"`
|
||||||
|
ImportSources []string `url:"import_sources,omitempty" json:"import_sources,omitempty"`
|
||||||
|
KodingEnabled *bool `url:"koding_enabled,omitempty" json:"koding_enabled,omitempty"`
|
||||||
|
KodingURL *string `url:"koding_url,omitempty" json:"koding_url,omitempty"`
|
||||||
|
MaxArtifactsSize *int `url:"max_artifacts_size,omitempty" json:"max_artifacts_size,omitempty"`
|
||||||
|
MaxAttachmentSize *int `url:"max_attachment_size,omitempty" json:"max_attachment_size,omitempty"`
|
||||||
|
MaxPagesSize *int `url:"max_pages_size,omitempty" json:"max_pages_size,omitempty"`
|
||||||
|
MetricsEnabled *bool `url:"metrics_enabled,omitempty" json:"metrics_enabled,omitempty"`
|
||||||
|
MetricsHost *string `url:"metrics_host,omitempty" json:"metrics_host,omitempty"`
|
||||||
|
MetricsMethodCallThreshold *int `url:"metrics_method_call_threshold,omitempty" json:"metrics_method_call_threshold,omitempty"`
|
||||||
|
MetricsPacketSize *int `url:"metrics_packet_size,omitempty" json:"metrics_packet_size,omitempty"`
|
||||||
|
MetricsPoolSize *int `url:"metrics_pool_size,omitempty" json:"metrics_pool_size,omitempty"`
|
||||||
|
MetricsPort *int `url:"metrics_port,omitempty" json:"metrics_port,omitempty"`
|
||||||
|
MetricsSampleInterval *int `url:"metrics_sample_interval,omitempty" json:"metrics_sample_interval,omitempty"`
|
||||||
|
MetricsTimeout *int `url:"metrics_timeout,omitempty" json:"metrics_timeout,omitempty"`
|
||||||
|
PasswordAuthenticationEnabledForWeb *bool `url:"password_authentication_enabled_for_web,omitempty" json:"password_authentication_enabled_for_web,omitempty"`
|
||||||
|
PasswordAuthenticationEnabledForGit *bool `url:"password_authentication_enabled_for_git,omitempty" json:"password_authentication_enabled_for_git,omitempty"`
|
||||||
|
PerformanceBarAllowedGroupID *string `url:"performance_bar_allowed_group_id,omitempty" json:"performance_bar_allowed_group_id,omitempty"`
|
||||||
|
PerformanceBarEnabled *bool `url:"performance_bar_enabled,omitempty" json:"performance_bar_enabled,omitempty"`
|
||||||
|
PlantumlEnabled *bool `url:"plantuml_enabled,omitempty" json:"plantuml_enabled,omitempty"`
|
||||||
|
PlantumlURL *string `url:"plantuml_url,omitempty" json:"plantuml_url,omitempty"`
|
||||||
|
PollingIntervalMultiplier *float64 `url:"polling_interval_multiplier,omitempty" json:"polling_interval_multiplier,omitempty"`
|
||||||
|
ProjectExportEnabled *bool `url:"project_export_enabled,omitempty" json:"project_export_enabled,omitempty"`
|
||||||
|
PrometheusMetricsEnabled *bool `url:"prometheus_metrics_enabled,omitempty" json:"prometheus_metrics_enabled,omitempty"`
|
||||||
|
RecaptchaEnabled *bool `url:"recaptcha_enabled,omitempty" json:"recaptcha_enabled,omitempty"`
|
||||||
|
RecaptchaPrivateKey *string `url:"recaptcha_private_key,omitempty" json:"recaptcha_private_key,omitempty"`
|
||||||
|
RecaptchaSiteKey *string `url:"recaptcha_site_key,omitempty" json:"recaptcha_site_key,omitempty"`
|
||||||
|
RepositoryChecksEnabled *bool `url:"repository_checks_enabled,omitempty" json:"repository_checks_enabled,omitempty"`
|
||||||
|
RepositoryStorages []string `url:"repository_storages,omitempty" json:"repository_storages,omitempty"`
|
||||||
|
RequireTwoFactorAuthentication *bool `url:"require_two_factor_authentication,omitempty" json:"require_two_factor_authentication,omitempty"`
|
||||||
|
RestrictedVisibilityLevels []VisibilityValue `url:"restricted_visibility_levels,omitempty" json:"restricted_visibility_levels,omitempty"`
|
||||||
|
RsaKeyRestriction *int `url:"rsa_key_restriction,omitempty" json:"rsa_key_restriction,omitempty"`
|
||||||
|
SendUserConfirmationEmail *bool `url:"send_user_confirmation_email,omitempty" json:"send_user_confirmation_email,omitempty"`
|
||||||
|
SentryDSN *string `url:"sentry_dsn,omitempty" json:"sentry_dsn,omitempty"`
|
||||||
|
SentryEnabled *bool `url:"sentry_enabled,omitempty" json:"sentry_enabled,omitempty"`
|
||||||
|
SessionExpireDelay *int `url:"session_expire_delay,omitempty" json:"session_expire_delay,omitempty"`
|
||||||
|
SharedRunnersEnabled *bool `url:"shared_runners_enabled,omitempty" json:"shared_runners_enabled,omitempty"`
|
||||||
|
SharedRunnersText *string `url:"shared_runners_text,omitempty" json:"shared_runners_text,omitempty"`
|
||||||
|
SidekiqThrottlingEnabled *bool `url:"sidekiq_throttling_enabled,omitempty" json:"sidekiq_throttling_enabled,omitempty"`
|
||||||
|
SidekiqThrottlingFactor *float64 `url:"sidekiq_throttling_factor,omitempty" json:"sidekiq_throttling_factor,omitempty"`
|
||||||
|
SidekiqThrottlingQueues []string `url:"sidekiq_throttling_queues,omitempty" json:"sidekiq_throttling_queues,omitempty"`
|
||||||
|
SignInText *string `url:"sign_in_text,omitempty" json:"sign_in_text,omitempty"`
|
||||||
|
SignupEnabled *bool `url:"signup_enabled,omitempty" json:"signup_enabled,omitempty"`
|
||||||
|
TerminalMaxSessionTime *int `url:"terminal_max_session_time,omitempty" json:"terminal_max_session_time,omitempty"`
|
||||||
|
TwoFactorGracePeriod *int `url:"two_factor_grace_period,omitempty" json:"two_factor_grace_period,omitempty"`
|
||||||
|
UniqueIPsLimitEnabled *bool `url:"unique_ips_limit_enabled,omitempty" json:"unique_ips_limit_enabled,omitempty"`
|
||||||
|
UniqueIPsLimitPerUser *int `url:"unique_ips_limit_per_user,omitempty" json:"unique_ips_limit_per_user,omitempty"`
|
||||||
|
UniqueIPsLimitTimeWindow *int `url:"unique_ips_limit_time_window,omitempty" json:"unique_ips_limit_time_window,omitempty"`
|
||||||
|
UsagePingEnabled *bool `url:"usage_ping_enabled,omitempty" json:"usage_ping_enabled,omitempty"`
|
||||||
|
UserDefaultExternal *bool `url:"user_default_external,omitempty" json:"user_default_external,omitempty"`
|
||||||
|
UserOauthApplications *bool `url:"user_oauth_applications,omitempty" json:"user_oauth_applications,omitempty"`
|
||||||
|
VersionCheckEnabled *bool `url:"version_check_enabled,omitempty" json:"version_check_enabled,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateSettings updates the application settings.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/settings.html#change-application.settings
|
||||||
|
func (s *SettingsService) UpdateSettings(opt *UpdateSettingsOptions, options ...OptionFunc) (*Settings, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("PUT", "application/settings", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
as := new(Settings)
|
||||||
|
resp, err := s.client.Do(req, as)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return as, resp, err
|
||||||
|
}
|
154
vendor/github.com/xanzy/go-gitlab/sidekiq_metrics.go
generated
vendored
Normal file
154
vendor/github.com/xanzy/go-gitlab/sidekiq_metrics.go
generated
vendored
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2018, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
// SidekiqService handles communication with the sidekiq service
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/sidekiq_metrics.html
|
||||||
|
type SidekiqService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueueMetrics represents the GitLab sidekiq queue metrics.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/sidekiq_metrics.html#get-the-current-queue-metrics
|
||||||
|
type QueueMetrics struct {
|
||||||
|
Queues map[string]struct {
|
||||||
|
Backlog int `json:"backlog"`
|
||||||
|
Latency int `json:"latency"`
|
||||||
|
} `json:"queues"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetQueueMetrics lists information about all the registered queues,
|
||||||
|
// their backlog and their latency.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/sidekiq_metrics.html#get-the-current-queue-metrics
|
||||||
|
func (s *SidekiqService) GetQueueMetrics(options ...OptionFunc) (*QueueMetrics, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "/sidekiq/queue_metrics", nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
q := new(QueueMetrics)
|
||||||
|
resp, err := s.client.Do(req, q)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return q, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProcessMetrics represents the GitLab sidekiq process metrics.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/sidekiq_metrics.html#get-the-current-process-metrics
|
||||||
|
type ProcessMetrics struct {
|
||||||
|
Processes []struct {
|
||||||
|
Hostname string `json:"hostname"`
|
||||||
|
Pid int `json:"pid"`
|
||||||
|
Tag string `json:"tag"`
|
||||||
|
StartedAt *time.Time `json:"started_at"`
|
||||||
|
Queues []string `json:"queues"`
|
||||||
|
Labels []string `json:"labels"`
|
||||||
|
Concurrency int `json:"concurrency"`
|
||||||
|
Busy int `json:"busy"`
|
||||||
|
} `json:"processes"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetProcessMetrics lists information about all the Sidekiq workers registered
|
||||||
|
// to process your queues.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/sidekiq_metrics.html#get-the-current-process-metrics
|
||||||
|
func (s *SidekiqService) GetProcessMetrics(options ...OptionFunc) (*ProcessMetrics, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "/sidekiq/process_metrics", nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
p := new(ProcessMetrics)
|
||||||
|
resp, err := s.client.Do(req, p)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// JobStats represents the GitLab sidekiq job stats.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/sidekiq_metrics.html#get-the-current-job-statistics
|
||||||
|
type JobStats struct {
|
||||||
|
Jobs struct {
|
||||||
|
Processed int `json:"processed"`
|
||||||
|
Failed int `json:"failed"`
|
||||||
|
Enqueued int `json:"enqueued"`
|
||||||
|
} `json:"jobs"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetJobStats list information about the jobs that Sidekiq has performed.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/sidekiq_metrics.html#get-the-current-job-statistics
|
||||||
|
func (s *SidekiqService) GetJobStats(options ...OptionFunc) (*JobStats, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "/sidekiq/job_stats", nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
j := new(JobStats)
|
||||||
|
resp, err := s.client.Do(req, j)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return j, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CompoundMetrics represents the GitLab sidekiq compounded stats.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/sidekiq_metrics.html#get-a-compound-response-of-all-the-previously-mentioned-metrics
|
||||||
|
type CompoundMetrics struct {
|
||||||
|
QueueMetrics
|
||||||
|
ProcessMetrics
|
||||||
|
JobStats
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCompoundMetrics lists all the currently available information about Sidekiq.
|
||||||
|
// Get a compound response of all the previously mentioned metrics
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/sidekiq_metrics.html#get-the-current-job-statistics
|
||||||
|
func (s *SidekiqService) GetCompoundMetrics(options ...OptionFunc) (*CompoundMetrics, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "/sidekiq/compound_metrics", nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
c := new(CompoundMetrics)
|
||||||
|
resp, err := s.client.Do(req, c)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return c, resp, err
|
||||||
|
}
|
230
vendor/github.com/xanzy/go-gitlab/snippets.go
generated
vendored
Normal file
230
vendor/github.com/xanzy/go-gitlab/snippets.go
generated
vendored
Normal file
@ -0,0 +1,230 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SnippetsService handles communication with the snippets
|
||||||
|
// related methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/snippets.html
|
||||||
|
type SnippetsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Snippet represents a GitLab snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/snippets.html
|
||||||
|
type Snippet struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
FileName string `json:"file_name"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Author struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
State string `json:"state"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
} `json:"author"`
|
||||||
|
UpdatedAt *time.Time `json:"updated_at"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
RawURL string `json:"raw_url"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s Snippet) String() string {
|
||||||
|
return Stringify(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListSnippetsOptions represents the available ListSnippets() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/snippets.html#list-snippets
|
||||||
|
type ListSnippetsOptions ListOptions
|
||||||
|
|
||||||
|
// ListSnippets gets a list of snippets.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/snippets.html#list-snippets
|
||||||
|
func (s *SnippetsService) ListSnippets(opt *ListSnippetsOptions, options ...OptionFunc) ([]*Snippet, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "snippets", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var ps []*Snippet
|
||||||
|
resp, err := s.client.Do(req, &ps)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ps, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSnippet gets a single snippet
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/snippets.html#single-snippet
|
||||||
|
func (s *SnippetsService) GetSnippet(snippet int, options ...OptionFunc) (*Snippet, *Response, error) {
|
||||||
|
u := fmt.Sprintf("snippets/%d", snippet)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ps := new(Snippet)
|
||||||
|
resp, err := s.client.Do(req, ps)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ps, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateSnippetOptions represents the available CreateSnippet() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/snippets.html#create-new-snippet
|
||||||
|
type CreateSnippetOptions struct {
|
||||||
|
Title *string `url:"title,omitempty" json:"title,omitempty"`
|
||||||
|
FileName *string `url:"file_name,omitempty" json:"file_name,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
Content *string `url:"content,omitempty" json:"content,omitempty"`
|
||||||
|
Visibility *VisibilityValue `url:"visibility,omitempty" json:"visibility,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateSnippet creates a new snippet. The user must have permission
|
||||||
|
// to create new snippets.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/snippets.html#create-new-snippet
|
||||||
|
func (s *SnippetsService) CreateSnippet(opt *CreateSnippetOptions, options ...OptionFunc) (*Snippet, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("POST", "snippets", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ps := new(Snippet)
|
||||||
|
resp, err := s.client.Do(req, ps)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ps, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateSnippetOptions represents the available UpdateSnippet() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/snippets.html#update-snippet
|
||||||
|
type UpdateSnippetOptions struct {
|
||||||
|
Title *string `url:"title,omitempty" json:"title,omitempty"`
|
||||||
|
FileName *string `url:"file_name,omitempty" json:"file_name,omitempty"`
|
||||||
|
Description *string `url:"description,omitempty" json:"description,omitempty"`
|
||||||
|
Content *string `url:"content,omitempty" json:"content,omitempty"`
|
||||||
|
Visibility *VisibilityValue `url:"visibility,omitempty" json:"visibility,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateSnippet updates an existing snippet. The user must have
|
||||||
|
// permission to change an existing snippet.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/snippets.html#update-snippet
|
||||||
|
func (s *SnippetsService) UpdateSnippet(snippet int, opt *UpdateSnippetOptions, options ...OptionFunc) (*Snippet, *Response, error) {
|
||||||
|
u := fmt.Sprintf("snippets/%d", snippet)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ps := new(Snippet)
|
||||||
|
resp, err := s.client.Do(req, ps)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ps, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteSnippet deletes an existing snippet. This is an idempotent
|
||||||
|
// function and deleting a non-existent snippet still returns a 200 OK status
|
||||||
|
// code.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/snippets.html#delete-snippet
|
||||||
|
func (s *SnippetsService) DeleteSnippet(snippet int, options ...OptionFunc) (*Response, error) {
|
||||||
|
u := fmt.Sprintf("snippets/%d", snippet)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SnippetContent returns the raw snippet as plain text.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/snippets.html#snippet-content
|
||||||
|
func (s *SnippetsService) SnippetContent(snippet int, options ...OptionFunc) ([]byte, *Response, error) {
|
||||||
|
u := fmt.Sprintf("snippets/%d/raw", snippet)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var b bytes.Buffer
|
||||||
|
resp, err := s.client.Do(req, &b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b.Bytes(), resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExploreSnippetsOptions represents the available ExploreSnippets() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/snippets.html#explore-all-public-snippets
|
||||||
|
type ExploreSnippetsOptions ListOptions
|
||||||
|
|
||||||
|
// ExploreSnippets gets the list of public snippets.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/snippets.html#explore-all-public-snippets
|
||||||
|
func (s *SnippetsService) ExploreSnippets(opt *ExploreSnippetsOptions, options ...OptionFunc) ([]*Snippet, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "snippets/public", nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var ps []*Snippet
|
||||||
|
resp, err := s.client.Do(req, &ps)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ps, resp, err
|
||||||
|
}
|
94
vendor/github.com/xanzy/go-gitlab/strings.go
generated
vendored
Normal file
94
vendor/github.com/xanzy/go-gitlab/strings.go
generated
vendored
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"reflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Stringify attempts to create a reasonable string representation of types in
|
||||||
|
// the GitHub library. It does things like resolve pointers to their values
|
||||||
|
// and omits struct fields with nil values.
|
||||||
|
func Stringify(message interface{}) string {
|
||||||
|
var buf bytes.Buffer
|
||||||
|
v := reflect.ValueOf(message)
|
||||||
|
stringifyValue(&buf, v)
|
||||||
|
return buf.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
// stringifyValue was heavily inspired by the goprotobuf library.
|
||||||
|
func stringifyValue(buf *bytes.Buffer, val reflect.Value) {
|
||||||
|
if val.Kind() == reflect.Ptr && val.IsNil() {
|
||||||
|
buf.WriteString("<nil>")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
v := reflect.Indirect(val)
|
||||||
|
|
||||||
|
switch v.Kind() {
|
||||||
|
case reflect.String:
|
||||||
|
fmt.Fprintf(buf, `"%s"`, v)
|
||||||
|
case reflect.Slice:
|
||||||
|
buf.WriteByte('[')
|
||||||
|
for i := 0; i < v.Len(); i++ {
|
||||||
|
if i > 0 {
|
||||||
|
buf.WriteByte(' ')
|
||||||
|
}
|
||||||
|
|
||||||
|
stringifyValue(buf, v.Index(i))
|
||||||
|
}
|
||||||
|
|
||||||
|
buf.WriteByte(']')
|
||||||
|
return
|
||||||
|
case reflect.Struct:
|
||||||
|
if v.Type().Name() != "" {
|
||||||
|
buf.WriteString(v.Type().String())
|
||||||
|
}
|
||||||
|
|
||||||
|
buf.WriteByte('{')
|
||||||
|
|
||||||
|
var sep bool
|
||||||
|
for i := 0; i < v.NumField(); i++ {
|
||||||
|
fv := v.Field(i)
|
||||||
|
if fv.Kind() == reflect.Ptr && fv.IsNil() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if fv.Kind() == reflect.Slice && fv.IsNil() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if sep {
|
||||||
|
buf.WriteString(", ")
|
||||||
|
} else {
|
||||||
|
sep = true
|
||||||
|
}
|
||||||
|
|
||||||
|
buf.WriteString(v.Type().Field(i).Name)
|
||||||
|
buf.WriteByte(':')
|
||||||
|
stringifyValue(buf, fv)
|
||||||
|
}
|
||||||
|
|
||||||
|
buf.WriteByte('}')
|
||||||
|
default:
|
||||||
|
if v.CanInterface() {
|
||||||
|
fmt.Fprint(buf, v.Interface())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
143
vendor/github.com/xanzy/go-gitlab/system_hooks.go
generated
vendored
Normal file
143
vendor/github.com/xanzy/go-gitlab/system_hooks.go
generated
vendored
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SystemHooksService handles communication with the system hooks related
|
||||||
|
// methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/system_hooks.html
|
||||||
|
type SystemHooksService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hook represents a GitLap system hook.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/system_hooks.html
|
||||||
|
type Hook struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
URL string `json:"url"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h Hook) String() string {
|
||||||
|
return Stringify(h)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListHooks gets a list of system hooks.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/system_hooks.html#list-system-hooks
|
||||||
|
func (s *SystemHooksService) ListHooks(options ...OptionFunc) ([]*Hook, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "hooks", nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var h []*Hook
|
||||||
|
resp, err := s.client.Do(req, &h)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return h, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddHookOptions represents the available AddHook() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/system_hooks.html#add-new-system-hook-hook
|
||||||
|
type AddHookOptions struct {
|
||||||
|
URL *string `url:"url,omitempty" json:"url,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddHook adds a new system hook hook.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/system_hooks.html#add-new-system-hook-hook
|
||||||
|
func (s *SystemHooksService) AddHook(opt *AddHookOptions, options ...OptionFunc) (*Hook, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("POST", "hooks", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
h := new(Hook)
|
||||||
|
resp, err := s.client.Do(req, h)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return h, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// HookEvent represents an event trigger by a GitLab system hook.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/system_hooks.html
|
||||||
|
type HookEvent struct {
|
||||||
|
EventName string `json:"event_name"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
ProjectID int `json:"project_id"`
|
||||||
|
OwnerName string `json:"owner_name"`
|
||||||
|
OwnerEmail string `json:"owner_email"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h HookEvent) String() string {
|
||||||
|
return Stringify(h)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestHook tests a system hook.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/system_hooks.html#test-system-hook
|
||||||
|
func (s *SystemHooksService) TestHook(hook int, options ...OptionFunc) (*HookEvent, *Response, error) {
|
||||||
|
u := fmt.Sprintf("hooks/%d", hook)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
h := new(HookEvent)
|
||||||
|
resp, err := s.client.Do(req, h)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return h, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteHook deletes a system hook. This is an idempotent API function and
|
||||||
|
// returns 200 OK even if the hook is not available. If the hook is deleted it
|
||||||
|
// is also returned as JSON.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/system_hooks.html#delete-system-hook
|
||||||
|
func (s *SystemHooksService) DeleteHook(hook int, options ...OptionFunc) (*Response, error) {
|
||||||
|
u := fmt.Sprintf("hooks/%d", hook)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
232
vendor/github.com/xanzy/go-gitlab/tags.go
generated
vendored
Normal file
232
vendor/github.com/xanzy/go-gitlab/tags.go
generated
vendored
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Sander van Harmelen
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TagsService handles communication with the tags related methods
|
||||||
|
// of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/tags.html
|
||||||
|
type TagsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tag represents a GitLab tag.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/tags.html
|
||||||
|
type Tag struct {
|
||||||
|
Commit *Commit `json:"commit"`
|
||||||
|
Release *Release `json:"release"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Release represents a GitLab version release.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/tags.html
|
||||||
|
type Release struct {
|
||||||
|
TagName string `json:"tag_name"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t Tag) String() string {
|
||||||
|
return Stringify(t)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListTagsOptions represents the available ListTags() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/tags.html#list-project-repository-tags
|
||||||
|
type ListTagsOptions ListOptions
|
||||||
|
|
||||||
|
// ListTags gets a list of tags from a project, sorted by name in reverse
|
||||||
|
// alphabetical order.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/tags.html#list-project-repository-tags
|
||||||
|
func (s *TagsService) ListTags(pid interface{}, opt *ListTagsOptions, options ...OptionFunc) ([]*Tag, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/tags", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var t []*Tag
|
||||||
|
resp, err := s.client.Do(req, &t)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return t, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTag a specific repository tag determined by its name. It returns 200 together
|
||||||
|
// with the tag information if the tag exists. It returns 404 if the tag does not exist.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/tags.html#get-a-single-repository-tag
|
||||||
|
func (s *TagsService) GetTag(pid interface{}, tag string, options ...OptionFunc) (*Tag, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/tags/%s", url.QueryEscape(project), tag)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var t *Tag
|
||||||
|
resp, err := s.client.Do(req, &t)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return t, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateTagOptions represents the available CreateTag() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/tags.html#create-a-new-tag
|
||||||
|
type CreateTagOptions struct {
|
||||||
|
TagName *string `url:"tag_name,omitempty" json:"tag_name,omitempty"`
|
||||||
|
Ref *string `url:"ref,omitempty" json:"ref,omitempty"`
|
||||||
|
Message *string `url:"message,omitempty" json:"message,omitempty"`
|
||||||
|
ReleaseDescription *string `url:"release_description:omitempty" json:"release_description,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateTag creates a new tag in the repository that points to the supplied ref.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/tags.html#create-a-new-tag
|
||||||
|
func (s *TagsService) CreateTag(pid interface{}, opt *CreateTagOptions, options ...OptionFunc) (*Tag, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/tags", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
t := new(Tag)
|
||||||
|
resp, err := s.client.Do(req, t)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return t, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteTag deletes a tag of a repository with given name.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/tags.html#delete-a-tag
|
||||||
|
func (s *TagsService) DeleteTag(pid interface{}, tag string, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/tags/%s", url.QueryEscape(project), tag)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateReleaseOptions represents the available CreateRelease() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/tags.html#create-a-new-release
|
||||||
|
type CreateReleaseOptions struct {
|
||||||
|
Description *string `url:"description:omitempty" json:"description,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateRelease Add release notes to the existing git tag.
|
||||||
|
// If there already exists a release for the given tag, status code 409 is returned.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/tags.html#create-a-new-release
|
||||||
|
func (s *TagsService) CreateRelease(pid interface{}, tag string, opt *CreateReleaseOptions, options ...OptionFunc) (*Release, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/tags/%s/release", url.QueryEscape(project), tag)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
r := new(Release)
|
||||||
|
resp, err := s.client.Do(req, r)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return r, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateReleaseOptions represents the available UpdateRelease() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/tags.html#update-a-release
|
||||||
|
type UpdateReleaseOptions struct {
|
||||||
|
Description *string `url:"description:omitempty" json:"description,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateRelease Updates the release notes of a given release.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/tags.html#update-a-release
|
||||||
|
func (s *TagsService) UpdateRelease(pid interface{}, tag string, opt *UpdateReleaseOptions, options ...OptionFunc) (*Release, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/repository/tags/%s/release", url.QueryEscape(project), tag)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
r := new(Release)
|
||||||
|
resp, err := s.client.Do(req, r)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return r, resp, err
|
||||||
|
}
|
163
vendor/github.com/xanzy/go-gitlab/time_stats.go
generated
vendored
Normal file
163
vendor/github.com/xanzy/go-gitlab/time_stats.go
generated
vendored
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// timeStatsService handles communication with the time tracking related
|
||||||
|
// methods of the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab docs: https://docs.gitlab.com/ce/workflow/time_tracking.html
|
||||||
|
type timeStatsService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// TimeStats represents the time estimates and time spent for an issue.
|
||||||
|
//
|
||||||
|
// GitLab docs: https://docs.gitlab.com/ce/workflow/time_tracking.html
|
||||||
|
type TimeStats struct {
|
||||||
|
HumanTimeEstimate string `json:"human_time_estimate"`
|
||||||
|
HumanTotalTimeSpent string `json:"human_total_time_spent"`
|
||||||
|
TimeEstimate int `json:"time_estimate"`
|
||||||
|
TotalTimeSpent int `json:"total_time_spent"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t TimeStats) String() string {
|
||||||
|
return Stringify(t)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTimeEstimateOptions represents the available SetTimeEstimate()
|
||||||
|
// options.
|
||||||
|
//
|
||||||
|
// GitLab docs: https://docs.gitlab.com/ce/workflow/time_tracking.html
|
||||||
|
type SetTimeEstimateOptions struct {
|
||||||
|
Duration *string `url:"duration,omitempty" json:"duration,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// setTimeEstimate sets the time estimate for a single project issue.
|
||||||
|
//
|
||||||
|
// GitLab docs: https://docs.gitlab.com/ce/workflow/time_tracking.html
|
||||||
|
func (s *timeStatsService) setTimeEstimate(pid interface{}, entity string, issue int, opt *SetTimeEstimateOptions, options ...OptionFunc) (*TimeStats, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/%s/%d/time_estimate", url.QueryEscape(project), entity, issue)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
t := new(TimeStats)
|
||||||
|
resp, err := s.client.Do(req, t)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return t, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// resetTimeEstimate resets the time estimate for a single project issue.
|
||||||
|
//
|
||||||
|
// GitLab docs: https://docs.gitlab.com/ce/workflow/time_tracking.html
|
||||||
|
func (s *timeStatsService) resetTimeEstimate(pid interface{}, entity string, issue int, options ...OptionFunc) (*TimeStats, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/%s/%d/reset_time_estimate", url.QueryEscape(project), entity, issue)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
t := new(TimeStats)
|
||||||
|
resp, err := s.client.Do(req, t)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return t, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddSpentTimeOptions represents the available AddSpentTime() options.
|
||||||
|
//
|
||||||
|
// GitLab docs: https://docs.gitlab.com/ce/workflow/time_tracking.html
|
||||||
|
type AddSpentTimeOptions struct {
|
||||||
|
Duration *string `url:"duration,omitempty" json:"duration,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// addSpentTime adds spent time for a single project issue.
|
||||||
|
//
|
||||||
|
// GitLab docs: https://docs.gitlab.com/ce/workflow/time_tracking.html
|
||||||
|
func (s *timeStatsService) addSpentTime(pid interface{}, entity string, issue int, opt *AddSpentTimeOptions, options ...OptionFunc) (*TimeStats, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/%s/%d/add_spent_time", url.QueryEscape(project), entity, issue)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
t := new(TimeStats)
|
||||||
|
resp, err := s.client.Do(req, t)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return t, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// resetSpentTime resets the spent time for a single project issue.
|
||||||
|
//
|
||||||
|
// GitLab docs: https://docs.gitlab.com/ce/workflow/time_tracking.html
|
||||||
|
func (s *timeStatsService) resetSpentTime(pid interface{}, entity string, issue int, options ...OptionFunc) (*TimeStats, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/%s/%d/reset_spent_time", url.QueryEscape(project), entity, issue)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
t := new(TimeStats)
|
||||||
|
resp, err := s.client.Do(req, t)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return t, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// getTimeSpent gets the spent time for a single project issue.
|
||||||
|
//
|
||||||
|
// GitLab docs: https://docs.gitlab.com/ce/workflow/time_tracking.html
|
||||||
|
func (s *timeStatsService) getTimeSpent(pid interface{}, entity string, issue int, options ...OptionFunc) (*TimeStats, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/%s/%d/time_stats", url.QueryEscape(project), entity, issue)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
t := new(TimeStats)
|
||||||
|
resp, err := s.client.Do(req, t)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return t, resp, err
|
||||||
|
}
|
175
vendor/github.com/xanzy/go-gitlab/todos.go
generated
vendored
Normal file
175
vendor/github.com/xanzy/go-gitlab/todos.go
generated
vendored
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
package gitlab
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
// TodosService handles communication with the todos related methods of
|
||||||
|
// the Gitlab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/todos.html
|
||||||
|
type TodosService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// TodoAction represents the available actions that can be performed on a todo.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/todos.html
|
||||||
|
type TodoAction string
|
||||||
|
|
||||||
|
// The available todo actions.
|
||||||
|
const (
|
||||||
|
TodoAssigned TodoAction = "assigned"
|
||||||
|
TodoMentioned TodoAction = "mentioned"
|
||||||
|
TodoBuildFailed TodoAction = "build_failed"
|
||||||
|
TodoMarked TodoAction = "marked"
|
||||||
|
TodoApprovalRequired TodoAction = "approval_required"
|
||||||
|
TodoDirectlyAddressed TodoAction = "directly_addressed"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TodoTarget represents a todo target of type Issue or MergeRequest
|
||||||
|
type TodoTarget struct {
|
||||||
|
// TODO: replace both Assignee and Author structs with v4 User struct
|
||||||
|
Assignee struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
ID int `json:"id"`
|
||||||
|
State string `json:"state"`
|
||||||
|
AvatarURL string `json:"avatar_url"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
} `json:"assignee"`
|
||||||
|
Author struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
ID int `json:"id"`
|
||||||
|
State string `json:"state"`
|
||||||
|
AvatarURL string `json:"avatar_url"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
} `json:"author"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Downvotes int `json:"downvotes"`
|
||||||
|
ID int `json:"id"`
|
||||||
|
IID int `json:"iid"`
|
||||||
|
Labels []string `json:"labels"`
|
||||||
|
Milestone Milestone `json:"milestone"`
|
||||||
|
ProjectID int `json:"project_id"`
|
||||||
|
State string `json:"state"`
|
||||||
|
Subscribed bool `json:"subscribed"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
UpdatedAt *time.Time `json:"updated_at"`
|
||||||
|
Upvotes int `json:"upvotes"`
|
||||||
|
UserNotesCount int `json:"user_notes_count"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
|
||||||
|
// Only available for type Issue
|
||||||
|
Confidential bool `json:"confidential"`
|
||||||
|
DueDate string `json:"due_date"`
|
||||||
|
Weight int `json:"weight"`
|
||||||
|
|
||||||
|
// Only available for type MergeRequest
|
||||||
|
ApprovalsBeforeMerge bool `json:"approvals_before_merge"`
|
||||||
|
ForceRemoveSourceBranch bool `json:"force_remove_source_branch"`
|
||||||
|
MergeCommitSha string `json:"merge_commit_sha"`
|
||||||
|
MergeWhenPipelineSucceeds bool `json:"merge_when_pipeline_succeeds"`
|
||||||
|
MergeStatus string `json:"merge_status"`
|
||||||
|
Sha string `json:"sha"`
|
||||||
|
ShouldRemoveSourceBranch bool `json:"should_remove_source_branch"`
|
||||||
|
SourceBranch string `json:"source_branch"`
|
||||||
|
SourceProjectID int `json:"source_project_id"`
|
||||||
|
Squash bool `json:"squash"`
|
||||||
|
TargetBranch string `json:"target_branch"`
|
||||||
|
TargetProjectID int `json:"target_project_id"`
|
||||||
|
WorkInProgress bool `json:"work_in_progress"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Todo represents a GitLab todo.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/todos.html
|
||||||
|
type Todo struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Project struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
HTTPURLToRepo string `json:"http_url_to_repo"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
NameWithNamespace string `json:"name_with_namespace"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
PathWithNamespace string `json:"path_with_namespace"`
|
||||||
|
} `json:"project"`
|
||||||
|
Author struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
State string `json:"state"`
|
||||||
|
AvatarURL string `json:"avatar_url"`
|
||||||
|
WebURL string `json:"web_url"`
|
||||||
|
} `json:"author"`
|
||||||
|
ActionName TodoAction `json:"action_name"`
|
||||||
|
TargetType string `json:"target_type"`
|
||||||
|
Target TodoTarget `json:"target"`
|
||||||
|
TargetURL string `json:"target_url"`
|
||||||
|
Body string `json:"body"`
|
||||||
|
State string `json:"state"`
|
||||||
|
CreatedAt *time.Time `json:"created_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t Todo) String() string {
|
||||||
|
return Stringify(t)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListTodosOptions represents the available ListTodos() options.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/todos.html#get-a-list-of-todos
|
||||||
|
type ListTodosOptions struct {
|
||||||
|
Action *TodoAction `url:"action,omitempty" json:"action,omitempty"`
|
||||||
|
AuthorID *int `url:"author_id,omitempty" json:"author_id,omitempty"`
|
||||||
|
ProjectID *int `url:"project_id,omitempty" json:"project_id,omitempty"`
|
||||||
|
State *string `url:"state,omitempty" json:"state,omitempty"`
|
||||||
|
Type *string `url:"type,omitempty" json:"type,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListTodos lists all todos created by authenticated user.
|
||||||
|
// When no filter is applied, it returns all pending todos for the current user.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/todos.html#get-a-list-of-todos
|
||||||
|
func (s *TodosService) ListTodos(opt *ListTodosOptions, options ...OptionFunc) ([]*Todo, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "todos", opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var t []*Todo
|
||||||
|
resp, err := s.client.Do(req, &t)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return t, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// MarkTodoAsDone marks a single pending todo given by its ID for the current user as done.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/todos.html#mark-a-todo-as-done
|
||||||
|
func (s *TodosService) MarkTodoAsDone(id int, options ...OptionFunc) (*Response, error) {
|
||||||
|
u := fmt.Sprintf("todos/%d/mark_as_done", id)
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MarkAllTodosAsDone marks all pending todos for the current user as done.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/todos.html#mark-all-todos-as-done
|
||||||
|
func (s *TodosService) MarkAllTodosAsDone(options ...OptionFunc) (*Response, error) {
|
||||||
|
req, err := s.client.NewRequest("POST", "todos/mark_as_done", nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
767
vendor/github.com/xanzy/go-gitlab/users.go
generated
vendored
Normal file
767
vendor/github.com/xanzy/go-gitlab/users.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
40
vendor/github.com/xanzy/go-gitlab/validate.go
generated
vendored
Normal file
40
vendor/github.com/xanzy/go-gitlab/validate.go
generated
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package gitlab
|
||||||
|
|
||||||
|
// ValidateService handles communication with the validation related methods of
|
||||||
|
// the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/lint.html
|
||||||
|
type ValidateService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// LintResult represents the linting results.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/lint.html
|
||||||
|
type LintResult struct {
|
||||||
|
Status string `json:"status"`
|
||||||
|
Errors []string `json:"errors"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lint validates .gitlab-ci.yml content.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/lint.html
|
||||||
|
func (s *ValidateService) Lint(content string, options ...OptionFunc) (*LintResult, *Response, error) {
|
||||||
|
var opts struct {
|
||||||
|
Content string `url:"content,omitempty" json:"content,omitempty"`
|
||||||
|
}
|
||||||
|
opts.Content = content
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", "ci/lint", &opts, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
l := new(LintResult)
|
||||||
|
resp, err := s.client.Do(req, l)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return l, resp, nil
|
||||||
|
}
|
56
vendor/github.com/xanzy/go-gitlab/version.go
generated
vendored
Normal file
56
vendor/github.com/xanzy/go-gitlab/version.go
generated
vendored
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2017, Andrea Funto'
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
// VersionService handles communication with the GitLab server instance to
|
||||||
|
// retrieve its version information via the GitLab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/version.md
|
||||||
|
type VersionService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Version represents a GitLab instance version.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/version.md
|
||||||
|
type Version struct {
|
||||||
|
Version string `json:"version"`
|
||||||
|
Revision string `json:"revision"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s Version) String() string {
|
||||||
|
return Stringify(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVersion gets a GitLab server instance version; it is only available to
|
||||||
|
// authenticated users.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/version.md
|
||||||
|
func (s *VersionService) GetVersion() (*Version, *Response, error) {
|
||||||
|
req, err := s.client.NewRequest("GET", "version", nil, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
v := new(Version)
|
||||||
|
resp, err := s.client.Do(req, v)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return v, resp, err
|
||||||
|
}
|
204
vendor/github.com/xanzy/go-gitlab/wikis.go
generated
vendored
Normal file
204
vendor/github.com/xanzy/go-gitlab/wikis.go
generated
vendored
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
// Copyright 2017, Stany MARCEL
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package gitlab
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// WikisService handles communication with the wikis related methods of
|
||||||
|
// the Gitlab API.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/wikis.html
|
||||||
|
type WikisService struct {
|
||||||
|
client *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// WikiFormat represents the available wiki formats.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/wikis.html
|
||||||
|
type WikiFormat string
|
||||||
|
|
||||||
|
// The available wiki formats.
|
||||||
|
const (
|
||||||
|
WikiFormatMarkdown WikiFormat = "markdown"
|
||||||
|
WikiFormatRFoc WikiFormat = "rdoc"
|
||||||
|
WikiFormatASCIIDoc WikiFormat = "asciidoc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Wiki represents a GitLab wiki.
|
||||||
|
//
|
||||||
|
// GitLab API docs: https://docs.gitlab.com/ce/api/wikis.html
|
||||||
|
type Wiki struct {
|
||||||
|
Content string `json:"content"`
|
||||||
|
Format WikiFormat `json:"format"`
|
||||||
|
Slug string `json:"slug"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w Wiki) String() string {
|
||||||
|
return Stringify(w)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListWikisOptions represents the available ListWikis options.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/wikis.html#list-wiki-pages
|
||||||
|
type ListWikisOptions struct {
|
||||||
|
WithContent *bool `url:"with_content,omitempty" json:"with_content,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListWikis lists all pages of the wiki of the given project id.
|
||||||
|
// When with_content is set, it also returns the content of the pages.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/wikis.html#list-wiki-pages
|
||||||
|
func (s *WikisService) ListWikis(pid interface{}, opt *ListWikisOptions, options ...OptionFunc) ([]*Wiki, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/wikis", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var w []*Wiki
|
||||||
|
resp, err := s.client.Do(req, &w)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return w, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWikiPage gets a wiki page for a given project.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/wikis.html#get-a-wiki-page
|
||||||
|
func (s *WikisService) GetWikiPage(pid interface{}, slug string, options ...OptionFunc) (*Wiki, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/wikis/%s", url.QueryEscape(project), url.QueryEscape(slug))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("GET", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var w *Wiki
|
||||||
|
resp, err := s.client.Do(req, &w)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return w, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateWikiPageOptions represents options to CreateWikiPage.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/wikis.html#create-a-new-wiki-page
|
||||||
|
type CreateWikiPageOptions struct {
|
||||||
|
Content *string `url:"content" json:"content"`
|
||||||
|
Title *string `url:"title" json:"title"`
|
||||||
|
Format *string `url:"format,omitempty" json:"format,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateWikiPage creates a new wiki page for the given repository with
|
||||||
|
// the given title, slug, and content.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/wikis.html#create-a-new-wiki-page
|
||||||
|
func (s *WikisService) CreateWikiPage(pid interface{}, opt *CreateWikiPageOptions, options ...OptionFunc) (*Wiki, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/wikis", url.QueryEscape(project))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("POST", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
w := new(Wiki)
|
||||||
|
resp, err := s.client.Do(req, w)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return w, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditWikiPageOptions represents options to EditWikiPage.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/wikis.html#edit-an-existing-wiki-page
|
||||||
|
type EditWikiPageOptions struct {
|
||||||
|
Content *string `url:"content" json:"content"`
|
||||||
|
Title *string `url:"title" json:"title"`
|
||||||
|
Format *string `url:"format,omitempty" json:"format,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// EditWikiPage Updates an existing wiki page. At least one parameter is
|
||||||
|
// required to update the wiki page.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/wikis.html#edit-an-existing-wiki-page
|
||||||
|
func (s *WikisService) EditWikiPage(pid interface{}, slug string, opt *EditWikiPageOptions, options ...OptionFunc) (*Wiki, *Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/wikis/%s", url.QueryEscape(project), url.QueryEscape(slug))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("PUT", u, opt, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
w := new(Wiki)
|
||||||
|
resp, err := s.client.Do(req, w)
|
||||||
|
if err != nil {
|
||||||
|
return nil, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return w, resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteWikiPage deletes a wiki page with a given slug.
|
||||||
|
//
|
||||||
|
// GitLab API docs:
|
||||||
|
// https://docs.gitlab.com/ce/api/wikis.html#delete-a-wiki-page
|
||||||
|
func (s *WikisService) DeleteWikiPage(pid interface{}, slug string, options ...OptionFunc) (*Response, error) {
|
||||||
|
project, err := parseID(pid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u := fmt.Sprintf("projects/%s/wikis/%s", url.QueryEscape(project), url.QueryEscape(slug))
|
||||||
|
|
||||||
|
req, err := s.client.NewRequest("DELETE", u, nil, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.client.Do(req, nil)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user