155 lines
3.7 KiB
Go
155 lines
3.7 KiB
Go
// Copyright 2024 Woodpecker Authors
|
|
//
|
|
// 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 addon
|
|
|
|
import (
|
|
"go.woodpecker-ci.org/woodpecker/v3/server/model"
|
|
)
|
|
|
|
type argumentsAuth struct {
|
|
Token string `json:"token"`
|
|
Secret string `json:"secret"`
|
|
}
|
|
|
|
type argumentsRepo struct {
|
|
U *modelUser `json:"u"`
|
|
RemoteID model.ForgeRemoteID `json:"remote_id"`
|
|
Owner string `json:"owner"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type argumentsFileDir struct {
|
|
U *modelUser `json:"u"`
|
|
R *modelRepo `json:"r"`
|
|
B *model.Pipeline `json:"b"`
|
|
F string `json:"f"`
|
|
}
|
|
|
|
type argumentsStatus struct {
|
|
U *modelUser `json:"u"`
|
|
R *modelRepo `json:"r"`
|
|
B *model.Pipeline `json:"b"`
|
|
P *model.Workflow `json:"p"`
|
|
}
|
|
|
|
type argumentsNetrc struct {
|
|
U *modelUser `json:"u"`
|
|
R *modelRepo `json:"r"`
|
|
}
|
|
|
|
type argumentsActivateDeactivate struct {
|
|
U *modelUser `json:"u"`
|
|
R *modelRepo `json:"r"`
|
|
Link string `json:"link"`
|
|
}
|
|
|
|
type argumentsBranchesPullRequests struct {
|
|
U *modelUser `json:"u"`
|
|
R *modelRepo `json:"r"`
|
|
P *model.ListOptions `json:"p"`
|
|
}
|
|
|
|
type argumentsBranchHead struct {
|
|
U *modelUser `json:"u"`
|
|
R *modelRepo `json:"r"`
|
|
Branch string `json:"branch"`
|
|
}
|
|
|
|
type argumentsOrgMembershipOrg struct {
|
|
U *modelUser `json:"u"`
|
|
Org string `json:"org"`
|
|
}
|
|
|
|
type responseHook struct {
|
|
Repo *modelRepo `json:"repo"`
|
|
Pipeline *model.Pipeline `json:"pipeline"`
|
|
}
|
|
|
|
type responseLogin struct {
|
|
User *modelUser `json:"user"`
|
|
RedirectURL string `json:"redirect_url"`
|
|
}
|
|
|
|
type httpRequest struct {
|
|
Method string `json:"method"`
|
|
URL string `json:"url"`
|
|
Header map[string][]string `json:"header"`
|
|
Form map[string][]string `json:"form"`
|
|
Body []byte `json:"body"`
|
|
}
|
|
|
|
// modelUser is an extension of model.User to marshal all fields to JSON.
|
|
type modelUser struct {
|
|
User *model.User `json:"user"`
|
|
|
|
ForgeRemoteID model.ForgeRemoteID `json:"forge_remote_id"`
|
|
|
|
// Token is the oauth2 token.
|
|
Token string `json:"token"`
|
|
|
|
// Secret is the oauth2 token secret.
|
|
Secret string `json:"secret"`
|
|
|
|
// Expiry is the token and secret expiration timestamp.
|
|
Expiry int64 `json:"expiry"`
|
|
|
|
// Hash is a unique token used to sign tokens.
|
|
Hash string `json:"hash"`
|
|
}
|
|
|
|
func (m *modelUser) asModel() *model.User {
|
|
m.User.ForgeRemoteID = m.ForgeRemoteID
|
|
m.User.AccessToken = m.Token
|
|
m.User.RefreshToken = m.Secret
|
|
m.User.Expiry = m.Expiry
|
|
m.User.Hash = m.Hash
|
|
return m.User
|
|
}
|
|
|
|
func modelUserFromModel(u *model.User) *modelUser {
|
|
return &modelUser{
|
|
User: u,
|
|
ForgeRemoteID: u.ForgeRemoteID,
|
|
Token: u.AccessToken,
|
|
Secret: u.RefreshToken,
|
|
Expiry: u.Expiry,
|
|
Hash: u.Hash,
|
|
}
|
|
}
|
|
|
|
// modelRepo is an extension of model.Repo to marshal all fields to JSON.
|
|
type modelRepo struct {
|
|
Repo *model.Repo `json:"repo"`
|
|
UserID int64 `json:"user_id"`
|
|
Hash string `json:"hash"`
|
|
Perm *model.Perm `json:"perm"`
|
|
}
|
|
|
|
func (m *modelRepo) asModel() *model.Repo {
|
|
m.Repo.UserID = m.UserID
|
|
m.Repo.Hash = m.Hash
|
|
m.Repo.Perm = m.Perm
|
|
return m.Repo
|
|
}
|
|
|
|
func modelRepoFromModel(r *model.Repo) *modelRepo {
|
|
return &modelRepo{
|
|
Repo: r,
|
|
UserID: r.UserID,
|
|
Hash: r.Hash,
|
|
Perm: r.Perm,
|
|
}
|
|
}
|