170 lines
3.9 KiB
Go
170 lines
3.9 KiB
Go
package netlify
|
|
|
|
import "sync"
|
|
|
|
type ResourceType string
|
|
|
|
func (r ResourceType) String() string {
|
|
return string(r)
|
|
}
|
|
|
|
const (
|
|
CurrentUser ResourceType = "User"
|
|
Token ResourceType = "Token"
|
|
Site ResourceType = "Site"
|
|
SiteFile ResourceType = "Site File"
|
|
SiteEnvVar ResourceType = "Site Env Variable"
|
|
SiteSnippet ResourceType = "Site Snippet"
|
|
SiteDeploy ResourceType = "Site Deploy"
|
|
SiteDeployedBranch ResourceType = "Site Deployed Branch"
|
|
SiteBuild ResourceType = "Site Build"
|
|
SiteDevServer ResourceType = "Site Dev Server"
|
|
SiteBuildHook ResourceType = "Site Build Hook"
|
|
SiteDevServerHook ResourceType = "Site Dev Server Hook"
|
|
SiteServiceInstance ResourceType = "Site Service Instance"
|
|
SiteFunction ResourceType = "Site Function"
|
|
SiteForm ResourceType = "Site Form"
|
|
SiteSubmission ResourceType = "Site Submission"
|
|
SiteTrafficSplit ResourceType = "Site Traffic Split"
|
|
DNSZone ResourceType = "DNS Zone"
|
|
Service ResourceType = "Service"
|
|
)
|
|
|
|
type SecretInfo struct {
|
|
mu sync.RWMutex
|
|
|
|
UserInfo User
|
|
Resources []NetlifyResource
|
|
}
|
|
|
|
func (s *SecretInfo) appendResource(resource NetlifyResource) {
|
|
s.mu.Lock()
|
|
defer s.mu.Unlock()
|
|
|
|
s.Resources = append(s.Resources, resource)
|
|
}
|
|
|
|
// listResourceByType returns a list of resources matching the given type.
|
|
func (s *SecretInfo) listResourceByType(resourceType ResourceType) []NetlifyResource {
|
|
s.mu.RLock()
|
|
defer s.mu.RUnlock()
|
|
|
|
resources := make([]NetlifyResource, 0, len(s.Resources))
|
|
for _, resource := range s.Resources {
|
|
if resource.Type == resourceType.String() {
|
|
resources = append(resources, resource)
|
|
}
|
|
}
|
|
|
|
return resources
|
|
}
|
|
|
|
type User struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"full_name"`
|
|
Email string `json:"email"`
|
|
AccountID string `json:"account_id"`
|
|
LastLogin string `json:"last_login"`
|
|
}
|
|
|
|
type NetlifyResource struct {
|
|
ID string
|
|
Name string
|
|
Type string
|
|
Metadata map[string]string
|
|
Parent *NetlifyResource
|
|
}
|
|
|
|
type token struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
Personal bool `json:"personal"`
|
|
ExpiresAt string `json:"expires_at"`
|
|
}
|
|
|
|
type site struct {
|
|
SiteID string `json:"site_id"`
|
|
Name string `json:"name"`
|
|
Url string `json:"url"`
|
|
AdminUrl string `json:"admin_url"`
|
|
RepoUrl string `json:"repo_url"`
|
|
}
|
|
|
|
type file struct {
|
|
ID string `json:"id"`
|
|
Path string `json:"path"`
|
|
MimeType string `json:"mime_type"`
|
|
}
|
|
|
|
type envVariable struct {
|
|
Key string `json:"key"`
|
|
Scopes []string `json:"scopes"`
|
|
Values []struct {
|
|
ID string `json:"id"`
|
|
Value string `json:"value"`
|
|
} `json:"values"`
|
|
}
|
|
|
|
type snippet struct {
|
|
ID string `json:"id"`
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type deploy struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
BuildID string `json:"build_id"`
|
|
State string `json:"state"`
|
|
Url string `json:"url"`
|
|
}
|
|
|
|
type deployedBranch struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
Slug string `json:"slug"`
|
|
}
|
|
|
|
type build struct {
|
|
ID string `json:"id"`
|
|
DeployState string `json:"deploy_state"`
|
|
}
|
|
|
|
type devServer struct {
|
|
ID string `json:"id"`
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type buildHook struct {
|
|
ID string `json:"id"`
|
|
Title string `json:"title"`
|
|
Branch string `json:"branch"`
|
|
}
|
|
|
|
type serviceInstance struct {
|
|
ID string `json:"id"`
|
|
ServiceName string `json:"service_name"`
|
|
Url string `json:"url"`
|
|
}
|
|
|
|
type function struct {
|
|
ID string `json:"id"`
|
|
Provider string `json:"provider"`
|
|
}
|
|
|
|
// this handle response of 3 API's
|
|
type formSubmissionSplitInfo struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type dnsZone struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type service struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
ServicePath string `json:"service_path"`
|
|
}
|