Documentation ¶
Overview ¶
Usernames and UUIDs should be normalized before calling mcclient (eg. lowercase / no-dashes)
Usernames and UUIDs should be normalized before calling mcclient (eg. lowercase / no-dashes)
Index ¶
- Variables
- type Config
- type McClient
- func (mc *McClient) CacheInsertMcUser(logger log.Logger, uuid string, user mcuser.McUser) (err error)
- func (mc *McClient) CacheInsertTexture(logger log.Logger, textureKey string, textureBytes []byte) (err error)
- func (mc *McClient) CacheInsertUUIDEntry(logger log.Logger, username string, uuidEntry uuid.UUIDEntry) (err error)
- func (mc *McClient) CacheRetrieveMcUser(logger log.Logger, uuid string) (user mcuser.McUser, err error)
- func (mc *McClient) CacheRetrieveTexture(logger log.Logger, textureKey string) (textureIO mcuser.TextureIO, err error)
- func (mc *McClient) CacheRetrieveUUIDEntry(logger log.Logger, username string) (uuidEntry uuid.UUIDEntry, err error)
- func (mc *McClient) GetMcUser(logger log.Logger, uuid string) (mcUser mcuser.McUser, err error)
- func (mc *McClient) GetMcUserFromReq(logger log.Logger, userReq UserReq) (log.Logger, mcuser.McUser, error)
- func (mc *McClient) GetSkinBufferFromReq(logger log.Logger, userReq UserReq) (log.Logger, mcuser.TextureIO)
- func (mc *McClient) GetSkinFromReq(logger log.Logger, userReq UserReq) minecraft.Skin
- func (mc *McClient) GetTexture(logger log.Logger, textureKey string, textureURL string) (textureIO mcuser.TextureIO, err error)
- func (mc *McClient) GetUUIDEntry(logger log.Logger, username string) (uuidEntry mc_uuid.UUIDEntry, err error)
- func (mc *McClient) RequestMcUser(logger log.Logger, uuid string, mcUser mcuser.McUser) mcuser.McUser
- func (mc *McClient) RequestTexture(logger log.Logger, textureKey string, textureURL string) (textureIO mcuser.TextureIO, err error)
- func (mc *McClient) RequestUUIDEntry(logger log.Logger, username string, uuidEntry mc_uuid.UUIDEntry) mc_uuid.UUIDEntry
- type UserReq
Constants ¶
This section is empty.
Variables ¶
var DefBuckets = []float64{.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10}
var (
ErrCacheDisabled = errors.New("Cache is disabled")
)
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { UpstreamTimeout time.Duration `yaml:"upstream_timeout"` UserAgent string `yaml:"useragent"` SessionServerURL string `yaml:"sessionserver_url"` ProfileURL string `yaml:"profile_url"` TexturesBaseURL string CacheUUID *config.Config `yaml:"cache_uuid"` CacheUserData *config.Config `yaml:"cache_userdata"` CacheTextures *config.Config `yaml:"cache_textures"` }
func (*Config) RegisterFlags ¶
RegisterFlags registers flag.
type McClient ¶
type McClient struct { Caches struct { UUID cache.Cache UserData cache.Cache Textures cache.Cache } API *minecraft.Minecraft TexturesBaseURL string }
Todo: Could have a base logger which we then apply context to when needed
func NewMcClient ¶
func (*McClient) CacheInsertMcUser ¶
func (*McClient) CacheInsertTexture ¶
func (*McClient) CacheInsertUUIDEntry ¶
func (mc *McClient) CacheInsertUUIDEntry(logger log.Logger, username string, uuidEntry uuid.UUIDEntry) (err error)
CacheInsertUUIDEntry takes a valid UUIDEntry and caches it There is no sanity checking on the input The item is cached witha TTL assuming it's brand-new
func (*McClient) CacheRetrieveMcUser ¶
func (*McClient) CacheRetrieveTexture ¶
func (mc *McClient) CacheRetrieveTexture(logger log.Logger, textureKey string) (textureIO mcuser.TextureIO, err error)
Remember to close the mcuser.TextureIO.ReadCloser if error is nil
func (*McClient) CacheRetrieveUUIDEntry ¶
func (mc *McClient) CacheRetrieveUUIDEntry(logger log.Logger, username string) (uuidEntry uuid.UUIDEntry, err error)
CacheRetrieveUUIDEntry searches the cache based on Username, expecting a UUID in response
func (*McClient) GetMcUserFromReq ¶
func (*McClient) GetSkinBufferFromReq ¶
func (mc *McClient) GetSkinBufferFromReq(logger log.Logger, userReq UserReq) (log.Logger, mcuser.TextureIO)
Remember to close the mcuser.TextureIO.ReadCloser!
func (*McClient) GetSkinFromReq ¶
Todo: I need to be providing logging and request context in here This Method will decode the buffer into a Texture (fine for processing, but avoid if you are serving the plain skin)
func (*McClient) GetTexture ¶
func (*McClient) GetUUIDEntry ¶
func (mc *McClient) GetUUIDEntry(logger log.Logger, username string) (uuidEntry mc_uuid.UUIDEntry, err error)
Todo: Do we want a WaitGroup here? Only real downside is that we can't goroutine to insert into cache? Unless we have 2 locks? 1 here, and then one that blocks reads when writing?