@ -2,12 +2,9 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package gitea
package structs
import (
"bytes"
"encoding/json"
"fmt"
"time"
)
@ -48,24 +45,6 @@ type Repository struct {
Permissions * Permission ` json:"permissions,omitempty" `
}
// ListMyRepos lists all repositories for the authenticated user that has access to.
func ( c * Client ) ListMyRepos ( ) ( [ ] * Repository , error ) {
repos := make ( [ ] * Repository , 0 , 10 )
return repos , c . getParsedResponse ( "GET" , "/user/repos" , nil , nil , & repos )
}
// ListUserRepos list all repositories of one user by user's name
func ( c * Client ) ListUserRepos ( user string ) ( [ ] * Repository , error ) {
repos := make ( [ ] * Repository , 0 , 10 )
return repos , c . getParsedResponse ( "GET" , fmt . Sprintf ( "/users/%s/repos" , user ) , nil , nil , & repos )
}
// ListOrgRepos list all repositories of one organization by organization's name
func ( c * Client ) ListOrgRepos ( org string ) ( [ ] * Repository , error ) {
repos := make ( [ ] * Repository , 0 , 10 )
return repos , c . getParsedResponse ( "GET" , fmt . Sprintf ( "/orgs/%s/repos" , org ) , nil , nil , & repos )
}
// CreateRepoOption options when creating repository
// swagger:model
type CreateRepoOption struct {
@ -88,36 +67,42 @@ type CreateRepoOption struct {
Readme string ` json:"readme" `
}
// CreateRepo creates a repository for authenticated user.
func ( c * Client ) CreateRepo ( opt CreateRepoOption ) ( * Repository , error ) {
body , err := json . Marshal ( & opt )
if err != nil {
return nil , err
}
repo := new ( Repository )
return repo , c . getParsedResponse ( "POST" , "/user/repos" , jsonHeader , bytes . NewReader ( body ) , repo )
}
// CreateOrgRepo creates an organization repository for authenticated user.
func ( c * Client ) CreateOrgRepo ( org string , opt CreateRepoOption ) ( * Repository , error ) {
body , err := json . Marshal ( & opt )
if err != nil {
return nil , err
}
repo := new ( Repository )
return repo , c . getParsedResponse ( "POST" , fmt . Sprintf ( "/org/%s/repos" , org ) , jsonHeader , bytes . NewReader ( body ) , repo )
}
// GetRepo returns information of a repository of given owner.
func ( c * Client ) GetRepo ( owner , reponame string ) ( * Repository , error ) {
repo := new ( Repository )
return repo , c . getParsedResponse ( "GET" , fmt . Sprintf ( "/repos/%s/%s" , owner , reponame ) , nil , nil , repo )
}
// DeleteRepo deletes a repository of user or organization.
func ( c * Client ) DeleteRepo ( owner , repo string ) error {
_ , err := c . getResponse ( "DELETE" , fmt . Sprintf ( "/repos/%s/%s" , owner , repo ) , nil , nil )
return err
// EditRepoOption options when editing a repository's properties
// swagger:model
type EditRepoOption struct {
// Name of the repository
//
// required: true
// unique: true
Name * string ` json:"name" binding:"Required;AlphaDashDot;MaxSize(100)" `
// A short description of the repository.
Description * string ` json:"description,omitempty" binding:"MaxSize(255)" `
// A URL with more information about the repository.
Website * string ` json:"website,omitempty" binding:"MaxSize(255)" `
// Either `true` to make the repository private or `false` to make it public.
// Note: You will get a 422 error if the organization restricts changing repository visibility to organization
// owners and a non-owner tries to change the value of private.
Private * bool ` json:"private,omitempty" `
// Either `true` to enable issues for this repository or `false` to disable them.
EnableIssues * bool ` json:"enable_issues,omitempty" `
// Either `true` to enable the wiki for this repository or `false` to disable it.
EnableWiki * bool ` json:"enable_wiki,omitempty" `
// Updates the default branch for this repository.
DefaultBranch * string ` json:"default_branch,omitempty" `
// Either `true` to allow pull requests, or `false` to prevent pull request.
EnablePullRequests * bool ` json:"enable_pull_requests,omitempty" `
// Either `true` to ignore whitepace for conflicts, or `false` to not ignore whitespace. `enabled_pull_requests` must be `true`.
IgnoreWhitespaceConflicts * bool ` json:"ignore_whitespace,omitempty" `
// Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits. `enabled_pull_requests` must be `true`.
AllowMerge * bool ` json:"allow_merge_commits,omitempty" `
// Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging. `enabled_pull_requests` must be `true`.
AllowRebase * bool ` json:"allow_rebase,omitempty" `
// Either `true` to allow rebase with explicit merge commits (--no-ff), or `false` to prevent rebase with explicit merge commits. `enabled_pull_requests` must be `true`.
AllowRebaseMerge * bool ` json:"allow_rebase_explicit,omitempty" `
// Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging. `enabled_pull_requests` must be `true`.
AllowSquashMerge * bool ` json:"allow_squash_merge,omitempty" `
// `true` to archive this repository. Note: You cannot unarchive repositories through the API.
Archived * bool ` json:"archived,omitempty" `
}
// MigrateRepoOption options for migrating a repository from an external service
@ -134,23 +119,3 @@ type MigrateRepoOption struct {
Private bool ` json:"private" `
Description string ` json:"description" `
}
// MigrateRepo migrates a repository from other Git hosting sources for the
// authenticated user.
//
// To migrate a repository for a organization, the authenticated user must be a
// owner of the specified organization.
func ( c * Client ) MigrateRepo ( opt MigrateRepoOption ) ( * Repository , error ) {
body , err := json . Marshal ( & opt )
if err != nil {
return nil , err
}
repo := new ( Repository )
return repo , c . getParsedResponse ( "POST" , "/repos/migrate" , jsonHeader , bytes . NewReader ( body ) , repo )
}
// MirrorSync adds a mirrored repository to the mirror sync queue.
func ( c * Client ) MirrorSync ( owner , repo string ) error {
_ , err := c . getResponse ( "POST" , fmt . Sprintf ( "/repos/%s/%s/mirror-sync" , owner , repo ) , nil , nil )
return err
}