Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
G
go-gitlab
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
go-gitlab
Commits
a0a0ff4d
Commit
a0a0ff4d
authored
Jan 05, 2016
by
Sander van Harmelen
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #28 from martinsefcik/status-api
Added new calls for Status API
parents
da0408da
cc7d6979
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
173 additions
and
2 deletions
+173
-2
commits.go
commits.go
+108
-2
commits_test.go
commits_test.go
+65
-0
No files found.
commits.go
View file @
a0a0ff4d
...
@@ -164,7 +164,11 @@ type CommitComment struct {
...
@@ -164,7 +164,11 @@ type CommitComment struct {
Path
string
`json:"path"`
Path
string
`json:"path"`
Line
int
`json:"line"`
Line
int
`json:"line"`
LineType
string
`json:"line_type"`
LineType
string
`json:"line_type"`
Author
struct
{
Author
Author
`json:"author"`
}
type
Author
struct
{
ID
int
`json:"id"`
ID
int
`json:"id"`
Username
string
`json:"username"`
Username
string
`json:"username"`
Email
string
`json:"email"`
Email
string
`json:"email"`
...
@@ -172,7 +176,6 @@ type CommitComment struct {
...
@@ -172,7 +176,6 @@ type CommitComment struct {
State
string
`json:"state"`
State
string
`json:"state"`
Blocked
bool
`json:"blocked"`
Blocked
bool
`json:"blocked"`
CreatedAt
time
.
Time
`json:"created_at"`
CreatedAt
time
.
Time
`json:"created_at"`
}
`json:"author"`
}
}
func
(
c
CommitComment
)
String
()
string
{
func
(
c
CommitComment
)
String
()
string
{
...
@@ -247,3 +250,106 @@ func (s *CommitsService) PostCommitComment(
...
@@ -247,3 +250,106 @@ func (s *CommitsService) PostCommitComment(
return
c
,
resp
,
err
return
c
,
resp
,
err
}
}
// GetCommitStatusesOptions represents the available GetCommitStatuses() options.
//
// GitLab API docs: http://doc.gitlab.com/ce/api/commits.html#get-the-status-of-a-commit
type
GetCommitStatusesOptions
struct
{
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: http://doc.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: http://doc.gitlab.com/ce/api/commits.html#get-the-status-of-a-commit
func
(
s
*
CommitsService
)
GetCommitStatuses
(
pid
interface
{},
sha
string
,
opt
*
GetCommitStatusesOptions
)
([]
*
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
)
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: http://doc.gitlab.com/ce/api/commits.html#post-the-status-to-commit
type
SetCommitStatusOptions
struct
{
State
BuildState
`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"`
}
type
BuildState
string
const
(
Pending
BuildState
=
"pending"
Running
BuildState
=
"running"
Success
BuildState
=
"success"
Failed
BuildState
=
"failed"
Canceled
BuildState
=
"canceled"
)
// SetCommitStatus sets the status of a commit in a project.
//
// GitLab API docs: http://doc.gitlab.com/ce/api/commits.html#post-the-status-to-commit
func
(
s
*
CommitsService
)
SetCommitStatus
(
pid
interface
{},
sha
string
,
opt
*
SetCommitStatusOptions
)
(
*
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
)
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
}
commits_test.go
0 → 100644
View file @
a0a0ff4d
package
gitlab
import
(
"fmt"
"net/http"
"reflect"
"testing"
)
func
TestGetCommitStatuses
(
t
*
testing
.
T
)
{
mux
,
server
,
client
:=
setup
()
defer
teardown
(
server
)
mux
.
HandleFunc
(
"/projects/1/repository/commits/b0b3a907f41409829b307a28b82fdbd552ee5a27/statuses"
,
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
testMethod
(
t
,
r
,
"GET"
)
testFormValues
(
t
,
r
,
values
{
"ref"
:
"master"
,
"stage"
:
"test"
,
"name"
:
"ci/jenkins"
,
"all"
:
"true"
,
})
fmt
.
Fprint
(
w
,
`[{"id":1}]`
)
})
opt
:=
&
GetCommitStatusesOptions
{
"master"
,
"test"
,
"ci/jenkins"
,
true
}
statuses
,
_
,
err
:=
client
.
Commits
.
GetCommitStatuses
(
"1"
,
"b0b3a907f41409829b307a28b82fdbd552ee5a27"
,
opt
)
if
err
!=
nil
{
t
.
Errorf
(
"Commits.GetCommitStatuses returned error: %v"
,
err
)
}
want
:=
[]
*
CommitStatus
{{
ID
:
1
}}
if
!
reflect
.
DeepEqual
(
want
,
statuses
)
{
t
.
Errorf
(
"Commits.GetCommitStatuses returned %+v, want %+v"
,
statuses
,
want
)
}
}
func
TestSetCommitStatus
(
t
*
testing
.
T
)
{
mux
,
server
,
client
:=
setup
()
defer
teardown
(
server
)
mux
.
HandleFunc
(
"/projects/1/statuses/b0b3a907f41409829b307a28b82fdbd552ee5a27"
,
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
testMethod
(
t
,
r
,
"POST"
)
testJsonBody
(
t
,
r
,
values
{
"state"
:
"running"
,
"ref"
:
"master"
,
"name"
:
"ci/jenkins"
,
"target_url"
:
"http://abc"
,
"description"
:
"build"
,
})
fmt
.
Fprint
(
w
,
`{"id":1}`
)
})
opt
:=
&
SetCommitStatusOptions
{
Running
,
"master"
,
"ci/jenkins"
,
""
,
"http://abc"
,
"build"
}
status
,
_
,
err
:=
client
.
Commits
.
SetCommitStatus
(
"1"
,
"b0b3a907f41409829b307a28b82fdbd552ee5a27"
,
opt
)
if
err
!=
nil
{
t
.
Errorf
(
"Commits.SetCommitStatus returned error: %v"
,
err
)
}
want
:=
&
CommitStatus
{
ID
:
1
}
if
!
reflect
.
DeepEqual
(
want
,
status
)
{
t
.
Errorf
(
"Commits.SetCommitStatus returned %+v, want %+v"
,
status
,
want
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment