You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.7 KiB
76 lines
1.7 KiB
package app
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
|
|
"github.com/dimaskiddo/go-whatsapp-multidevice-rest/pkg/app/database"
|
|
"github.com/dimaskiddo/go-whatsapp-multidevice-rest/pkg/app/http"
|
|
"github.com/dimaskiddo/go-whatsapp-multidevice-rest/pkg/env"
|
|
)
|
|
|
|
var (
|
|
AppWebhookURL string
|
|
AppWebhookBasicAuth string
|
|
AppDatabase *database.DatabaseContainer
|
|
AppRequest *http.HttpClient
|
|
)
|
|
|
|
func init() {
|
|
var err error
|
|
|
|
dbType, err := env.GetEnvString("WHATSAPP_DATASTORE_TYPE")
|
|
if err != nil {
|
|
log.Fatal("Error Parse Environment Variable for Application Datastore Type")
|
|
}
|
|
|
|
dbURI, err := env.GetEnvString("WHATSAPP_DATASTORE_URI")
|
|
if err != nil {
|
|
log.Fatal("Error Parse Environment Variable for Application Datastore URI")
|
|
}
|
|
|
|
// Initialize App Client Datastore
|
|
initDB(dbType, dbURI)
|
|
|
|
appWebhookUrl, err := env.GetEnvString("APP_WEBHOOK_URL_TARGET")
|
|
if err != nil {
|
|
log.Fatal("Error Parse Environment Variable for App Webhook URL Target")
|
|
}
|
|
AppWebhookURL = appWebhookUrl
|
|
|
|
appWebhookBasicAuth, err := env.GetEnvString("APP_WEBHOOK_BASIC_AUTH")
|
|
if err != nil {
|
|
AppWebhookBasicAuth = ""
|
|
}
|
|
AppWebhookBasicAuth = appWebhookBasicAuth
|
|
|
|
// Initialize App HTTP Request
|
|
initHttpRequest()
|
|
}
|
|
|
|
func initDB(dbType string, dbURI string) {
|
|
// Initialize App Client Datastore
|
|
appDb, err := database.New(dbType, dbURI)
|
|
if err != nil {
|
|
log.Fatal("Error Connect Application Datastore: ", err)
|
|
}
|
|
AppDatabase = appDb
|
|
}
|
|
|
|
func initHttpRequest() {
|
|
// Initialize App HTTP Request
|
|
headers := map[string]string{
|
|
"Content-Type": "application/json",
|
|
}
|
|
|
|
if AppWebhookBasicAuth != "" {
|
|
headers["Authorization"] = "Basic " + AppWebhookBasicAuth
|
|
}
|
|
|
|
client := http.NewHttpClient(http.HttpClientOptions{
|
|
Timeout: 30 * time.Second,
|
|
Headers: headers,
|
|
})
|
|
|
|
AppRequest = client
|
|
}
|