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.
62 lines
1.0 KiB
62 lines
1.0 KiB
package model |
|
|
|
import ( |
|
"errors" |
|
) |
|
|
|
const ( |
|
bit1 = int8(1) |
|
bit2 = int8(1) << 1 |
|
|
|
// PubOnly pub only |
|
PubOnly = bit2 | int8(0) |
|
// SubOnly sub only |
|
SubOnly = int8(0) | bit1 |
|
// PubSub pub and sub |
|
PubSub = bit2 | bit1 |
|
) |
|
|
|
var ( |
|
errGroup = errors.New("error group") |
|
errTopic = errors.New("error topic") |
|
errKey = errors.New("error key") |
|
errSecret = errors.New("error secret") |
|
) |
|
|
|
// Auth databus auth info accordance with table:bilibili_databus_v2.auth |
|
type Auth struct { |
|
Group string |
|
Topic string |
|
Operation int8 |
|
Key string |
|
Secret string |
|
Batch int64 |
|
Cluster string |
|
} |
|
|
|
// CanPub judge producer auth |
|
func (a *Auth) CanPub() bool { |
|
return a.Operation&bit2 == bit2 |
|
} |
|
|
|
// CanSub judge consumer auth |
|
func (a *Auth) CanSub() bool { |
|
return a.Operation&bit1 == bit1 |
|
} |
|
|
|
// Auth judge auth |
|
func (a *Auth) Auth(group, topic, key, secret string) error { |
|
if a.Group != group { |
|
return errGroup |
|
} |
|
if a.Topic != topic { |
|
return errTopic |
|
} |
|
if a.Key != key { |
|
return errKey |
|
} |
|
if a.Secret != secret { |
|
return errSecret |
|
} |
|
return nil |
|
}
|
|
|