@@ -18,7 +18,7 @@ type pullService struct {
18
18
19
19
func (s * pullService ) Find (ctx context.Context , repo string , index int ) (* scm.PullRequest , * scm.Response , error ) {
20
20
path := fmt .Sprintf ("api/v1/repos/%s/pulls/%d" , repo , index )
21
- out := new (pullRequest )
21
+ out := new (pr )
22
22
res , err := s .client .do (ctx , "GET" , path , nil , out )
23
23
return convertPullRequest (out ), res , err
24
24
}
@@ -29,7 +29,7 @@ func (s *pullService) FindComment(context.Context, string, int, int) (*scm.Comme
29
29
30
30
func (s * pullService ) List (ctx context.Context , repo string , opts scm.PullRequestListOptions ) ([]* scm.PullRequest , * scm.Response , error ) {
31
31
path := fmt .Sprintf ("api/v1/repos/%s/pulls" , repo )
32
- out := []* pullRequest {}
32
+ out := []* pr {}
33
33
res , err := s .client .do (ctx , "GET" , path , nil , & out )
34
34
return convertPullRequests (out ), res , err
35
35
}
@@ -42,6 +42,19 @@ func (s *pullService) ListChanges(context.Context, string, int, scm.ListOptions)
42
42
return nil , nil , scm .ErrNotSupported
43
43
}
44
44
45
+ func (s * pullService ) Create (ctx context.Context , repo string , input * scm.PullRequestInput ) (* scm.PullRequest , * scm.Response , error ) {
46
+ path := fmt .Sprintf ("api/v1/repos/%s/pulls" , repo )
47
+ in := & prInput {
48
+ Title : input .Title ,
49
+ Body : input .Body ,
50
+ Head : input .Source ,
51
+ Base : input .Target ,
52
+ }
53
+ out := new (pr )
54
+ res , err := s .client .do (ctx , "POST" , path , in , out )
55
+ return convertPullRequest (out ), res , err
56
+ }
57
+
45
58
func (s * pullService ) CreateComment (context.Context , string , int , * scm.CommentInput ) (* scm.Comment , * scm.Response , error ) {
46
59
return nil , nil , scm .ErrNotSupported
47
60
}
@@ -64,7 +77,7 @@ func (s *pullService) Close(context.Context, string, int) (*scm.Response, error)
64
77
// native data structures
65
78
//
66
79
67
- type pullRequest struct {
80
+ type pr struct {
68
81
ID int `json:"id"`
69
82
Number int `json:"number"`
70
83
User user `json:"user"`
@@ -90,19 +103,26 @@ type reference struct {
90
103
Sha string `json:"sha"`
91
104
}
92
105
106
+ type prInput struct {
107
+ Title string `json:"title"`
108
+ Body string `json:"body"`
109
+ Head string `json:"head"`
110
+ Base string `json:"base"`
111
+ }
112
+
93
113
//
94
114
// native data structure conversion
95
115
//
96
116
97
- func convertPullRequests (src []* pullRequest ) []* scm.PullRequest {
117
+ func convertPullRequests (src []* pr ) []* scm.PullRequest {
98
118
dst := []* scm.PullRequest {}
99
119
for _ , v := range src {
100
120
dst = append (dst , convertPullRequest (v ))
101
121
}
102
122
return dst
103
123
}
104
124
105
- func convertPullRequest (src * pullRequest ) * scm.PullRequest {
125
+ func convertPullRequest (src * pr ) * scm.PullRequest {
106
126
return & scm.PullRequest {
107
127
Number : src .Number ,
108
128
Title : src .Title ,
0 commit comments