328 lines
7.6 KiB
Go
328 lines
7.6 KiB
Go
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
|
|
// Yandex OAuth
|
|
if user.YaDiskAccessToken == "" {
|
|
data["YandexUrl"] = h.YaDisk.GenerateOAuthUrl()
|
|
} else {
|
|
templates, err := h.dal.Template.GetListByUserIDAndStorage(r.Context(), user.UserID, "yadisk")
|
|
if err != nil {
|
|
h.logger.Error("ErrorHandler", zap.Error(err))
|
|
}
|
|
data["YaDiskTemplates"] = templates
|
|
}
|
|
// Google OAuth
|
|
if user.GDiskAccessToken == "" {
|
|
url, err := h.GDisk.GenerateOAuthUrl()
|
|
if err != nil {
|
|
h.reportError(w, err, 500)
|
|
return
|
|
}
|
|
data["GoogleUrl"] = url
|
|
} else {
|
|
templates, err := h.dal.Template.GetListByUserIDAndStorage(r.Context(), user.UserID, "gdisk")
|
|
if err != nil {
|
|
h.logger.Error("ErrorHandler", zap.Error(err))
|
|
}
|
|
data["GDiskTemplates"] = templates
|
|
}
|
|
|
|
// Amo OAuth
|
|
amoInfo, err := h.dal.Amo.GetByUserID(r.Context(), user.UserID)
|
|
if err != nil {
|
|
h.reportError(w, err, 500)
|
|
}
|
|
|
|
if amoInfo == nil {
|
|
data["AmoUrl"] = h.Amo.GenerateOAuthUrl()
|
|
}
|
|
}
|
|
|
|
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
|
|
if user.YaDiskAccessToken == "" {
|
|
data["YandexUrl"] = h.YaDisk.GenerateOAuthUrl()
|
|
} else {
|
|
client := h.YaDisk.NewClient(user.YaDiskAccessToken)
|
|
|
|
disk, err := client.GetDisk()
|
|
if err != nil {
|
|
h.reportError(w, err, 500)
|
|
return
|
|
}
|
|
|
|
data["YaDiskInfo"] = disk
|
|
|
|
YaDisk, err := h.dal.YaDisk.GetByUserID(r.Context(), user.UserID)
|
|
|
|
if err != nil {
|
|
h.reportError(w, err, 500)
|
|
return
|
|
}
|
|
|
|
data["YaDisk"] = YaDisk
|
|
|
|
templateFolderData, err := client.GetResources(YaDisk.TemplateFolder)
|
|
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
|
|
}
|
|
|
|
saveFolderData, err := client.GetResources(YaDisk.SaveFolder)
|
|
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 {
|
|
data["User"] = user
|
|
if user.GDiskAccessToken == "" {
|
|
url, err := h.GDisk.GenerateOAuthUrl()
|
|
if err != nil {
|
|
h.reportError(w, err, 500)
|
|
return
|
|
}
|
|
data["GoogleUrl"] = url
|
|
} else {
|
|
gDiskInfo, err := h.dal.GDisk.GetByUserID(r.Context(), user.UserID)
|
|
|
|
if time.Now().After(gDiskInfo.ExpiresIn) {
|
|
fmt.Println("Token expired")
|
|
//h.GDisk.GetToken()
|
|
}
|
|
|
|
client, err := h.GDisk.NewClient(r.Context(), user.GDiskAccessToken)
|
|
if err != nil {
|
|
h.reportError(w, err, 500)
|
|
return
|
|
}
|
|
|
|
client.GetDisk()
|
|
|
|
//disk, err := client.GetDisk()
|
|
//if err != nil {
|
|
// h.reportError(w, err, 500)
|
|
// return
|
|
//}
|
|
//
|
|
//
|
|
//data["GoogleDiskInfo"] = disk
|
|
//
|
|
gDisk, err := h.dal.GDisk.GetByUserID(r.Context(), user.UserID)
|
|
|
|
if err != nil {
|
|
h.reportError(w, err, 500)
|
|
return
|
|
}
|
|
|
|
data["GDisk"] = gDisk
|
|
|
|
//// Test Upload file
|
|
//err = client.UploadFile("./tmp/downloaded/62ac67a1471fd0f7892353bf_Test.docx", "application/msword",
|
|
// gDisk.SaveFolderID)
|
|
//if err != nil {
|
|
// h.reportError(w, err, 500)
|
|
// return
|
|
//}
|
|
//
|
|
//// Test Download file
|
|
//err = client.DownloadFile("./test.docx", "1ceECJFwRdBcXmFIrKhdGksTfEcPNZHzO")
|
|
//if err != nil {
|
|
// h.reportError(w, err, 500)
|
|
// return
|
|
//}
|
|
|
|
//templateFolderData, err := client.GetResources(GDisk.TemplateFolder)
|
|
//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["GDiskTemplateFolder"] = templateFolder
|
|
//}
|
|
//
|
|
//saveFolderData, err := client.GetResources(GDisk.SaveFolder)
|
|
//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["GDiskTemplateFolder"] = templateFolder
|
|
//}
|
|
}
|
|
}
|
|
|
|
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 {
|
|
|
|
}
|
|
|
|
//resp := map[string]interface{}{}
|
|
//err := json.NewDecoder(r.Body).Decode(&resp)
|
|
//if err != nil {
|
|
// h.reportError(w, err, 500)
|
|
// return
|
|
//}
|
|
|
|
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 / Страница не найдена")
|
|
}
|