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
248dbf8e
Commit
248dbf8e
authored
Oct 04, 2017
by
Sander van Harmelen
Committed by
GitHub
Oct 04, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #221 from ynsta/master
Add wikis api
parents
3bf3fe20
9ab64883
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
203 additions
and
0 deletions
+203
-0
README.md
README.md
+1
-0
gitlab.go
gitlab.go
+2
-0
wikis.go
wikis.go
+200
-0
No files found.
README.md
View file @
248dbf8e
...
...
@@ -37,6 +37,7 @@ includes all calls to the following services:
-
[
x
]
Settings
-
[
x
]
Pipelines
-
[
x
]
Version
-
[
x
]
Wikis
## Usage
...
...
gitlab.go
View file @
248dbf8e
...
...
@@ -190,6 +190,7 @@ type Client struct {
Todos
*
TodosService
Users
*
UsersService
Version
*
VersionService
Wikis
*
WikisService
}
// ListOptions specifies the optional parameters to various List methods that
...
...
@@ -260,6 +261,7 @@ func newClient(httpClient *http.Client, tokenType tokenType, token string) *Clie
c
.
Todos
=
&
TodosService
{
client
:
c
}
c
.
Users
=
&
UsersService
{
client
:
c
}
c
.
Version
=
&
VersionService
{
client
:
c
}
c
.
Wikis
=
&
WikisService
{
client
:
c
}
return
c
}
...
...
wikis.go
0 → 100644
View file @
248dbf8e
// 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 todo actions.
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 returns also 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
)
}
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