docxTemplater/handlers/pages.go

354 lines
8.3 KiB
Go
Raw Normal View History

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-08-10 13:53:34 +00:00
yaData, err := h.dal.YaDisk.GetByUserID(r.Context(), user.UserID)
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
if yaData == nil {
data["YandexUrl"] = h.YaDisk.GenerateOAuthUrl()
} else if yaData.Token() == nil {
2022-07-28 15:00:43 +00:00
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
}
2022-08-10 13:53:34 +00:00
2022-07-28 15:00:43 +00:00
// Google OAuth
2022-08-10 13:53:34 +00:00
googleData, err := h.dal.GDisk.GetByUserID(r.Context(), user.UserID)
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
if googleData == nil {
data["GoogleUrl"] = h.GDisk.GenerateOAuthUrl()
} else if googleData.Token() == nil {
data["GoogleUrl"] = h.GDisk.GenerateOAuthUrl()
2022-07-28 15:00:43 +00:00
} 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
2022-08-10 13:53:34 +00:00
// Yandex OAuth
yaData, err := h.dal.YaDisk.GetByUserID(r.Context(), user.UserID)
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
if yaData == nil {
data["YandexUrl"] = h.YaDisk.GenerateOAuthUrl()
} else if yaData.Token() == nil {
2022-07-28 15:00:43 +00:00
data["YandexUrl"] = h.YaDisk.GenerateOAuthUrl()
} else {
2022-08-10 13:53:34 +00:00
client := h.YaDisk.NewClient(yaData.Token())
2022-07-28 15:00:43 +00:00
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 {
2022-08-10 13:53:34 +00:00
// Google OAuth
googleData, err := h.dal.GDisk.GetByUserID(r.Context(), user.UserID)
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
if googleData == nil {
data["GoogleUrl"] = h.GDisk.GenerateOAuthUrl()
} else if googleData.Token() == nil {
data["GoogleUrl"] = h.GDisk.GenerateOAuthUrl()
2022-07-28 15:00:43 +00:00
} else {
gDiskInfo, err := h.dal.GDisk.GetByUserID(r.Context(), user.UserID)
if time.Now().After(gDiskInfo.ExpiresIn) {
fmt.Println("Token expired")
//h.GDisk.GetToken()
}
2022-08-10 13:53:34 +00:00
client, err := h.GDisk.NewClient(r.Context(), googleData.Token())
2022-07-28 15:00:43 +00:00
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
//}
2022-08-10 13:53:34 +00:00
//
//templateFolderData, err := client.GetResourceByName(GDisk.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["GDiskTemplateFolder"] = templateFolder
//}
//
2022-08-10 13:53:34 +00:00
//saveFolderData, err := client.GetResourceByName(GDisk.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["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 / Страница не найдена")
}