You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
798 B
47 lines
798 B
package model |
|
|
|
import ( |
|
"fmt" |
|
"regexp" |
|
"strings" |
|
) |
|
|
|
var ( |
|
_regFmt = `.*/bfs/([\S]+)/%s.xml` |
|
) |
|
|
|
// DmSpecialContent . |
|
type DmSpecialContent struct { |
|
ID int64 `json:"id"` |
|
Content string `json:"content"` |
|
} |
|
|
|
// DmSpecial special dm bfs location |
|
type DmSpecial struct { |
|
ID int64 |
|
Type int32 |
|
Oid int64 |
|
Locations string |
|
} |
|
|
|
// Split . |
|
func (d *DmSpecial) Split() []string { |
|
return strings.Split(d.Locations, ",") |
|
} |
|
|
|
// Join . |
|
func (d *DmSpecial) Join(s []string) { |
|
d.Locations = strings.Join(s, ",") |
|
} |
|
|
|
// Find find url if exist |
|
func (d *DmSpecial) Find(sha1Sum string) string { |
|
locations := d.Split() |
|
reg := regexp.MustCompile(fmt.Sprintf(_regFmt, sha1Sum)) |
|
for _, location := range locations { |
|
if reg.MatchString(location) { |
|
return location |
|
} |
|
} |
|
return "" |
|
}
|
|
|