keys := []cacheKey{"aid", aid}
ch := make(chan *Anime, 1)
+ if aid < 1 {
+ ch <- nil
+ close(ch)
+ }
+
ic := make(chan Cacheable, 1)
go func() { ch <- (<-ic).(*Anime); close(ch) }()
if intentMap.Intent(ic, keys...) {
keys := []cacheKey{"eid", eid}
ch := make(chan *Episode, 1)
+ if eid < 1 {
+ ch <- nil
+ close(ch)
+ return ch
+ }
+
ic := make(chan Cacheable, 1)
go func() { ch <- (<-ic).(*Episode); close(ch) }()
if intentMap.Intent(ic, keys...) {
"github.com/Kovensky/go-anidb/udp"
"image"
"log"
+ "regexp"
"strconv"
"strings"
"time"
ch := make(chan *File, 1)
+ if fid < 1 {
+ ch <- nil
+ close(ch)
+ return ch
+ }
+
ic := make(chan Cacheable, 1)
go func() { ch <- (<-ic).(*File); close(ch) }()
if intentMap.Intent(ic, keys...) {
return ch
}
+var validEd2kHash = regexp.MustCompile(`\A[:xdigit:]{32}\z`)
+
// Retrieves a File by its Ed2kHash + Filesize combination. Uses the UDP API.
func (adb *AniDB) FileByEd2kSize(ed2k string, size int64) <-chan *File {
keys := []cacheKey{"fid", "by-ed2k", ed2k, size}
ch := make(chan *File, 1)
+ if size < 1 || !validEd2kHash.MatchString(ed2k) {
+ ch <- nil
+ close(ch)
+ return ch
+ }
+ // AniDB always uses lower case hashes
+ ed2k = strings.ToLower(ed2k)
+
ic := make(chan Cacheable, 1)
go func() {
fid := (<-ic).(FID)
keys := []cacheKey{"gid", gid}
ch := make(chan *Group, 1)
+ if gid < 1 {
+ ch <- nil
+ close(ch)
+ return ch
+ }
+
ic := make(chan Cacheable, 1)
go func() { ch <- (<-ic).(*Group); close(ch) }()
if intentMap.Intent(ic, keys...) {
altKeys := []cacheKey{"gid", "by-shortname", gname}
ch := make(chan *Group, 1)
+ if gname == "" {
+ ch <- nil
+ close(ch)
+ return ch
+ }
+
ic := make(chan Cacheable, 1)
go func() {
gid := (<-ic).(GID)
// Searches for all anime that match the given anime name, case sensitive.
func SearchAnimeAll(name string) titles.ResultSet {
+ if name == "" {
+ return nil
+ }
return titlesDB.FuzzySearch(name)
}
// Searches for all anime that match the given anime name, case folding.
func SearchAnimeFoldAll(name string) titles.ResultSet {
+ if name == "" {
+ return nil
+ }
return titlesDB.FuzzySearchFold(name)
}