From ff1be787f2e258f7f0e45c3ef5a7a8f3a4218578 Mon Sep 17 00:00:00 2001 From: Samuel Lorch Date: Mon, 30 Aug 2021 14:00:05 +0200 Subject: [PATCH] move api package to sub folder --- api.go => api/api.go | 2 +- auth.go => api/auth.go | 2 +- client.go => api/client.go | 2 +- comments.go => api/comments.go | 2 +- encryption.go => api/encryption.go | 2 +- errors.go => api/errors.go | 2 +- favorites.go => api/favorites.go | 2 +- folders.go => api/folders.go | 2 +- gpgkey.go => api/gpgkey.go | 2 +- groups.go => api/groups.go | 2 +- healthcheck.go => api/healthcheck.go | 2 +- misc.go => api/misc.go | 2 +- permissions.go => api/permissions.go | 2 +- resource_types.go => api/resource_types.go | 2 +- resources.go => api/resources.go | 2 +- roles.go => api/roles.go | 2 +- secrets.go => api/secrets.go | 2 +- share.go => api/share.go | 2 +- time.go => api/time.go | 2 +- users.go => api/users.go | 2 +- helper/folder.go | 16 ++++----- helper/resources.go | 38 +++++++++++----------- helper/share.go | 28 ++++++++-------- 23 files changed, 61 insertions(+), 61 deletions(-) rename api.go => api/api.go (99%) rename auth.go => api/auth.go (99%) rename client.go => api/client.go (99%) rename comments.go => api/comments.go (99%) rename encryption.go => api/encryption.go (98%) rename errors.go => api/errors.go (91%) rename favorites.go => api/favorites.go (98%) rename folders.go => api/folders.go (99%) rename gpgkey.go => api/gpgkey.go (98%) rename groups.go => api/groups.go (99%) rename healthcheck.go => api/healthcheck.go (97%) rename misc.go => api/misc.go (96%) rename permissions.go => api/permissions.go (98%) rename resource_types.go => api/resource_types.go (98%) rename resources.go => api/resources.go (99%) rename roles.go => api/roles.go (98%) rename secrets.go => api/secrets.go (98%) rename share.go => api/share.go (99%) rename time.go => api/time.go (96%) rename users.go => api/users.go (99%) diff --git a/api.go b/api/api.go similarity index 99% rename from api.go rename to api/api.go index b147046..0ea2a29 100644 --- a/api.go +++ b/api/api.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/auth.go b/api/auth.go similarity index 99% rename from auth.go rename to api/auth.go index 3133e1b..495b190 100644 --- a/auth.go +++ b/api/auth.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/client.go b/api/client.go similarity index 99% rename from client.go rename to api/client.go index 50e96c2..c6ced26 100644 --- a/client.go +++ b/api/client.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "bytes" diff --git a/comments.go b/api/comments.go similarity index 99% rename from comments.go rename to api/comments.go index 85fac40..05f4c02 100644 --- a/comments.go +++ b/api/comments.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/encryption.go b/api/encryption.go similarity index 98% rename from encryption.go rename to api/encryption.go index 146466f..313ec4c 100644 --- a/encryption.go +++ b/api/encryption.go @@ -1,4 +1,4 @@ -package passbolt +package api import "github.com/ProtonMail/gopenpgp/v2/helper" diff --git a/errors.go b/api/errors.go similarity index 91% rename from errors.go rename to api/errors.go index d4cdc7a..0d0c1f0 100644 --- a/errors.go +++ b/api/errors.go @@ -1,4 +1,4 @@ -package passbolt +package api import "errors" diff --git a/favorites.go b/api/favorites.go similarity index 98% rename from favorites.go rename to api/favorites.go index 646b6b5..11248cf 100644 --- a/favorites.go +++ b/api/favorites.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/folders.go b/api/folders.go similarity index 99% rename from folders.go rename to api/folders.go index 565e6b0..2622200 100644 --- a/folders.go +++ b/api/folders.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/gpgkey.go b/api/gpgkey.go similarity index 98% rename from gpgkey.go rename to api/gpgkey.go index d7a7d00..f4ce59e 100644 --- a/gpgkey.go +++ b/api/gpgkey.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/groups.go b/api/groups.go similarity index 99% rename from groups.go rename to api/groups.go index 6b13887..5373111 100644 --- a/groups.go +++ b/api/groups.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/healthcheck.go b/api/healthcheck.go similarity index 97% rename from healthcheck.go rename to api/healthcheck.go index ff45226..f5ad996 100644 --- a/healthcheck.go +++ b/api/healthcheck.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/misc.go b/api/misc.go similarity index 96% rename from misc.go rename to api/misc.go index 2d7f595..eeebdfd 100644 --- a/misc.go +++ b/api/misc.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "crypto/rand" diff --git a/permissions.go b/api/permissions.go similarity index 98% rename from permissions.go rename to api/permissions.go index 88ad8b3..d249c98 100644 --- a/permissions.go +++ b/api/permissions.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/resource_types.go b/api/resource_types.go similarity index 98% rename from resource_types.go rename to api/resource_types.go index 0581cbf..09bd485 100644 --- a/resource_types.go +++ b/api/resource_types.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/resources.go b/api/resources.go similarity index 99% rename from resources.go rename to api/resources.go index 0e9bcda..fd91769 100644 --- a/resources.go +++ b/api/resources.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/roles.go b/api/roles.go similarity index 98% rename from roles.go rename to api/roles.go index 81c4c72..57ab97b 100644 --- a/roles.go +++ b/api/roles.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/secrets.go b/api/secrets.go similarity index 98% rename from secrets.go rename to api/secrets.go index 21bb6c3..9618a94 100644 --- a/secrets.go +++ b/api/secrets.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/share.go b/api/share.go similarity index 99% rename from share.go rename to api/share.go index 641bdf5..18a95c4 100644 --- a/share.go +++ b/api/share.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/time.go b/api/time.go similarity index 96% rename from time.go rename to api/time.go index da63ce2..31b23a2 100644 --- a/time.go +++ b/api/time.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "strings" diff --git a/users.go b/api/users.go similarity index 99% rename from users.go rename to api/users.go index 1b24d9d..b71a296 100644 --- a/users.go +++ b/api/users.go @@ -1,4 +1,4 @@ -package passbolt +package api import ( "context" diff --git a/helper/folder.go b/helper/folder.go index d31d4c9..55b66bb 100644 --- a/helper/folder.go +++ b/helper/folder.go @@ -3,31 +3,31 @@ package helper import ( "context" - "github.com/speatzle/go-passbolt" + "github.com/speatzle/go-passbolt/api" ) -func CreateFolder(ctx context.Context, c *passbolt.Client, folderParentID, name string) (string, error) { - f, err := c.CreateFolder(ctx, passbolt.Folder{ +func CreateFolder(ctx context.Context, c *api.Client, folderParentID, name string) (string, error) { + f, err := c.CreateFolder(ctx, api.Folder{ Name: name, FolderParentID: folderParentID, }) return f.ID, err } -func GetFolder(ctx context.Context, c *passbolt.Client, folderID string) (string, string, error) { +func GetFolder(ctx context.Context, c *api.Client, folderID string) (string, string, error) { f, err := c.GetFolder(ctx, folderID) return f.FolderParentID, f.Name, err } -func UpdateFolder(ctx context.Context, c *passbolt.Client, folderID, name string) error { - _, err := c.UpdateFolder(ctx, folderID, passbolt.Folder{Name: name}) +func UpdateFolder(ctx context.Context, c *api.Client, folderID, name string) error { + _, err := c.UpdateFolder(ctx, folderID, api.Folder{Name: name}) return err } -func DeleteFolder(ctx context.Context, c *passbolt.Client, folderID string) error { +func DeleteFolder(ctx context.Context, c *api.Client, folderID string) error { return c.DeleteFolder(ctx, folderID) } -func MoveFolder(ctx context.Context, c *passbolt.Client, folderID, folderParentID string) error { +func MoveFolder(ctx context.Context, c *api.Client, folderID, folderParentID string) error { return c.MoveFolder(ctx, folderID, folderParentID) } diff --git a/helper/resources.go b/helper/resources.go index 268206f..48ff413 100644 --- a/helper/resources.go +++ b/helper/resources.go @@ -5,16 +5,16 @@ import ( "encoding/json" "fmt" - "github.com/speatzle/go-passbolt" + "github.com/speatzle/go-passbolt/api" ) // CreateResource Creates a Resource where the Password and Description are Encrypted and Returns the Resources ID -func CreateResource(ctx context.Context, c *passbolt.Client, folderParentID, name, username, uri, password, description string) (string, error) { +func CreateResource(ctx context.Context, c *api.Client, folderParentID, name, username, uri, password, description string) (string, error) { types, err := c.GetResourceTypes(ctx, nil) if err != nil { return "", fmt.Errorf("Getting ResourceTypes: %w", err) } - var rType *passbolt.ResourceType + var rType *api.ResourceType for _, tmp := range types { if tmp.Slug == "password-and-description" { rType = &tmp @@ -24,7 +24,7 @@ func CreateResource(ctx context.Context, c *passbolt.Client, folderParentID, nam return "", fmt.Errorf("Cannot find Resource type password-and-description") } - resource := passbolt.Resource{ + resource := api.Resource{ ResourceTypeID: rType.ID, FolderParentID: folderParentID, Name: name, @@ -32,7 +32,7 @@ func CreateResource(ctx context.Context, c *passbolt.Client, folderParentID, nam URI: uri, } - tmp := passbolt.SecretDataTypePasswordAndDescription{ + tmp := api.SecretDataTypePasswordAndDescription{ Password: password, Description: description, } @@ -45,7 +45,7 @@ func CreateResource(ctx context.Context, c *passbolt.Client, folderParentID, nam if err != nil { return "", fmt.Errorf("Encrypting Secret Data for User me: %w", err) } - resource.Secrets = []passbolt.Secret{{Data: encSecretData}} + resource.Secrets = []api.Secret{{Data: encSecretData}} newresource, err := c.CreateResource(ctx, resource) if err != nil { @@ -55,19 +55,19 @@ func CreateResource(ctx context.Context, c *passbolt.Client, folderParentID, nam } // CreateResourceSimple Creates a Legacy Resource where only the Password is Encrypted and Returns the Resources ID -func CreateResourceSimple(ctx context.Context, c *passbolt.Client, folderParentID, name, username, uri, password, description string) (string, error) { +func CreateResourceSimple(ctx context.Context, c *api.Client, folderParentID, name, username, uri, password, description string) (string, error) { enc, err := c.EncryptMessage(password) if err != nil { return "", fmt.Errorf("Encrypting Password: %w", err) } - res := passbolt.Resource{ + res := api.Resource{ Name: name, URI: uri, Username: username, FolderParentID: folderParentID, Description: description, - Secrets: []passbolt.Secret{ + Secrets: []api.Secret{ {Data: enc}, }, } @@ -80,7 +80,7 @@ func CreateResourceSimple(ctx context.Context, c *passbolt.Client, folderParentI } // GetResource Gets a Resource by ID -func GetResource(ctx context.Context, c *passbolt.Client, resourceID string) (folderParentID, name, username, uri, password, description string, err error) { +func GetResource(ctx context.Context, c *api.Client, resourceID string) (folderParentID, name, username, uri, password, description string, err error) { resource, err := c.GetResource(ctx, resourceID) if err != nil { return "", "", "", "", "", "", fmt.Errorf("Getting Resource: %w", err) @@ -109,7 +109,7 @@ func GetResource(ctx context.Context, c *passbolt.Client, resourceID string) (fo return "", "", "", "", "", "", fmt.Errorf("Decrypting Secret Data: %w", err) } - var secretData passbolt.SecretDataTypePasswordAndDescription + var secretData api.SecretDataTypePasswordAndDescription err = json.Unmarshal([]byte(rawSecretData), &secretData) if err != nil { return "", "", "", "", "", "", fmt.Errorf("Parsing Decrypted Secret Data: %w", err) @@ -124,7 +124,7 @@ func GetResource(ctx context.Context, c *passbolt.Client, resourceID string) (fo // UpdateResource Updates all Fields. // Note if you want to Change the FolderParentID please use the MoveResource Function -func UpdateResource(ctx context.Context, c *passbolt.Client, resourceID, name, username, uri, password, description string) error { +func UpdateResource(ctx context.Context, c *api.Client, resourceID, name, username, uri, password, description string) error { resource, err := c.GetResource(ctx, resourceID) if err != nil { return fmt.Errorf("Getting Resource: %w", err) @@ -135,7 +135,7 @@ func UpdateResource(ctx context.Context, c *passbolt.Client, resourceID, name, u return fmt.Errorf("Getting ResourceType: %w", err) } - opts := &passbolt.GetUsersOptions{ + opts := &api.GetUsersOptions{ FilterHasAccess: resourceID, } users, err := c.GetUsers(ctx, opts) @@ -143,7 +143,7 @@ func UpdateResource(ctx context.Context, c *passbolt.Client, resourceID, name, u return fmt.Errorf("Getting Users: %w", err) } - newResource := passbolt.Resource{ + newResource := api.Resource{ ID: resourceID, // This needs to be specified or it will revert to a legacy password ResourceTypeID: resource.ResourceTypeID, @@ -158,7 +158,7 @@ func UpdateResource(ctx context.Context, c *passbolt.Client, resourceID, name, u newResource.Description = description secretData = password case "password-and-description": - tmp := passbolt.SecretDataTypePasswordAndDescription{ + tmp := api.SecretDataTypePasswordAndDescription{ Password: password, Description: description, } @@ -171,7 +171,7 @@ func UpdateResource(ctx context.Context, c *passbolt.Client, resourceID, name, u return fmt.Errorf("Unknown ResourceType: %v", rType.Slug) } - newResource.Secrets = []passbolt.Secret{} + newResource.Secrets = []api.Secret{} for _, user := range users { var encSecretData string // if this is our user use our stored and verified public key instead @@ -186,7 +186,7 @@ func UpdateResource(ctx context.Context, c *passbolt.Client, resourceID, name, u return fmt.Errorf("Encrypting Secret Data for User %v: %w", user.ID, err) } } - newResource.Secrets = append(newResource.Secrets, passbolt.Secret{ + newResource.Secrets = append(newResource.Secrets, api.Secret{ UserID: user.ID, Data: encSecretData, }) @@ -199,10 +199,10 @@ func UpdateResource(ctx context.Context, c *passbolt.Client, resourceID, name, u return nil } -func DeleteResource(ctx context.Context, c *passbolt.Client, resourceID string) error { +func DeleteResource(ctx context.Context, c *api.Client, resourceID string) error { return c.DeleteResource(ctx, resourceID) } -func MoveResource(ctx context.Context, c *passbolt.Client, resourceID, folderParentID string) error { +func MoveResource(ctx context.Context, c *api.Client, resourceID, folderParentID string) error { return c.MoveResource(ctx, resourceID, folderParentID) } diff --git a/helper/share.go b/helper/share.go index 4f4c677..68dd153 100644 --- a/helper/share.go +++ b/helper/share.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/speatzle/go-passbolt" + "github.com/speatzle/go-passbolt/api" ) // ShareOperation defines how Resources are to be Shared With Users/Groups @@ -20,7 +20,7 @@ type ShareOperation struct { // ShareResourceWithUsersAndGroups Shares a Resource With The Users and Groups with the Specified Permission Type, // if the Resource has already been shared With the User/Group the Permission Type will be Adjusted/Deleted -func ShareResourceWithUsersAndGroups(ctx context.Context, c *passbolt.Client, resourceID string, Users []string, Groups []string, permissionType int) error { +func ShareResourceWithUsersAndGroups(ctx context.Context, c *api.Client, resourceID string, Users []string, Groups []string, permissionType int) error { changes := []ShareOperation{} for _, userID := range Users { changes = append(changes, ShareOperation{ @@ -40,7 +40,7 @@ func ShareResourceWithUsersAndGroups(ctx context.Context, c *passbolt.Client, re } // ShareResource Shares a Resource as Specified in the Passed ShareOperation Struct Slice -func ShareResource(ctx context.Context, c *passbolt.Client, resourceID string, changes []ShareOperation) error { +func ShareResource(ctx context.Context, c *api.Client, resourceID string, changes []ShareOperation) error { oldPermissions, err := c.GetResourcePermissions(ctx, resourceID) if err != nil { return fmt.Errorf("Getting Resource Permissions: %w", err) @@ -51,7 +51,7 @@ func ShareResource(ctx context.Context, c *passbolt.Client, resourceID string, c return fmt.Errorf("Generating Resource Permission Changes: %w", err) } - shareRequest := passbolt.ResourceShareRequest{Permissions: permissionChanges} + shareRequest := api.ResourceShareRequest{Permissions: permissionChanges} secret, err := c.GetSecret(ctx, resourceID) if err != nil { @@ -73,7 +73,7 @@ func ShareResource(ctx context.Context, c *passbolt.Client, resourceID string, c return fmt.Errorf("Get Users: %w", err) } - shareRequest.Secrets = []passbolt.Secret{} + shareRequest.Secrets = []api.Secret{} for _, user := range simulationResult.Changes.Added { pubkey, err := getPublicKeyByUserID(user.User.ID, users) if err != nil { @@ -84,7 +84,7 @@ func ShareResource(ctx context.Context, c *passbolt.Client, resourceID string, c if err != nil { return fmt.Errorf("Encrypting Secret for User %v: %w", user.User.ID, err) } - shareRequest.Secrets = append(shareRequest.Secrets, passbolt.Secret{ + shareRequest.Secrets = append(shareRequest.Secrets, api.Secret{ UserID: user.User.ID, Data: encSecretData, }) @@ -100,7 +100,7 @@ func ShareResource(ctx context.Context, c *passbolt.Client, resourceID string, c // ShareFolderWithUsersAndGroups Shares a Folder With The Users and Groups with the Specified Type, // if the Folder has already been shared With the User/Group the Permission Type will be Adjusted/Deleted. // Note: Resources Permissions in the Folder are not Adjusted (Like the Extention does) -func ShareFolderWithUsersAndGroups(ctx context.Context, c *passbolt.Client, folderID string, Users []string, Groups []string, permissionType int) error { +func ShareFolderWithUsersAndGroups(ctx context.Context, c *api.Client, folderID string, Users []string, Groups []string, permissionType int) error { changes := []ShareOperation{} for _, userID := range Users { changes = append(changes, ShareOperation{ @@ -121,7 +121,7 @@ func ShareFolderWithUsersAndGroups(ctx context.Context, c *passbolt.Client, fold // ShareFolder Shares a Folder as Specified in the Passed ShareOperation Struct Slice. // Note Resources Permissions in the Folder are not Adjusted -func ShareFolder(ctx context.Context, c *passbolt.Client, folderID string, changes []ShareOperation) error { +func ShareFolder(ctx context.Context, c *api.Client, folderID string, changes []ShareOperation) error { oldPermissions, err := c.GetFolderPermissions(ctx, folderID) if err != nil { return fmt.Errorf("Getting Folder Permissions: %w", err) @@ -140,7 +140,7 @@ func ShareFolder(ctx context.Context, c *passbolt.Client, folderID string, chang } // GeneratePermissionChanges Generates the Permission Changes for a Resource/Folder nessesary for a single Share Operation -func GeneratePermissionChanges(oldPermissions []passbolt.Permission, changes []ShareOperation) ([]passbolt.Permission, error) { +func GeneratePermissionChanges(oldPermissions []api.Permission, changes []ShareOperation) ([]api.Permission, error) { // Check for Duplicate Users/Groups as that would break stuff for i, changeA := range changes { for j, changeB := range changes { @@ -157,10 +157,10 @@ func GeneratePermissionChanges(oldPermissions []passbolt.Permission, changes []S ACO := oldPermissions[0].ACO ACOID := oldPermissions[0].ACOForeignKey - permissionChanges := []passbolt.Permission{} + permissionChanges := []api.Permission{} for _, change := range changes { // Find Permission thats invloves the Same ARO as Requested in the change - var oldPermission *passbolt.Permission + var oldPermission *api.Permission for _, oldPerm := range oldPermissions { if oldPerm.ARO == change.ARO && oldPerm.AROForeignKey == change.AROID { oldPermission = &oldPerm @@ -169,7 +169,7 @@ func GeneratePermissionChanges(oldPermissions []passbolt.Permission, changes []S // Check Wheter Matching Permission Already Exists and needs to be adjusted or is a new one can be created if oldPermission == nil { if change.Type == 15 || change.Type == 7 || change.Type == 1 { - permissionChanges = append(permissionChanges, passbolt.Permission{ + permissionChanges = append(permissionChanges, api.Permission{ IsNew: true, Type: change.Type, ARO: change.ARO, @@ -183,7 +183,7 @@ func GeneratePermissionChanges(oldPermissions []passbolt.Permission, changes []S return nil, fmt.Errorf("Unknown Permission Type: %v", change.Type) } } else { - tmp := passbolt.Permission{ + tmp := api.Permission{ ID: oldPermission.ID, ARO: change.ARO, AROForeignKey: change.AROID, @@ -208,7 +208,7 @@ func GeneratePermissionChanges(oldPermissions []passbolt.Permission, changes []S return permissionChanges, nil } -func getPublicKeyByUserID(userID string, Users []passbolt.User) (string, error) { +func getPublicKeyByUserID(userID string, Users []api.User) (string, error) { for _, user := range Users { if user.ID == userID { return user.GPGKey.ArmoredKey, nil