diff --git a/CHANGELOG.md b/CHANGELOG.md
index 23b709a..62d7d2d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] - xxxx-xx-xx
### Added
+- Mojang textures queue now can be completely disabled via `MOJANG_TEXTURES_ENABLED` param.
- Remote mode for Mojang's textures queue with a new configuration params: `MOJANG_TEXTURES_UUIDS_PROVIDER_DRIVER` and
`MOJANG_TEXTURES_UUIDS_PROVIDER_URL`.
diff --git a/README.md b/README.md
index 061a471..b91631c 100644
--- a/README.md
+++ b/README.md
@@ -113,6 +113,13 @@ docker-compose up -d app
MOJANG_TEXTURES_UUIDS_PROVIDER_DRIVER |
diff --git a/bootstrap/bootstrap.go b/bootstrap/bootstrap.go
index 9295b28..143b6bf 100644
--- a/bootstrap/bootstrap.go
+++ b/bootstrap/bootstrap.go
@@ -1,6 +1,7 @@
package bootstrap
import (
+ "fmt"
"net/url"
"os"
"time"
@@ -79,7 +80,7 @@ func CreateMojangUUIDsProvider(emitter http.Emitter) (mojangtextures.UUIDsProvid
if preferredUuidsProvider == "remote" {
remoteUrl, err := url.Parse(viper.GetString("mojang_textures.uuids_provider.url"))
if err != nil {
- return nil, err
+ return nil, fmt.Errorf("Unable to parse remote url: %w", err)
}
uuidsProvider = &mojangtextures.RemoteApiUuidsProvider{
diff --git a/cmd/serve.go b/cmd/serve.go
index 425f758..d1fb400 100644
--- a/cmd/serve.go
+++ b/cmd/serve.go
@@ -62,33 +62,39 @@ var serveCmd = &cobra.Command{
}
logger.Info("Capes repository successfully initialized")
- logger.Info("Preparing Mojang's textures queue")
- mojangUuidsRepository, err := redisFactory.CreateMojangUuidsRepository()
- if err != nil {
- logger.Emergency("Error on creating mojang uuids repo: :err", wd.ErrParam(err))
- os.Exit(1)
- }
+ var mojangTexturesProvider http.MojangTexturesProvider
+ if viper.GetBool("mojang_textures.enabled") {
+ logger.Info("Preparing Mojang's textures queue")
+ mojangUuidsRepository, err := redisFactory.CreateMojangUuidsRepository()
+ if err != nil {
+ logger.Emergency("Error on creating mojang uuids repo: :err", wd.ErrParam(err))
+ os.Exit(1)
+ }
- uuidsProvider, err := bootstrap.CreateMojangUUIDsProvider(dispatcher)
- if err != nil {
- logger.Emergency("Unable to parse remote url :err", wd.ErrParam(err))
- os.Exit(1)
- }
+ uuidsProvider, err := bootstrap.CreateMojangUUIDsProvider(dispatcher)
+ if err != nil {
+ logger.Emergency("Unable to create mojang uuids provider: :err", wd.ErrParam(err))
+ os.Exit(1)
+ }
- texturesStorage := mojangtextures.NewInMemoryTexturesStorage()
- texturesStorage.Start()
- mojangTexturesProvider := &mojangtextures.Provider{
- Emitter: dispatcher,
- UUIDsProvider: uuidsProvider,
- TexturesProvider: &mojangtextures.MojangApiTexturesProvider{
- Emitter: dispatcher,
- },
- Storage: &mojangtextures.SeparatedStorage{
- UuidsStorage: mojangUuidsRepository,
- TexturesStorage: texturesStorage,
- },
+ texturesStorage := mojangtextures.NewInMemoryTexturesStorage()
+ texturesStorage.Start()
+ mojangTexturesProvider = &mojangtextures.Provider{
+ Emitter: dispatcher,
+ UUIDsProvider: uuidsProvider,
+ TexturesProvider: &mojangtextures.MojangApiTexturesProvider{
+ Emitter: dispatcher,
+ },
+ Storage: &mojangtextures.SeparatedStorage{
+ UuidsStorage: mojangUuidsRepository,
+ TexturesStorage: texturesStorage,
+ },
+ }
+ logger.Info("Mojang's textures queue is successfully initialized")
+ } else {
+ logger.Info("Mojang's textures queue is disabled")
+ mojangTexturesProvider = &mojangtextures.NilProvider{}
}
- logger.Info("Mojang's textures queue is successfully initialized")
address := fmt.Sprintf("%s:%d", viper.GetString("server.host"), viper.GetInt("server.port"))
handler := (&http.Skinsystem{
@@ -129,4 +135,5 @@ func init() {
viper.SetDefault("storage.redis.poll", 10)
viper.SetDefault("storage.filesystem.basePath", "data")
viper.SetDefault("storage.filesystem.capesDirName", "capes")
+ viper.SetDefault("mojang_textures.enabled", true)
}
diff --git a/mojangtextures/nil_mojang_textures.go b/mojangtextures/nil_mojang_textures.go
new file mode 100644
index 0000000..30c9f98
--- /dev/null
+++ b/mojangtextures/nil_mojang_textures.go
@@ -0,0 +1,12 @@
+package mojangtextures
+
+import (
+ "github.com/elyby/chrly/api/mojang"
+)
+
+type NilProvider struct {
+}
+
+func (p *NilProvider) GetForUsername(username string) (*mojang.SignedTexturesResponse, error) {
+ return nil, nil
+}
diff --git a/mojangtextures/nil_mojang_textures_test.go b/mojangtextures/nil_mojang_textures_test.go
new file mode 100644
index 0000000..c3cd769
--- /dev/null
+++ b/mojangtextures/nil_mojang_textures_test.go
@@ -0,0 +1,14 @@
+package mojangtextures
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestNilProvider_GetForUsername(t *testing.T) {
+ provider := &NilProvider{}
+ result, err := provider.GetForUsername("username")
+ assert.Nil(t, result)
+ assert.Nil(t, err)
+}
|