folders.go

v1.0.0
Doc Versions Source
1
package bitwarden
2
3
import (
4
	"context"
5
	"net/url"
6
)
7
8
// FoldersService handles folder operations.
9
type FoldersService struct {
10
	t *transport
11
}
12
13
// List returns all folders, optionally filtered by search.
14
func (s *FoldersService) List(ctx context.Context, search string) ([]Folder, error) {
15
	var q url.Values
16
	if search != "" {
17
		q = url.Values{"search": {search}}
18
	}
19
	data, err := s.t.get(ctx, "/list/object/folders", q)
20
	if err != nil {
21
		return nil, err
22
	}
23
	return decodeListResponse[Folder](data)
24
}
25
26
// Get returns a single folder by ID.
27
func (s *FoldersService) Get(ctx context.Context, id string) (*Folder, error) {
28
	data, err := s.t.get(ctx, "/object/folder/"+id, nil)
29
	if err != nil {
30
		return nil, err
31
	}
32
	return decodeObjectResponsePtr[Folder](data)
33
}
34
35
// Create creates a new folder.
36
func (s *FoldersService) Create(ctx context.Context, folder Folder) (*Folder, error) {
37
	data, err := s.t.post(ctx, "/object/folder", folder)
38
	if err != nil {
39
		return nil, err
40
	}
41
	return decodeObjectResponsePtr[Folder](data)
42
}
43
44
// Update updates an existing folder.
45
func (s *FoldersService) Update(ctx context.Context, id string, folder Folder) (*Folder, error) {
46
	data, err := s.t.put(ctx, "/object/folder/"+id, folder)
47
	if err != nil {
48
		return nil, err
49
	}
50
	return decodeObjectResponsePtr[Folder](data)
51
}
52
53
// Delete deletes a folder.
54
func (s *FoldersService) Delete(ctx context.Context, id string) error {
55
	_, err := s.t.del(ctx, "/object/folder/"+id)
56
	return err
57
}
58

Source Files