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 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 { 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 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() } 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 // 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 { data["YandexUrl"] = h.YaDisk.GenerateOAuthUrl() } else { client := h.YaDisk.NewClient(yaData.Token()) 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 { // 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() } 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(), googleData.Token()) 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.GetResourceByName(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.GetResourceByName(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 / Страница не найдена") }