fix: partially rewrite readme for api

This commit is contained in:
Skeris 2022-12-13 13:07:15 +03:00
parent c95f163889
commit fd0a38f5d4
5 changed files with 113 additions and 52 deletions

@ -3,22 +3,27 @@
/create - метод для создания тикета. /create - метод для создания тикета.
пример запроса пример запроса
POST https://staging.blacbroc.com/support/create POST http://localhost:8000/support/create
Тело запроса Тело запроса
``` ```
{"Title":"test ticket title","Message":"test ticket message"} {
"Title":"test ticket title",
"Message":"test ticket message"
}
``` ```
тело ответа тело ответа
``` ```
{"Ticket":"c2fekjcobibtq7akknog"} {
```` "Ticket":"c2fekjcobibtq7akknog"
}
```
/subscribe - sse метод для подписывания на изменения по всех тикетах доступных пользователю. /subscribe - sse метод для подписывания на изменения по всех тикетах доступных пользователю.
пример запроса пример запроса
https://staging.blacbrok.com/support/subscribe?Authorization=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJRCI6ImMxdmNrZWtvYmlicmFmYWU2bjYwIiwiU2Vzc2lvbiI6ImMxdmNrZWtvYmlicmFmYWU2bjZnIiwiVXNlciI6ImMxdXAxY2tvYmliaXVpNDVxNGYwIiwiVGFyaWZmIjowLCJDcmVhdGVkIjoxNjE4OTIyMDQyMDQ3LCJMYXN0U2VlbiI6MTYxODkyMjA5OTg5MH0.INLy790JP-o6DDZcXfSEXUDg7lE1_83Ns2vDJVrUFuQ http://localhost:8000/support/subscribe?Authorization=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJRCI6ImMxdmNrZWtvYmlicmFmYWU2bjYwIiwiU2Vzc2lvbiI6ImMxdmNrZWtvYmlicmFmYWU2bjZnIiwiVXNlciI6ImMxdXAxY2tvYmliaXVpNDVxNGYwIiwiVGFyaWZmIjowLCJDcmVhdGVkIjoxNjE4OTIyMDQyMDQ3LCJMYXN0U2VlbiI6MTYxODkyMjA5OTg5MH0.INLy790JP-o6DDZcXfSEXUDg7lE1_83Ns2vDJVrUFuQ
тело ответа тело ответа
``` ```
@ -48,7 +53,7 @@ Ticket: {
/ticket - sse метод для подписки на сообщения из одного тикета. /ticket - sse метод для подписки на сообщения из одного тикета.
пример запроса пример запроса
https://staging.blacbrok.com/support/ticket?ticket=c2fekjcobibtq7akknog&Authorization=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJRCI6ImMxdmNrZWtvYmlicmFmYWU2bjYwIiwiU2Vzc2lvbiI6ImMxdmNrZWtvYmlicmFmYWU2bjZnIiwiVXNlciI6ImMxdXAxY2tvYmliaXVpNDVxNGYwIiwiVGFyaWZmIjowLCJDcmVhdGVkIjoxNjE4OTIyMDQyMDQ3LCJMYXN0U2VlbiI6MTYxODkyMjA5OTg5MH0.INLy790JP-o6DDZcXfSEXUDg7lE1_83Ns2vDJVrUFuQ http://localhost:8000/support/ticket?ticket=c2fekjcobibtq7akknog&Authorization=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJRCI6ImMxdmNrZWtvYmlicmFmYWU2bjYwIiwiU2Vzc2lvbiI6ImMxdmNrZWtvYmlicmFmYWU2bjZnIiwiVXNlciI6ImMxdXAxY2tvYmliaXVpNDVxNGYwIiwiVGFyaWZmIjowLCJDcmVhdGVkIjoxNjE4OTIyMDQyMDQ3LCJMYXN0U2VlbiI6MTYxODkyMjA5OTg5MH0.INLy790JP-o6DDZcXfSEXUDg7lE1_83Ns2vDJVrUFuQ
тело ответа тело ответа
``` ```
@ -66,11 +71,16 @@ https://staging.blacbrok.com/support/ticket?ticket=c2fekjcobibtq7akknog&Authoriz
/send - метод для отправки сообщения в тикета /send - метод для отправки сообщения в тикета
пример запроса пример запроса
POST https://staging.blacbroc.com/support/send POST http://localhost:8000/support/send
Тело запроса Тело запроса
``` ```
{"message":"test ticket message","TicketID":"c2fekjcobibtq7akknog", "lang":"ru","files": ["idoffile"]} {
"message":"test ticket message",
"TicketID":"c2fekjcobibtq7akknog",
"lang":"ru",
"files": ["idoffile"]
}
``` ```
Ответ null Ответ null
@ -78,11 +88,16 @@ POST https://staging.blacbroc.com/support/send
/getTickets - метод для получения тикетов с пагинацией /getTickets - метод для получения тикетов с пагинацией
пример запроса пример запроса
POST https://staging.blacbroc.com/support/getTickets POST http://localhost:8000/support/getTickets
Тело запроса: Тело запроса:
``` ```
{"amt":10,"page":1,"srch":"test","status":"open"} {
"amt":10,
"page":1,
"srch":"test",
"status":"open"
}
``` ```
Ответ: Ответ:
``` [{ ``` [{
@ -110,11 +125,16 @@ POST https://staging.blacbroc.com/support/getTickets
/getMessages - метод для получения сообщений конкретного тикета с пагинацией /getMessages - метод для получения сообщений конкретного тикета с пагинацией
пример запроса пример запроса
POST https://staging.blacbroc.com/support/getMessages POST http://localhost:8000/support/getMessages
Тело запроса: Тело запроса:
``` ```
{"amt":10,"page":1,"srch":"test","ticket":"c2fekjcobibtq7akknog"} {
"amt":10,
"page":1,
"srch":"test",
"ticket":"c2fekjcobibtq7akknog"
}
Ответ: Ответ:
[{ [{
@ -133,39 +153,51 @@ POST https://staging.blacbroc.com/support/getMessages
/pick - подхватывание сотрудником диалога /pick - подхватывание сотрудником диалога
пример запроса пример запроса
POST https://staging.blacbroc.com/support/pick POST http://localhost:8000/support/pick
Тело запроса: Тело запроса:
```
{"ticket":"c2fekjcobibtq7akknog"} {"ticket":"c2fekjcobibtq7akknog"}
```
Ответ: null Ответ: null
/delegate - передача тикета другому сотруднику /delegate - передача тикета другому сотруднику
пример запроса пример запроса
POST https://staging.blacbroc.com/support/delegate POST http://localhost:8000/support/delegate
Тело запроса: Тело запроса:
{"ticket":"c2fekjcobibtq7akknog","answerer":"c2fekjcobibtq7akknog"} ```
{
"ticket":"c2fekjcobibtq7akknog",
"answerer":"c2fekjcobibtq7akknog"
}
```
Ответ: null Ответ: null
/vote - метод для оценки полезности ответа /vote - метод для оценки полезности ответа
пример запроса пример запроса
POST https://staging.blacbroc.com/support/delegate POST http://localhost:8000/support/delegate
Тело запроса: Тело запроса:
{"ticket":"c2fekjcobibtq7akknog","rate":5} ```
{
"ticket":"c2fekjcobibtq7akknog",
"rate":5
}
```
Ответ: null Ответ: null
/close - метод для закрытия тикета /close - метод для закрытия тикета
пример запроса пример запроса
POST https://staging.blacbroc.com/support/close POST http://localhost:8000/support/close
Тело запроса: Тело запроса:
{"ticket":"c2fekjcobibtq7akknog"} ```
{
"ticket":"c2fekjcobibtq7akknog"
}
Ответ: null Ответ: null

@ -10,11 +10,12 @@ import (
"heruvym/router" "heruvym/router"
"heruvym/service" "heruvym/service"
"heruvym/tools" "heruvym/tools"
"heruvym/version"
"net/http" "net/http"
"time"
rAL "bitbucket.org/skeris/profile/dal" rAL "bitbucket.org/skeris/profile/dal"
"github.com/skeris/appInit" "github.com/skeris/appInit"
tb "gopkg.in/tucnak/telebot.v2"
"github.com/themakers/hlog" "github.com/themakers/hlog"
"go.uber.org/zap" "go.uber.org/zap"
@ -67,7 +68,7 @@ var zapOptions = []zap.Option{
zap.AddStacktrace(zap.ErrorLevel), zap.AddStacktrace(zap.ErrorLevel),
} }
func New(ctx context.Context, opts interface{}) (appInit.CommonApp, error) { func New(ctx context.Context, opts interface{}, ver appInit.Version) (appInit.CommonApp, error) {
var ( var (
err error err error
@ -93,9 +94,9 @@ func New(ctx context.Context, opts interface{}) (appInit.CommonApp, error) {
} }
zapLogger = zapLogger.With( zapLogger = zapLogger.With(
zap.String("SvcCommit", version.Commit), zap.String("SvcCommit", ver.Commit),
zap.String("SvcVersion", version.Release), zap.String("SvcVersion", ver.Release),
zap.String("SvcBuildTime", version.BuildTime), zap.String("SvcBuildTime", ver.BuildTime),
) )
fmt.Println("logger") fmt.Println("logger")
logger := hlog.New(zapLogger) logger := hlog.New(zapLogger)
@ -132,21 +133,21 @@ func New(ctx context.Context, opts interface{}) (appInit.CommonApp, error) {
return nil, err return nil, err
} }
fmt.Println("miniod") fmt.Println("miniod")
/*
newBot, err := tb.NewBot(tb.Settings{ newBot, err := tb.NewBot(tb.Settings{
Token: "5240336345:AAG6ZXm6IYqsIZn7SoJTltJWviOXhVa4D0c", Token: "5240336345:AAG6ZXm6IYqsIZn7SoJTltJWviOXhVa4D0c",
Verbose: false, Verbose: false,
ParseMode: tb.ModeHTML, ParseMode: tb.ModeHTML,
Poller: &tb.LongPoller{ Poller: &tb.LongPoller{
Timeout: time.Second, Timeout: time.Second,
}, },
}) })
if err != nil { if err != nil {
//logger.Emit(json.Token(err)) //logger.Emit(json.Token(err))
return nil, err return nil, err
} }
*/
heruvym := service.New(blobStore, database, connRoles, logger, nil) heruvym := service.New(blobStore, database, connRoles, logger, newBot)
mux := router.NewRouter(map[string]http.HandlerFunc{ mux := router.NewRouter(map[string]http.HandlerFunc{
"/support/create": heruvym.CreateTicket, "/support/create": heruvym.CreateTicket,

27
compose.test.yml Normal file

@ -0,0 +1,27 @@
services:
test:
build: ./test
depends_on:
- mongo
- mongosetup
- minio
mongo:
image: mongo:6
hostname: mongo
restart: always
entrypoint: ["/usr/bin/mongod", "--logpath", "/dev/null","--bind_ip_all","--replSet","rs0"]
mongosetup:
image: mongo:6
depends_on:
- mongo
restart: "no"
logging:
driver: "none"
entrypoint: [ "bash", "-c", "sleep 2 && mongosh --host mongo:27017 --eval 'rs.initiate()'"]
minio:
image: minio/minio
hostname: minio
restart: always
logging:
driver: "none"
command: server --address 0.0.0.0:9000 /data

@ -1,6 +1,6 @@
services: services:
test: svc:
build: ./test build: .
depends_on: depends_on:
- mongo - mongo
- mongosetup - mongosetup

@ -3,14 +3,15 @@ package minio
import ( import (
"context" "context"
"fmt" "fmt"
"io"
"github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials" "github.com/minio/minio-go/v7/pkg/credentials"
"github.com/themakers/hlog" "github.com/themakers/hlog"
"io"
) )
type BlobStore struct { type BlobStore struct {
log hlog.Logger log hlog.Logger
store *minio.Client store *minio.Client
} }
@ -21,7 +22,7 @@ func New(ctx context.Context, logger hlog.Logger,
useSSL bool) (*BlobStore, error) { useSSL bool) (*BlobStore, error) {
conn, err := minio.New(endpoint, conn, err := minio.New(endpoint,
&minio.Options{ &minio.Options{
Creds: credentials.NewStaticV4(keyID, accessKey, token), Creds: credentials.NewStaticV4(keyID, accessKey, token),
Secure: useSSL, Secure: useSSL,
}, },
) )
@ -41,7 +42,7 @@ func New(ctx context.Context, logger hlog.Logger,
} }
return &BlobStore{ return &BlobStore{
log: logger.Module("minio"), log: logger.Module("minio"),
store: conn, store: conn,
}, nil }, nil
} }
@ -51,7 +52,7 @@ func (bs *BlobStore) PutFile(
filename string, filename string,
reader io.Reader, reader io.Reader,
size int64) error { size int64) error {
info, err := bs.store.PutObject(ctx,bucket, filename, reader, size, minio.PutObjectOptions{ info, err := bs.store.PutObject(ctx, bucket, filename, reader, size, minio.PutObjectOptions{
//UserMetadata: nil, //UserMetadata: nil,
//UserTags: nil, //UserTags: nil,
//Progress: nil, //Progress: nil,
@ -90,4 +91,4 @@ func (bs *BlobStore) DeleteFile(ctx context.Context, id string) error {
} }
return nil return nil
} }