2022-07-28 15:00:43 +00:00
|
|
|
package handlers
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
"net/http"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
func (h *Handlers) IndexPage(w http.ResponseWriter, r *http.Request) {
|
|
|
|
data := map[string]interface{}{"Title": "Homepage"}
|
|
|
|
user := getJwtUser(r)
|
|
|
|
if user != nil {
|
|
|
|
data["User"] = user
|
2022-08-10 13:53:34 +00:00
|
|
|
|
2022-07-28 15:00:43 +00:00
|
|
|
// Yandex OAuth
|
2022-09-15 13:53:55 +00:00
|
|
|
yaData, err := h.dal.YaDisk.GetListByUserID(r.Context(), user.UserID)
|
2022-08-10 13:53:34 +00:00
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, http.StatusInternalServerError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if yaData == nil {
|
|
|
|
data["YandexUrl"] = h.YaDisk.GenerateOAuthUrl()
|
2022-09-15 13:53:55 +00:00
|
|
|
} else if yaData[0].Token() == nil {
|
2022-07-28 15:00:43 +00:00
|
|
|
data["YandexUrl"] = h.YaDisk.GenerateOAuthUrl()
|
|
|
|
} else {
|
2022-09-15 18:17:24 +00:00
|
|
|
templates, err := h.dal.Template.GetListByUserIDAndStorageType(r.Context(), user.UserID, "yadisk")
|
2022-07-28 15:00:43 +00:00
|
|
|
if err != nil {
|
|
|
|
h.logger.Error("ErrorHandler", zap.Error(err))
|
|
|
|
}
|
|
|
|
data["YaDiskTemplates"] = templates
|
|
|
|
}
|
2022-08-10 13:53:34 +00:00
|
|
|
|
2022-07-28 15:00:43 +00:00
|
|
|
// Google OAuth
|
2022-09-15 13:53:55 +00:00
|
|
|
googleData, err := h.dal.GDisk.GetListByUserID(r.Context(), user.UserID)
|
2022-08-10 13:53:34 +00:00
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, http.StatusInternalServerError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if googleData == nil {
|
|
|
|
data["GoogleUrl"] = h.GDisk.GenerateOAuthUrl()
|
2022-07-28 15:00:43 +00:00
|
|
|
} else {
|
2022-09-15 18:17:24 +00:00
|
|
|
templates, err := h.dal.Template.GetListByUserIDAndStorageType(r.Context(), user.UserID, "gdisk")
|
2022-07-28 15:00:43 +00:00
|
|
|
if err != nil {
|
|
|
|
h.logger.Error("ErrorHandler", zap.Error(err))
|
|
|
|
}
|
|
|
|
data["GDiskTemplates"] = templates
|
|
|
|
}
|
|
|
|
|
|
|
|
// Amo OAuth
|
2022-09-15 13:53:55 +00:00
|
|
|
amoInfo, err := h.dal.Amo.GetListByUserID(r.Context(), user.UserID)
|
2022-07-28 15:00:43 +00:00
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
}
|
|
|
|
|
2022-09-15 13:53:55 +00:00
|
|
|
if amoInfo == nil || amoInfo[0].Token().AccessToken == "" {
|
2022-07-28 15:00:43 +00:00
|
|
|
data["AmoUrl"] = h.Amo.GenerateOAuthUrl()
|
|
|
|
}
|
2022-09-15 13:53:55 +00:00
|
|
|
|
2022-07-28 15:00:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
err := execTemplate("index.gohtml", data, w)
|
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *Handlers) RegistrationPage(w http.ResponseWriter, r *http.Request) {
|
|
|
|
data := map[string]interface{}{"Title": "Registration"}
|
|
|
|
|
|
|
|
user := getJwtUser(r)
|
|
|
|
if user != nil {
|
|
|
|
data["User"] = user
|
|
|
|
}
|
|
|
|
|
|
|
|
err := execTemplate("registration.gohtml", data, w)
|
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *Handlers) LoginPage(w http.ResponseWriter, r *http.Request) {
|
|
|
|
data := map[string]interface{}{"Title": "Login"}
|
|
|
|
user := getJwtUser(r)
|
|
|
|
if user != nil {
|
|
|
|
data["User"] = user
|
|
|
|
}
|
|
|
|
|
|
|
|
err := execTemplate("login.gohtml", data, w)
|
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *Handlers) YaDiskPage(w http.ResponseWriter, r *http.Request) {
|
|
|
|
data := map[string]interface{}{"Title": "Yandex Disk"}
|
|
|
|
|
|
|
|
user := getJwtUser(r)
|
|
|
|
if user != nil {
|
|
|
|
data["User"] = user
|
2022-08-10 13:53:34 +00:00
|
|
|
// Yandex OAuth
|
2022-09-15 13:53:55 +00:00
|
|
|
yaData, err := h.dal.YaDisk.GetListByUserID(r.Context(), user.UserID)
|
2022-08-10 13:53:34 +00:00
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, http.StatusInternalServerError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if yaData == nil {
|
|
|
|
data["YandexUrl"] = h.YaDisk.GenerateOAuthUrl()
|
2022-09-15 13:53:55 +00:00
|
|
|
} else if yaData[0].Token() == nil {
|
2022-07-28 15:00:43 +00:00
|
|
|
data["YandexUrl"] = h.YaDisk.GenerateOAuthUrl()
|
|
|
|
} else {
|
2022-09-15 13:53:55 +00:00
|
|
|
client, err := h.YaDisk.NewClient(r.Context(), yaData[0].Token(), "")
|
2022-07-28 15:00:43 +00:00
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2022-09-15 13:53:55 +00:00
|
|
|
disk, err := client.GetDisk()
|
2022-07-28 15:00:43 +00:00
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2022-09-15 13:53:55 +00:00
|
|
|
data["YaDiskInfo"] = disk
|
|
|
|
|
|
|
|
data["YaDisk"] = yaData[0]
|
2022-07-28 15:00:43 +00:00
|
|
|
|
2022-09-15 13:53:55 +00:00
|
|
|
templateFolderData, err := client.GetResources(yaData[0].TemplateFolder)
|
2022-07-28 15:00:43 +00:00
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var templateFolder []map[string]interface{}
|
|
|
|
|
|
|
|
for _, item := range templateFolderData.Embedded.Items {
|
|
|
|
dataItem := map[string]interface{}{
|
|
|
|
"Name": item.Name,
|
|
|
|
"Size": item.Size,
|
|
|
|
"File": item.File,
|
|
|
|
}
|
|
|
|
template, err := h.dal.Template.GetByFilenameAndUserID(r.Context(), item.Name, user.UserID)
|
|
|
|
if err != nil {
|
|
|
|
h.logger.Error("ErrorHandler", zap.Error(err))
|
|
|
|
}
|
|
|
|
|
|
|
|
if template != nil {
|
|
|
|
dataItem["Event"] = template.Name
|
|
|
|
} else {
|
|
|
|
dataItem["Event"] = "Nil"
|
|
|
|
}
|
|
|
|
|
|
|
|
templateFolder = append(templateFolder, dataItem)
|
|
|
|
}
|
|
|
|
|
|
|
|
if templateFolder != nil {
|
|
|
|
data["YaDiskTemplateFolder"] = templateFolder
|
|
|
|
}
|
|
|
|
|
2022-09-15 13:53:55 +00:00
|
|
|
saveFolderData, err := client.GetResources(yaData[0].SaveFolder)
|
2022-07-28 15:00:43 +00:00
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var saveFolder []map[string]interface{}
|
|
|
|
|
|
|
|
for _, item := range saveFolderData.Embedded.Items {
|
|
|
|
saveFolder = append(templateFolder, map[string]interface{}{
|
|
|
|
"Name": item.Name,
|
|
|
|
"Size": templateFolderData.Size,
|
|
|
|
"File": templateFolderData.File,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
if saveFolder != nil {
|
|
|
|
data["YaDiskTemplateFolder"] = templateFolder
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
err := execTemplate("YaDisk.gohtml", data, w)
|
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *Handlers) GDiskPage(w http.ResponseWriter, r *http.Request) {
|
|
|
|
data := map[string]interface{}{"Title": "Google Disk"}
|
|
|
|
|
|
|
|
user := getJwtUser(r)
|
|
|
|
if user != nil {
|
2022-08-10 13:53:34 +00:00
|
|
|
|
|
|
|
// Google OAuth
|
2022-09-15 13:53:55 +00:00
|
|
|
googleData, err := h.dal.GDisk.GetListByUserID(r.Context(), user.UserID)
|
2022-08-10 13:53:34 +00:00
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, http.StatusInternalServerError)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if googleData == nil {
|
|
|
|
data["GoogleUrl"] = h.GDisk.GenerateOAuthUrl()
|
2022-07-28 15:00:43 +00:00
|
|
|
} else {
|
2022-09-15 13:53:55 +00:00
|
|
|
token := googleData[0].Token()
|
|
|
|
if time.Now().After(token.Expiry) {
|
|
|
|
fmt.Println("Token expired:", token)
|
|
|
|
token, err = h.GDisk.RefreshToken(r.Context(), token)
|
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
}
|
|
|
|
fmt.Println("Updated token:", token)
|
2022-07-28 15:00:43 +00:00
|
|
|
//h.GDisk.GetToken()
|
|
|
|
}
|
|
|
|
|
2022-09-15 13:53:55 +00:00
|
|
|
client, err := h.GDisk.NewClient(r.Context(), token)
|
2022-07-28 15:00:43 +00:00
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
client.GetDisk()
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
return
|
|
|
|
}
|
2022-09-15 13:53:55 +00:00
|
|
|
data["GDisk"] = googleData[0]
|
2022-07-28 15:00:43 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
err := execTemplate("gdisk.gohtml", data, w)
|
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *Handlers) AmoPage(w http.ResponseWriter, r *http.Request) {
|
|
|
|
data := map[string]interface{}{"Title": "Amo CRM"}
|
|
|
|
|
|
|
|
user := getJwtUser(r)
|
|
|
|
|
|
|
|
if user != nil {
|
2022-09-15 13:53:55 +00:00
|
|
|
amoInfo, err := h.dal.Amo.GetListByUserID(r.Context(), user.UserID)
|
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
}
|
2022-07-28 15:00:43 +00:00
|
|
|
|
2022-09-15 13:53:55 +00:00
|
|
|
if amoInfo != nil {
|
|
|
|
amoClient, err := h.Amo.NewClient(r.Context(), amoInfo[0].Referer, amoInfo[0].Token(), "")
|
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
} else {
|
|
|
|
acc, err := amoClient.GetAccount()
|
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
}
|
2022-07-28 15:00:43 +00:00
|
|
|
|
2022-09-15 13:53:55 +00:00
|
|
|
fmt.Printf("amoAcc: %+v \r\n", acc)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
}
|
|
|
|
}
|
2022-07-28 15:00:43 +00:00
|
|
|
|
|
|
|
err := execTemplate("amo.gohtml", data, w)
|
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *Handlers) LogoutPage(w http.ResponseWriter, r *http.Request) {
|
|
|
|
data := map[string]interface{}{"Title": "Logout"}
|
|
|
|
err := execTemplate("logout.gohtml", data, w)
|
|
|
|
if err != nil {
|
|
|
|
h.reportError(w, err, 500)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *Handlers) PageNotFound(w http.ResponseWriter, r *http.Request) {
|
|
|
|
sendResponse(w, 404, "404 - Page not found / Страница не найдена")
|
|
|
|
}
|