Skip to content

Commit

Permalink
ref
Browse files Browse the repository at this point in the history
  • Loading branch information
Olegsuus committed Jun 19, 2024
1 parent df1fb10 commit f5fec5f
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 1 deletion.
5 changes: 5 additions & 0 deletions internal/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,15 @@ type App struct {

func (a *App) Start() error {
a.Fiber.Use(logger.New())
a.Fiber.Use(BasicAuthorization)

a.Fiber.Get("/list", a.HandleGetAllNews)

a.Fiber.Post("/create", a.CreateNew)
a.Fiber.Post("/edit/:id", a.HandleUpdateNews)
addr := fmt.Sprintf(":%d", a.Config.Server.Port)
log.Printf("Starting server on %s", addr)

return a.Fiber.Listen(addr)
}

Expand Down
42 changes: 42 additions & 0 deletions internal/app/auth.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package app

import (
"encoding/base64"
"github.com/gofiber/fiber/v2"
)

const (
username = "Oleg"
password = "1234"
)

func BasicAuthorization(c *fiber.Ctx) error {
// Получаем заголовок Authorization
auth := c.Get("Authorization")
if auth == "" {
c.Status(fiber.StatusUnauthorized)
return c.SendString("Unauthorized")
}

// Проверяем, что заголовок начинается с "Basic "
if len(auth) < 6 || auth[:6] != "Basic " {
c.Status(fiber.StatusUnauthorized)
return c.SendString("Unauthorized")
}

// Декодируем базовые учетные данные из base64
payload, err := base64.StdEncoding.DecodeString(auth[6:])
if err != nil {
c.Status(fiber.StatusUnauthorized)
return c.SendString("Unauthorized")
}

// Проверяем учетные данные
if string(payload) != username+":"+password {
c.Status(fiber.StatusUnauthorized)
return c.SendString("Unauthorized")
}

// Продолжаем выполнение запроса
return c.Next()
}
8 changes: 8 additions & 0 deletions internal/app/handlers.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package app

import (
"fmt"
"github.com/gofiber/fiber/v2"
"news-api/internal/models"
"strconv"
Expand All @@ -20,6 +21,8 @@ func (a *App) HandleGetAllNews(c *fiber.Ctx) error {
offset := (page - 1) * limit

newsList, err := a.DB.GetAllNews(limit, offset)
fmt.Println(newsList)

if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": "failed to fetch news"})
}
Expand Down Expand Up @@ -75,3 +78,8 @@ func (a *App) HandleDeleteNews(c *fiber.Ctx) error {
}
return c.Status(fiber.StatusOK).JSON(fiber.Map{"message": "news deleted"})
}

func (a *App) CreateNew(c *fiber.Ctx) error {
news := models.News{Title: "dfsfs", Content: "fdfs"}
return a.DB.CreateNews(&news)
}
6 changes: 5 additions & 1 deletion internal/database/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,15 @@ func (db *DB) Close() error {

func (db *DB) GetAllNews(limit, offset int) ([]models.News, error) {
var structs []reform.Struct
structs, err := db.DB.SelectAllFrom(models.NewsTable, "LIMIT ? OFFSET ?", limit, offset, &structs)
query := fmt.Sprintf("LIMIT %d OFFSET %d", limit, offset)
structs, err := db.DB.SelectAllFrom(models.NewsTable, query)
if err != nil {
fmt.Printf("вывод структур: %v\n", err)
return nil, err
}

fmt.Printf("вывод структур: %v\n", structs)

newsList := make([]models.News, len(structs))
for i, s := range structs {
if news, ok := s.(*models.News); ok {
Expand Down

0 comments on commit f5fec5f

Please sign in to comment.