From 7e036fd795cc0b5710d3b049dc98f4538c32da6a Mon Sep 17 00:00:00 2001 From: bodqhrohro Date: Tue, 29 Oct 2019 03:23:57 +0200 Subject: [PATCH] golint --- Makefile | 3 +++ config/config.go | 36 ++++++++++++++++++++++-------------- config/config_test.go | 8 ++++---- telegabber.go | 10 ++++++---- xmpp/component.go | 4 +++- xmpp/handlers.go | 1 + 6 files changed, 39 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index 6493cca..047de52 100644 --- a/Makefile +++ b/Makefile @@ -5,3 +5,6 @@ all: test: go test -v ./config + +lint: + $(GOPATH)/bin/golint ./... diff --git a/config/config.go b/config/config.go index cd2883b..6759dd8 100644 --- a/config/config.go +++ b/config/config.go @@ -9,12 +9,14 @@ import ( "gopkg.in/yaml.v2" ) +// Config is for top-level struct for config type Config struct { Telegram TelegramConfig `yaml:":telegram"` - Xmpp XmppConfig `yaml:":xmpp"` + XMPP XMPPConfig `yaml:":xmpp"` } -type XmppConfig struct { +// XMPPConfig is for :xmpp: subtree +type XMPPConfig struct { Loglevel string `yaml:":loglevel"` Jid string `yaml:":jid"` Host string `yaml:":host"` @@ -23,6 +25,7 @@ type XmppConfig struct { Db string `yaml:":db"` } +// TelegramConfig is for :telegram: subtree type TelegramConfig struct { Loglevel string `yaml:":loglevel"` Content TelegramContentConfig `yaml:":content"` @@ -30,26 +33,31 @@ type TelegramConfig struct { Tdlib TelegramTdlibConfig `yaml:":tdlib"` } +// TelegramContentConfig is for :content: subtree type TelegramContentConfig struct { Path string `yaml:":path"` Link string `yaml:":link"` Upload string `yaml:":upload"` } +// TelegramTdlibConfig is for :tdlib: subtree type TelegramTdlibConfig struct { - Path string `yaml:":lib_path"` - Client TelegramTdlibClientConfig `yaml:":client"` + Path string `yaml:":lib_path"` + Logfile string `yaml:":logfile"` + Client TelegramTdlibClientConfig `yaml:":client"` } +// TelegramTdlibClientConfig is for :client: subtree type TelegramTdlibClientConfig struct { - ApiId string `yaml:":api_id"` - ApiHash string `yaml:":api_hash"` + APIID string `yaml:":api_id"` + APIHash string `yaml:":api_hash"` DeviceModel string `yaml:":device_model"` ApplicationVersion string `yaml:":application_version"` UseChatInfoDatabase bool `yaml:":use_chat_info_database"` } -func ReadConfig(path string, schema_path string) (Config, error) { +// ReadConfig reads the specified config file, validates it and returns a struct +func ReadConfig(path string, schemaPath string) (Config, error) { var config Config file, err := ioutil.ReadFile(path) @@ -62,7 +70,7 @@ func ReadConfig(path string, schema_path string) (Config, error) { return config, errors.Wrap(err, "Error parsing config") } - err = validateConfig(file, schema_path) + err = validateConfig(file, schemaPath) if err != nil { return config, errors.Wrap(err, "Validation error") } @@ -70,25 +78,25 @@ func ReadConfig(path string, schema_path string) (Config, error) { return config, nil } -func validateConfig(file []byte, schema_path string) error { - schema, err := jsonschema.Compile(schema_path) +func validateConfig(file []byte, schemaPath string) error { + schema, err := jsonschema.Compile(schemaPath) if err != nil { return errors.Wrap(err, "Corrupted JSON schema") } - var config_generic interface{} + var configGeneric interface{} - err = yaml.Unmarshal(file, &config_generic) + err = yaml.Unmarshal(file, &configGeneric) if err != nil { return errors.Wrap(err, "Error re-parsing config") } - config_generic, err = convertToStringKeysRecursive(config_generic, "") + configGeneric, err = convertToStringKeysRecursive(configGeneric, "") if err != nil { return errors.Wrap(err, "Config conversion error") } - err = schema.ValidateInterface(config_generic) + err = schema.ValidateInterface(configGeneric) if err != nil { return errors.Wrap(err, "Config validation error") } diff --git a/config/config_test.go b/config/config_test.go index 6fce23b..20f0a1e 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -4,24 +4,24 @@ import ( "testing" ) -const SCHEMA_PATH string = "../config_schema.json" +const schemaPath string = "../config_schema.json" func TestNoConfig(t *testing.T) { - _, err := ReadConfig("../test/sfklase.yml", SCHEMA_PATH) + _, err := ReadConfig("../test/sfklase.yml", schemaPath) if err == nil { t.Errorf("Non-existent config was successfully read") } } func TestGoodConfig(t *testing.T) { - _, err := ReadConfig("../test/good_config.yml", SCHEMA_PATH) + _, err := ReadConfig("../test/good_config.yml", schemaPath) if err != nil { t.Errorf("Good config is not accepted: %v", err) } } func TestBadConfig(t *testing.T) { - _, err := ReadConfig("../test/bad_config.yml", SCHEMA_PATH) + _, err := ReadConfig("../test/bad_config.yml", schemaPath) if err == nil { t.Errorf("Bad config is accepted but it shouldn't!") } else { diff --git a/telegabber.go b/telegabber.go index d924822..c5ee366 100644 --- a/telegabber.go +++ b/telegabber.go @@ -7,16 +7,18 @@ import ( "dev.narayana.im/narayana/telegabber/xmpp" ) -const CONFIG_PATH string = "config.yml" -const SCHEMA_PATH string = "./config_schema.json" +// YAML config, compatible with the format of Zhabogram 2.0.0 +const configPath string = "config.yml" +// JSON schema (not for editing by a user) +const schemaPath string = "./config_schema.json" func main() { - config, err := config.ReadConfig(CONFIG_PATH, SCHEMA_PATH) + config, err := config.ReadConfig(configPath, schemaPath) if err != nil { log.Fatal(err) } - cm := xmpp.NewComponent(config.Xmpp) + cm := xmpp.NewComponent(config.XMPP) // reconnect automatically log.Fatal(cm.Run()) diff --git a/xmpp/component.go b/xmpp/component.go index e484e99..d55ed6b 100644 --- a/xmpp/component.go +++ b/xmpp/component.go @@ -8,7 +8,9 @@ import ( "gosrc.io/xmpp" ) -func NewComponent(conf config.XmppConfig) *xmpp.StreamManager { +// NewComponent starts a new component and wraps it in +// a stream manager that you should start yourself +func NewComponent(conf config.XMPPConfig) *xmpp.StreamManager { options := xmpp.ComponentOptions{ Address: conf.Host + ":" + conf.Port, Domain: conf.Jid, diff --git a/xmpp/handlers.go b/xmpp/handlers.go index 38bbe7a..874af49 100644 --- a/xmpp/handlers.go +++ b/xmpp/handlers.go @@ -8,6 +8,7 @@ import ( "gosrc.io/xmpp/stanza" ) +// HandleMessage processes an incoming XMPP message func HandleMessage(s xmpp.Sender, p stanza.Packet) { msg, ok := p.(stanza.Message) if !ok {