woodpecker/server/forge/bitbucket/internal/types.go
qwerty287 3372d1a87c
Rename remote to forge (#1357)
As of #745

Co-authored-by: Anbraten <anton@ju60.de>
2022-11-05 00:35:06 +01:00

261 lines
5.7 KiB
Go

// Copyright 2018 Drone.IO Inc.
//
// 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 internal
import (
"net/url"
"strconv"
"time"
)
type Account struct {
Login string `json:"username"`
Name string `json:"display_name"`
Type string `json:"type"`
Links Links `json:"links"`
}
type Workspace struct {
UUID string `json:"uuid"`
Slug string `json:"slug"`
Name string `json:"name"`
Type string `json:"type"`
Links Links `json:"links"`
}
type WorkspacesResp struct {
Page int `json:"page"`
Pages int `json:"pagelen"`
Size int `json:"size"`
Next string `json:"next"`
Values []*Workspace `json:"values"`
}
type PipelineStatus struct {
State string `json:"state"`
Key string `json:"key"`
Name string `json:"name,omitempty"`
URL string `json:"url"`
Desc string `json:"description,omitempty"`
}
type Email struct {
Email string `json:"email"`
IsConfirmed bool `json:"is_confirmed"`
IsPrimary bool `json:"is_primary"`
}
type EmailResp struct {
Page int `json:"page"`
Pages int `json:"pagelen"`
Size int `json:"size"`
Next string `json:"next"`
Values []*Email `json:"values"`
}
type Hook struct {
UUID string `json:"uuid,omitempty"`
Desc string `json:"description"`
URL string `json:"url"`
Events []string `json:"events"`
Active bool `json:"active"`
}
type HookResp struct {
Page int `json:"page"`
Pages int `json:"pagelen"`
Size int `json:"size"`
Next string `json:"next"`
Values []*Hook `json:"values"`
}
type Links struct {
Self Link `json:"self"`
Avatar Link `json:"avatar"`
HTML Link `json:"html"`
Clone []Link `json:"clone"`
}
type Link struct {
Href string `json:"href"`
Name string `json:"name"`
}
type LinkClone struct {
Link
}
type Repo struct {
UUID string `json:"uuid"`
Owner Account `json:"owner"`
Name string `json:"name"`
FullName string `json:"full_name"`
Language string `json:"language"`
IsPrivate bool `json:"is_private"`
Scm string `json:"scm"`
Desc string `json:"desc"`
Links Links `json:"links"`
}
type RepoResp struct {
Page int `json:"page"`
Pages int `json:"pagelen"`
Size int `json:"size"`
Next string `json:"next"`
Values []*Repo `json:"values"`
}
type Change struct {
New struct {
Type string `json:"type"`
Name string `json:"name"`
Target struct {
Type string `json:"type"`
Hash string `json:"hash"`
Message string `json:"message"`
Date time.Time `json:"date"`
Links Links `json:"links"`
Author struct {
Raw string `json:"raw"`
User Account `json:"user"`
} `json:"author"`
} `json:"target"`
} `json:"new"`
}
type PushHook struct {
Actor Account `json:"actor"`
Repo Repo `json:"repository"`
Push struct {
Changes []Change `json:"changes"`
} `json:"push"`
}
type PullRequestHook struct {
Actor Account `json:"actor"`
Repo Repo `json:"repository"`
PullRequest struct {
ID int `json:"id"`
Type string `json:"type"`
Reason string `json:"reason"`
Desc string `json:"description"`
Title string `json:"title"`
State string `json:"state"`
Links Links `json:"links"`
Created time.Time `json:"created_on"`
Updated time.Time `json:"updated_on"`
Source struct {
Repo Repo `json:"repsoitory"`
Commit struct {
Hash string `json:"hash"`
Links Links `json:"links"`
} `json:"commit"`
Branch struct {
Name string `json:"name"`
} `json:"branch"`
} `json:"source"`
Dest struct {
Repo Repo `json:"repsoitory"`
Commit struct {
Hash string `json:"hash"`
Links Links `json:"links"`
} `json:"commit"`
Branch struct {
Name string `json:"name"`
} `json:"branch"`
} `json:"destination"`
} `json:"pullrequest"`
}
type WorkspaceMembershipResp struct {
Page int `json:"page"`
Pages int `json:"pagelen"`
Size int `json:"size"`
Next string `json:"next"`
Values []struct {
Permission string `json:"permission"`
User struct {
Nickname string `json:"nickname"`
}
} `json:"values"`
}
type ListOpts struct {
Page int
PageLen int
}
func (o *ListOpts) Encode() string {
params := url.Values{}
if o.Page != 0 {
params.Set("page", strconv.Itoa(o.Page))
}
if o.PageLen != 0 {
params.Set("pagelen", strconv.Itoa(o.PageLen))
}
return params.Encode()
}
type ListWorkspacesOpts struct {
Page int
PageLen int
Role string
}
func (o *ListWorkspacesOpts) Encode() string {
params := url.Values{}
if o.Page != 0 {
params.Set("page", strconv.Itoa(o.Page))
}
if o.PageLen != 0 {
params.Set("pagelen", strconv.Itoa(o.PageLen))
}
if len(o.Role) != 0 {
params.Set("role", o.Role)
}
return params.Encode()
}
type Error struct {
Status int
Body struct {
Message string `json:"message"`
} `json:"error"`
}
func (e Error) Error() string {
return e.Body.Message
}
type RepoPermResp struct {
Page int `json:"page"`
Pages int `json:"pagelen"`
Values []*RepoPerm `json:"values"`
}
type RepoPerm struct {
Permission string `json:"permission"`
}
type BranchResp struct {
Values []*Branch `json:"values"`
}
type Branch struct {
Name string `json:"name"`
}