mcclient

package
v0.0.0-...-fdc8e6b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 13, 2022 License: Unlicense Imports: 19 Imported by: 0

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

Constants

This section is empty.

Variables

View Source
var DefBuckets = []float64{.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10}
View Source
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

func (c *Config) RegisterFlags(f *flag.FlagSet)

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 NewMcClient(cfg *Config) *McClient

func (*McClient) CacheInsertMcUser

func (mc *McClient) CacheInsertMcUser(logger log.Logger, uuid string, user mcuser.McUser) (err error)

func (*McClient) CacheInsertTexture

func (mc *McClient) CacheInsertTexture(logger log.Logger, textureKey string, textureBytes []byte) (err error)

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 (mc *McClient) CacheRetrieveMcUser(logger log.Logger, uuid string) (user mcuser.McUser, err error)

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) GetMcUser

func (mc *McClient) GetMcUser(logger log.Logger, uuid string) (mcUser mcuser.McUser, err error)

func (*McClient) GetMcUserFromReq

func (mc *McClient) GetMcUserFromReq(logger log.Logger, userReq UserReq) (log.Logger, mcuser.McUser, error)

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

func (mc *McClient) GetSkinFromReq(logger log.Logger, userReq UserReq) minecraft.Skin

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 (mc *McClient) GetTexture(logger log.Logger, textureKey string, textureURL string) (textureIO mcuser.TextureIO, err error)

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?

func (*McClient) RequestMcUser

func (mc *McClient) RequestMcUser(logger log.Logger, uuid string, mcUser mcuser.McUser) mcuser.McUser

func (*McClient) RequestTexture

func (mc *McClient) RequestTexture(logger log.Logger, textureKey string, textureURL string) (textureIO mcuser.TextureIO, err error)

Remember to close the mcuser.TextureIO.ReadCloser if error is nil

func (*McClient) RequestUUIDEntry

func (mc *McClient) RequestUUIDEntry(logger log.Logger, username string, uuidEntry mc_uuid.UUIDEntry) mc_uuid.UUIDEntry

type UserReq

type UserReq minecraft.User

func (UserReq) GetUUID

func (ur UserReq) GetUUID(logger log.Logger, mc *McClient) (newLogger log.Logger, uuid string, err error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL