diff options
| author | Paul Buetow <paul@buetow.org> | 2024-08-14 10:10:18 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-08-14 10:10:18 +0300 |
| commit | ca2c0045ed86f8c9bc6dccaf20c9e2c2c0fae3f8 (patch) | |
| tree | 2411cca5764b9aacf229ff61bc46a39fd8c65f0d /internal/server/repository/repository.go | |
| parent | a43042d48cfbf46f42b1df08e94903ee69d48aed (diff) | |
move regex check to repository from handler
Diffstat (limited to 'internal/server/repository/repository.go')
| -rw-r--r-- | internal/server/repository/repository.go | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/internal/server/repository/repository.go b/internal/server/repository/repository.go index 6c0a9e3..464d11a 100644 --- a/internal/server/repository/repository.go +++ b/internal/server/repository/repository.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "log" + "regexp" "sync" "time" @@ -37,6 +38,7 @@ type Repository struct { mu *sync.Mutex fs fs loaded *bool + getIdRe *regexp.Regexp } func Instance(conf server.ServerConfig) Repository { @@ -58,6 +60,8 @@ func newRepository(conf server.ServerConfig, fs fs) Repository { mu: &sync.Mutex{}, fs: fs, loaded: &loaded, + getIdRe: regexp.MustCompile(`^[a-z0-9]{64}$`), + // getIdRe: regexp.MustCompile(`^/[0-9]{4}/[a-z0-9]{64}\.json$`), } } @@ -134,13 +138,19 @@ func (r Repository) ListBytes() ([]byte, error) { return json.Marshal(pairs) } -func (r Repository) Get(id string) (types.Entry, bool) { +func (r Repository) Get(id string) (types.Entry, error) { + if !r.getIdRe.MatchString(id) { + return types.Entry{}, fmt.Errorf("invalid id %s", id) + } _ = r.load() r.mu.Lock() defer r.mu.Unlock() ent, ok := r.entries[id] - return ent, ok + if !ok { + return ent, fmt.Errorf("no entry with id %s found", id) + } + return ent, nil } func (r Repository) hasSameEntry(pair entryPair) bool { |
