This repository has been archived by the owner on Apr 18, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
in_memory_firmware_store.go
83 lines (69 loc) · 2.29 KB
/
in_memory_firmware_store.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package internal
import (
"fmt"
. "github.com/petewall/firmware-service/v2/lib"
)
type InMemoryFirmwareStore struct {
firmware FirmwareList
firmwareData [][]byte
}
func NewInMemoryFirmwareStore() *InMemoryFirmwareStore {
return &InMemoryFirmwareStore{
firmware: []*Firmware{},
firmwareData: [][]byte{},
}
}
func (fs *InMemoryFirmwareStore) GetAllFirmware() (FirmwareList, error) {
return fs.firmware, nil
}
func (fs *InMemoryFirmwareStore) GetAllTypes() ([]string, error) {
return fs.firmware.GetUniqueTypes(), nil
}
func (fs *InMemoryFirmwareStore) GetAllFirmwareByType(firmwareType string) (FirmwareList, error) {
var result FirmwareList
for _, firmware := range fs.firmware {
if firmware.Type == firmwareType {
result = append(result, firmware)
}
}
return result, nil
}
func (fs *InMemoryFirmwareStore) GetFirmware(firmwareType, firmwareVersion string) (*Firmware, error) {
for _, firmware := range fs.firmware {
if firmware.Type == firmwareType && firmware.Version == firmwareVersion {
return firmware, nil
}
}
return nil, nil
}
func (fs *InMemoryFirmwareStore) GetFirmwareData(firmwareType, firmwareVersion string) ([]byte, error) {
for index, firmware := range fs.firmware {
if firmware.Type == firmwareType && firmware.Version == firmwareVersion {
return fs.firmwareData[index], nil
}
}
return []byte{}, nil
}
func (fs *InMemoryFirmwareStore) AddFirmware(firmwareType, firmwareVersion string, data []byte) error {
existingFirmware, _ := fs.GetFirmware(firmwareType, firmwareVersion)
if existingFirmware != nil {
return fmt.Errorf("firmware %s %s already exists", firmwareType, firmwareVersion)
}
fs.firmware = append(fs.firmware, &Firmware{
Type: firmwareType,
Version: firmwareVersion,
Size: int64(len(data)),
})
fs.firmwareData = append(fs.firmwareData, data)
return nil
}
func (fs *InMemoryFirmwareStore) DeleteFirmware(firmwareType, firmwareVersion string) error {
for index, firmware := range fs.firmware {
if firmware.Type == firmwareType && firmware.Version == firmwareVersion {
fs.firmware = append(fs.firmware[:index], fs.firmware[index+1:]...)
fs.firmwareData = append(fs.firmwareData[:index], fs.firmwareData[index+1:]...)
return nil
}
}
return fmt.Errorf("firmware %s %s does not exist", firmwareType, firmwareVersion)
}