inital commit
This commit is contained in:
36
ids.go
Normal file
36
ids.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package fa
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// SubmissionID identifies a submission. FA exposes these as positive integers
|
||||
// in URLs of the form /view/{id}/.
|
||||
type SubmissionID int64
|
||||
|
||||
func (id SubmissionID) String() string { return strconv.FormatInt(int64(id), 10) }
|
||||
|
||||
// JournalID identifies a journal entry. URL form: /journal/{id}/.
|
||||
type JournalID int64
|
||||
|
||||
func (id JournalID) String() string { return strconv.FormatInt(int64(id), 10) }
|
||||
|
||||
// CommentID identifies a comment within a submission or journal page.
|
||||
type CommentID int64
|
||||
|
||||
func (id CommentID) String() string { return strconv.FormatInt(int64(id), 10) }
|
||||
|
||||
// parseID parses a positive integer from a string and returns it as T.
|
||||
// Returns 0 and a wrapped error if s is empty or non-numeric. Used by parsers
|
||||
// to extract IDs from hrefs.
|
||||
func parseID[T ~int64](s string) (T, error) {
|
||||
if s == "" {
|
||||
return 0, fmt.Errorf("parse id: empty string")
|
||||
}
|
||||
n, err := strconv.ParseInt(s, 10, 64)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("parse id %q: %w", s, err)
|
||||
}
|
||||
return T(n), nil
|
||||
}
|
||||
Reference in New Issue
Block a user