50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
package github
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
|
|
"github.com/google/go-github/github"
|
|
)
|
|
|
|
const (
|
|
pullPermission string = "pull"
|
|
pushPermission string = "push"
|
|
adminPermission string = "admin"
|
|
|
|
writePermission string = "write"
|
|
readPermission string = "read"
|
|
)
|
|
|
|
func getRepoPermission(p *map[string]bool) (string, error) {
|
|
|
|
// Permissions are returned in this map format such that if you have a certain level
|
|
// of permission, all levels below are also true. For example, if a team has push
|
|
// permission, the map will be: {"pull": true, "push": true, "admin": false}
|
|
if (*p)[adminPermission] {
|
|
return adminPermission, nil
|
|
} else if (*p)[pushPermission] {
|
|
return pushPermission, nil
|
|
} else {
|
|
if (*p)[pullPermission] {
|
|
return pullPermission, nil
|
|
}
|
|
return "", errors.New("At least one permission expected from permissions map.")
|
|
}
|
|
}
|
|
|
|
func getInvitationPermission(i *github.RepositoryInvitation) (string, error) {
|
|
// Permissions for some GitHub API routes are expressed as "read",
|
|
// "write", and "admin"; in other places, they are expressed as "pull",
|
|
// "push", and "admin".
|
|
if *i.Permissions == readPermission {
|
|
return pullPermission, nil
|
|
} else if *i.Permissions == writePermission {
|
|
return pushPermission, nil
|
|
} else if *i.Permissions == adminPermission {
|
|
return adminPermission, nil
|
|
}
|
|
|
|
return "", fmt.Errorf("unexpected permission value: %v", *i.Permissions)
|
|
}
|