Commit a040ca07 authored by Fernando Avilés's avatar Fernando Avilés
Browse files

Initial commit

parents
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### VS Code ###
.vscode/*
*.code-workspace
# Local History for Visual Studio Code
.history/
#Mac
.DS_Store
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
# Test binary, built with `go test -c`
*.test
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
# Dependency directories (remove the comment below to include it)
# vendor/
\ No newline at end of file
# UnoTV Utils
\ No newline at end of file
module git.unotv.com/go_utv_utils
go 1.16
require (
github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a
github.com/gin-gonic/gin v1.7.1
github.com/google/uuid v1.2.0 // indirect
github.com/rs/zerolog v1.21.0
github.com/tdewolff/minify v2.3.6+incompatible
github.com/tdewolff/parse v2.3.4+incompatible // indirect
)
github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a h1:2KLQMJ8msqoPHIPDufkxVcoTtcmE5+1sL9950m4R9Pk=
github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE=
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.7.1 h1:qC89GU3p8TvKWMAVhEpmpB2CIb1hnqt2UdKZaP93mS8=
github.com/gin-gonic/gin v1.7.1/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs=
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/zerolog v1.21.0 h1:Q3vdXlfLNT+OftyBHsU0Y445MD+8m8axjKgf2si0QcM=
github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/tdewolff/minify v2.3.6+incompatible h1:2hw5/9ZvxhWLvBUnHE06gElGYz+Jv9R4Eys0XUzItYo=
github.com/tdewolff/minify v2.3.6+incompatible/go.mod h1:9Ov578KJUmAWpS6NeZwRZyT56Uf6o3Mcz9CEsg8USYs=
github.com/tdewolff/parse v2.3.4+incompatible h1:x05/cnGwIMf4ceLuDMBOdQ1qGniMoxpP46ghf0Qzh38=
github.com/tdewolff/parse v2.3.4+incompatible/go.mod h1:8oBwCsVmUkgHO8M5iCzSIDtpzXOT0WXX9cWhz+bIzJQ=
github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
package application
import "git.unotv.com/go_utv_utils/pkg/config"
type Application struct {
Cfg *config.Config
}
func Get() (*Application, error) {
cfg := config.Get()
return &Application{
Cfg: cfg,
}, nil
}
package config
import (
"flag"
"os"
)
type Config struct {
Ambiente string
PathfilesWeb01 string
PathfilesUnotv string
PathfilesPruebas string
Dominio string
DominioWP string
DominioIMG string
DominioPruebas string
UrlApiWP string
ApiGoMongoDB string
ApiGoElastic string
ApiGoAkamai string
ApiGoPush string
ApiGoGoogleAPi string
ElasticUrl string
ElasticIndex string
AkaHost string
AkaAccesToken string
AkaClientToken string
AkaClientSecret string
AkaCcuV3Uri string
AkaCcuProtocol string
MongoPassword string
MongoUser string
MongoPort string
MongoHost string
MongoDB string
PushFirebaseUrl string
PushFirebaseCredentials string
PushOnesignalUrl string
PushOnesignalAuthorization string
PushOnesignalAppid string
PushConectionTimeout string
PushReadTimeout string
GoogleIndexKey string
UrlGraylog string
AppGraylog string
IdGraylog string
MailHost string
MailUserName string
MailPassword string
}
func Get() *Config {
conf := &Config{}
flag.StringVar(&conf.Ambiente, "Ambiente", os.Getenv("OLI_AMBIENTE"), "Ambiente")
flag.StringVar(&conf.PathfilesWeb01, "PathfilesWeb01", os.Getenv("PATH_FILES_WEB01"), "Ruta de los html en el Web01")
flag.StringVar(&conf.PathfilesUnotv, "PathfilesUnotv", os.Getenv("PATH_FILES_UTV"), "Ruta de los html de unotv")
flag.StringVar(&conf.PathfilesPruebas, "PathfilesPruebas", os.Getenv("PATH_FILES_PRUEBAS"), "Ruta de los html de unotv para pruebas")
flag.StringVar(&conf.Dominio, "Dominio", os.Getenv("DOMINIO"), "Dominio UnoTV")
flag.StringVar(&conf.DominioWP, "DominioWP", os.Getenv("DOMINIO_WP"), "Dominio Wordpress")
flag.StringVar(&conf.DominioIMG, "DominioIMG", os.Getenv("DOMINIO_IMG"), "Dominio Images")
flag.StringVar(&conf.DominioPruebas, "DominioPruebas", os.Getenv("DOMINIO_PRUEBAS"), "Dominio de pruebas")
flag.StringVar(&conf.UrlApiWP, "UrlApiWP", os.Getenv("OLI_URL_API"), "Url APi WP")
flag.StringVar(&conf.ApiGoMongoDB, "ApiGoMongoDB", os.Getenv("GO_UTV_APP_MONOGDB"), "Api Mongo en GO")
flag.StringVar(&conf.ApiGoElastic, "ApiGoElastic", os.Getenv("GO_UTV_APP_ELASTIC"), "Api Elastic en GO")
flag.StringVar(&conf.ApiGoAkamai, "ApiGoAkamai", os.Getenv("GO_UTV_APP_AKAMAI"), "Api Akamai en GO")
flag.StringVar(&conf.ApiGoPush, "ApiGoPush", os.Getenv("GO_UTV_APP_PUSH"), "Url Elastic Search")
flag.StringVar(&conf.ApiGoGoogleAPi, "ApiGoGoogleAPi", os.Getenv("GO_UTV_APP_GOOGLEAPI"), "Url Elastic Search")
flag.StringVar(&conf.ElasticUrl, "ElasticUrl", os.Getenv("ELASTIC_URL"), "Url Elastic Search")
flag.StringVar(&conf.ElasticIndex, "ElasticIndex", os.Getenv("ELASTIC_INDEX"), "Index UnoTV Elastic Search")
flag.StringVar(&conf.AkaHost, "AkaHost", os.Getenv("OLI_AKA_HOST"), "AkaHost")
flag.StringVar(&conf.AkaAccesToken, "AkaAccesToken", os.Getenv("OLI_AKA_ACCESS_TOKEN"), "AkaAccesToken")
flag.StringVar(&conf.AkaClientToken, "AkaClientToken", os.Getenv("OLI_CLIENT_TOKEN"), "AkaClientToken")
flag.StringVar(&conf.AkaClientSecret, "AkaClientSecret", os.Getenv("OLI_CLIENT_SECRET"), "AkaClientSecret")
flag.StringVar(&conf.AkaCcuV3Uri, "AkaCcuV3Uri", os.Getenv("CCU_V3_URI"), "AkaCcuV3Uri")
flag.StringVar(&conf.AkaCcuProtocol, "AkaCcuProtocol", os.Getenv("CCU_PROTOCOL"), "AkaCcuProtocol")
flag.StringVar(&conf.MongoPassword, "MongoPassword", os.Getenv("MONGO_PASSWORD"), "MongoPassword")
flag.StringVar(&conf.MongoUser, "MongoUser", os.Getenv("MONGO_USER"), "MongoUser")
flag.StringVar(&conf.MongoPort, "MongoPort", os.Getenv("MONGO_PORT"), "MongoPort")
flag.StringVar(&conf.MongoHost, "MongoHost", os.Getenv("MONGO_HOST"), "MongoHost")
flag.StringVar(&conf.MongoDB, "MongoDB", os.Getenv("MONGO_DB"), "DB en Mongo")
flag.StringVar(&conf.PushFirebaseUrl, "PushFirebaseUrl", os.Getenv("PUSH_FIRE_BASE_URL"), "PushFirebaseUrl")
flag.StringVar(&conf.PushFirebaseCredentials, "PushFirebaseCredentials", os.Getenv("PUSH_FIRE_BASE_CREDENTIALS"), "PushFirebaseCredentials")
flag.StringVar(&conf.PushOnesignalUrl, "PushOnesignalUrl", os.Getenv("PUSH_ONESIGNAL_URL"), "MongoHost")
flag.StringVar(&conf.PushOnesignalAuthorization, "PushOnesignalAuthorization", os.Getenv("PUSH_ONESIGNAL_AUTHORIZATION"), "PushOnesignalAuthorization")
flag.StringVar(&conf.PushOnesignalAppid, "PushOnesignalAppid", os.Getenv("PUSH_ONESIGNAL_APPID"), "PushOnesignalAppid")
flag.StringVar(&conf.PushConectionTimeout, "PushConectionTimeout", os.Getenv("PUSH_CONECTION_TIMEOUT"), "PushConectionTimeout")
flag.StringVar(&conf.PushReadTimeout, "PushReadTimeout", os.Getenv("PUSH_READ_TIMEOUT"), "PushReadTimeout")
flag.StringVar(&conf.GoogleIndexKey, "GoogleIndexKey", os.Getenv("GOOLE_INDEX_KEY"), "MongoGoogleIndexKeyHost")
flag.StringVar(&conf.UrlGraylog, "UrlGraylog", os.Getenv("URL_GRAYLOG"), "Url UDP Graylog")
flag.StringVar(&conf.AppGraylog, "AppGraylog", "", "Nombre de la aplicacion")
flag.StringVar(&conf.MailHost, "MailHost", os.Getenv("MAIL_HOST"), "Host para mandar mail")
flag.StringVar(&conf.MailUserName, "MailUserName", os.Getenv("MAIL_USERNAME"), "Usuario para mail")
flag.StringVar(&conf.MailPassword, "MailPassword", os.Getenv("MAIL_PASSWORD"), "Password mail")
flag.Parse()
return conf
}
func (c *Config) GetAPIPort() string {
return ":8080"
}
package exithandler
import (
"log"
"os"
"os/signal"
"syscall"
)
func Init(cb func()) {
sigs := make(chan os.Signal, 1)
terminate := make(chan bool, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
go func() {
sig := <-sigs
log.Println("exit reason: ", sig)
terminate <- true
}()
<-terminate
cb()
log.Print("exiting program")
}
package graylog
import (
"fmt"
"git.unotv.com/go_utv_utils/pkg/application"
"github.com/aphistic/golf"
"github.com/rs/zerolog"
)
//GraylogHook hook for graylog
type GraylogHook struct {
logger *golf.Logger
client *golf.Client
}
//NewGraylogHook return new hook
func NewGraylogHook(app *application.Application) (GraylogHook, error) {
hook := GraylogHook{}
c, err := golf.NewClient()
if err != nil {
return hook, err
}
err = c.Dial(app.Cfg.UrlGraylog)
if err != nil {
return hook, err
}
l, err := c.NewLogger()
if err != nil {
return hook, err
}
l.SetAttr("ambiente", app.Cfg.Ambiente)
l.SetAttr("app", app.Cfg.AppGraylog)
l.SetAttr("id", app.Cfg.IdGraylog)
return GraylogHook{
logger: l,
client: c,
}, nil
}
//Run run hook when having a log event
func (h GraylogHook) Run(e *zerolog.Event, level zerolog.Level, message string) {
fmt.Printf("Test Hook")
var fields map[string]interface{}
switch level {
case zerolog.DebugLevel:
h.logger.Dbgm(fields, message)
case zerolog.InfoLevel:
h.logger.Infom(fields, message)
case zerolog.WarnLevel:
h.logger.Warnm(fields, message)
case zerolog.ErrorLevel:
h.logger.Errm(fields, message)
case zerolog.FatalLevel:
h.logger.Critm(fields, message)
}
}
//Close close graylog client
func (h GraylogHook) Close() {
h.client.Close()
}
package logger
import (
"log"
"os"
)
var (
Info = log.New(os.Stdout, "INFO\t", log.Ldate|log.Ltime)
Error = log.New(os.Stderr, "ERROR\t", log.Ldate|log.Ltime|log.Lshortfile)
)
package mail
import (
"net/smtp"
"git.unotv.com/go_utv_utils/pkg/application"
"github.com/rs/zerolog/log"
)
type Mail struct {
App application.Application
To []string
Msg []byte
Sender string
}
func (mail Mail) SendMail() error {
// Set up authentication information.
auth := smtp.PlainAuth("", mail.App.Cfg.MailUserName, mail.App.Cfg.MailPassword, mail.App.Cfg.MailHost)
err := smtp.SendMail(mail.App.Cfg.MailHost+":25", auth, mail.Sender, mail.To, mail.Msg)
if err != nil {
log.Error().Stack().Err(err).Msg("Error ElasticIndexNota: " + err.Error())
return err
}
return nil
}
package server
import (
"errors"
"log"
"net/http"
"github.com/gin-gonic/gin"
)
type Server struct {
srv *http.Server
}
func Get() *Server {
return &Server{
srv: &http.Server{},
}
}
func (s *Server) WithAddr(addr string) *Server {
s.srv.Addr = addr
return s
}
func (s *Server) WithErrLogger(l *log.Logger) *Server {
s.srv.ErrorLog = l
return s
}
func (s *Server) WithRouter(router *gin.Engine) *Server {
s.srv.Handler = router
return s
}
func (s *Server) Start() error {
if len(s.srv.Addr) == 0 {
return errors.New("Server missing address")
}
if s.srv.Handler == nil {
return errors.New("Server missing handler")
}
return s.srv.ListenAndServe()
}
func (s *Server) Close() error {
return s.srv.Close()
}
package utils
import (
"bytes"
"io/ioutil"
"net/http"
"os"
"strconv"
"strings"
"github.com/tdewolff/minify"
"github.com/tdewolff/minify/css"
"github.com/tdewolff/minify/html"
)
//Funcion que crea carpeta o carpteas
func CreateDirectory(path string) error {
var err error
if _, err = os.Stat(path); os.IsNotExist(err) {
err = os.MkdirAll(path, 0775)
}
return err
}
// Funcion que borrar una carpeta y todo su contenido
func DeleteDirecotory(path string) error {
dirRead, _ := os.Open(path)
dirFiles, _ := dirRead.Readdir(0)
for index := range dirFiles {
fileHere := dirFiles[index]
// Get name of file and its full path.
nameHere := fileHere.Name()
fullPath := path + nameHere
// Remove the file.
os.Remove(fullPath)
}
return os.Remove(path)
}
// Funcion que borrar una carpeta y su contenido
func DeleteFile(fullPath string) error {
return os.Remove(fullPath)
}
// Obtiene el html de una url
func GetUrlContent(url string) (string, error) {
var (
err error
content []byte
resp *http.Response
)
// GET content of URL
if resp, err = http.Get(url); err != nil {
return "", err
}
defer resp.Body.Close()
// Check if request was successful
if resp.StatusCode != 200 {
return strconv.Itoa(resp.StatusCode), err
}
// Read the body of the HTTP response
if content, err = ioutil.ReadAll(resp.Body); err != nil {
return "", err
}
return string(content), err
}
// Escribe un archivo en el servidor
//
func WriteHTML(hmtlNota *string, path string) error {
return ioutil.WriteFile(path, []byte(*hmtlNota), 0664)
}
// Minifica el html
func MinifyHTML(htmlNota *string) error {
m := minify.New()
m.AddFunc("text/html", html.Minify)
m.AddFunc("text/css", css.Minify)
m.Add("text/html", &html.Minifier{
KeepEndTags: true,
KeepDocumentTags: true,
KeepConditionalComments: true,
KeepDefaultAttrVals: true,
})
r := strings.NewReader(*htmlNota)
buf := &bytes.Buffer{}
err := m.Minify("text/html", buf, r)
*htmlNota = buf.String()
return err
}
package zerolog
import (
"os"
"time"
"git.unotv.com/go_utv_utils/pkg/application"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/rs/zerolog/pkgerrors"
)
func ConfZerolog(app *application.Application) {
//Log Config
//zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
zerolog.TimestampFunc = func() time.Time {
return time.Now().In(time.Local)
}
// set default logger to print to stdout and prettify
log.Logger = zerolog.New(os.Stdout).With().
Timestamp().
Caller().
Logger().
Output(zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: "2006-01-02T15:04:05"})
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment