diff --git a/README.md b/README.md index 8e95008..1bc1c53 100644 --- a/README.md +++ b/README.md @@ -3,22 +3,27 @@ /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 метод для подписывания на изменения по всех тикетах доступных пользователю. пример запроса -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 метод для подписки на сообщения из одного тикета. пример запроса -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 - метод для отправки сообщения в тикета пример запроса -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 @@ -78,11 +88,16 @@ POST https://staging.blacbroc.com/support/send /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 - метод для получения сообщений конкретного тикета с пагинацией пример запроса -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 - подхватывание сотрудником диалога пример запроса -POST https://staging.blacbroc.com/support/pick +POST http://localhost:8000/support/pick Тело запроса: +``` {"ticket":"c2fekjcobibtq7akknog"} - +``` Ответ: null /delegate - передача тикета другому сотруднику пример запроса -POST https://staging.blacbroc.com/support/delegate +POST http://localhost:8000/support/delegate Тело запроса: -{"ticket":"c2fekjcobibtq7akknog","answerer":"c2fekjcobibtq7akknog"} - +``` +{ + "ticket":"c2fekjcobibtq7akknog", + "answerer":"c2fekjcobibtq7akknog" +} +``` Ответ: null /vote - метод для оценки полезности ответа пример запроса -POST https://staging.blacbroc.com/support/delegate +POST http://localhost:8000/support/delegate Тело запроса: -{"ticket":"c2fekjcobibtq7akknog","rate":5} - +``` +{ + "ticket":"c2fekjcobibtq7akknog", + "rate":5 +} +``` Ответ: null /close - метод для закрытия тикета пример запроса -POST https://staging.blacbroc.com/support/close +POST http://localhost:8000/support/close Тело запроса: -{"ticket":"c2fekjcobibtq7akknog"} +``` +{ + "ticket":"c2fekjcobibtq7akknog" +} -Ответ: null \ No newline at end of file +Ответ: null diff --git a/app/app.go b/app/app.go index eb63653..4d2086d 100644 --- a/app/app.go +++ b/app/app.go @@ -10,11 +10,12 @@ import ( "heruvym/router" "heruvym/service" "heruvym/tools" - "heruvym/version" "net/http" + "time" rAL "bitbucket.org/skeris/profile/dal" "github.com/skeris/appInit" + tb "gopkg.in/tucnak/telebot.v2" "github.com/themakers/hlog" "go.uber.org/zap" @@ -67,7 +68,7 @@ var zapOptions = []zap.Option{ 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 ( err error @@ -93,9 +94,9 @@ func New(ctx context.Context, opts interface{}) (appInit.CommonApp, error) { } zapLogger = zapLogger.With( - zap.String("SvcCommit", version.Commit), - zap.String("SvcVersion", version.Release), - zap.String("SvcBuildTime", version.BuildTime), + zap.String("SvcCommit", ver.Commit), + zap.String("SvcVersion", ver.Release), + zap.String("SvcBuildTime", ver.BuildTime), ) fmt.Println("logger") logger := hlog.New(zapLogger) @@ -132,21 +133,21 @@ func New(ctx context.Context, opts interface{}) (appInit.CommonApp, error) { return nil, err } fmt.Println("miniod") - /* - newBot, err := tb.NewBot(tb.Settings{ - Token: "5240336345:AAG6ZXm6IYqsIZn7SoJTltJWviOXhVa4D0c", - Verbose: false, - ParseMode: tb.ModeHTML, - Poller: &tb.LongPoller{ - Timeout: time.Second, - }, - }) - if err != nil { - //logger.Emit(json.Token(err)) - return nil, err - } - */ - heruvym := service.New(blobStore, database, connRoles, logger, nil) + + newBot, err := tb.NewBot(tb.Settings{ + Token: "5240336345:AAG6ZXm6IYqsIZn7SoJTltJWviOXhVa4D0c", + Verbose: false, + ParseMode: tb.ModeHTML, + Poller: &tb.LongPoller{ + Timeout: time.Second, + }, + }) + if err != nil { + //logger.Emit(json.Token(err)) + return nil, err + } + + heruvym := service.New(blobStore, database, connRoles, logger, newBot) mux := router.NewRouter(map[string]http.HandlerFunc{ "/support/create": heruvym.CreateTicket, diff --git a/compose.test.yml b/compose.test.yml new file mode 100644 index 0000000..98c11fd --- /dev/null +++ b/compose.test.yml @@ -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 diff --git a/compose.yml b/compose.yml index 98c11fd..70e2979 100644 --- a/compose.yml +++ b/compose.yml @@ -1,6 +1,6 @@ services: - test: - build: ./test + svc: + build: . depends_on: - mongo - mongosetup diff --git a/dal/minio/minio.go b/dal/minio/minio.go index 9cd0952..b3be96a 100644 --- a/dal/minio/minio.go +++ b/dal/minio/minio.go @@ -3,14 +3,15 @@ package minio import ( "context" "fmt" + "io" + "github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7/pkg/credentials" "github.com/themakers/hlog" - "io" ) type BlobStore struct { - log hlog.Logger + log hlog.Logger store *minio.Client } @@ -21,7 +22,7 @@ func New(ctx context.Context, logger hlog.Logger, useSSL bool) (*BlobStore, error) { conn, err := minio.New(endpoint, &minio.Options{ - Creds: credentials.NewStaticV4(keyID, accessKey, token), + Creds: credentials.NewStaticV4(keyID, accessKey, token), Secure: useSSL, }, ) @@ -41,7 +42,7 @@ func New(ctx context.Context, logger hlog.Logger, } return &BlobStore{ - log: logger.Module("minio"), + log: logger.Module("minio"), store: conn, }, nil } @@ -51,7 +52,7 @@ func (bs *BlobStore) PutFile( filename string, reader io.Reader, 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, //UserTags: nil, //Progress: nil, @@ -90,4 +91,4 @@ func (bs *BlobStore) DeleteFile(ctx context.Context, id string) error { } return nil -} \ No newline at end of file +}