feat: Added logic for work with support API and removed mocks.
This commit is contained in:
parent
d4d0f46b99
commit
de940a6e05
@ -3,7 +3,6 @@ package profileHandler
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"runtime/debug"
|
"runtime/debug"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"gitea.cybertalant.ru/VisionCareerMiniapp/MiniappGoService/internal/application/constants"
|
"gitea.cybertalant.ru/VisionCareerMiniapp/MiniappGoService/internal/application/constants"
|
||||||
"gitea.cybertalant.ru/VisionCareerMiniapp/MiniappGoService/internal/application/types"
|
"gitea.cybertalant.ru/VisionCareerMiniapp/MiniappGoService/internal/application/types"
|
||||||
@ -210,11 +209,22 @@ func (t *handler) universalTextHandler(ctx tele.Context) error {
|
|||||||
} else if len(vacancies) == 0 {
|
} else if len(vacancies) == 0 {
|
||||||
return ctx.Send(constants.NoVacanciesBotMessage)
|
return ctx.Send(constants.NoVacanciesBotMessage)
|
||||||
}
|
}
|
||||||
needUpdateUser = false
|
|
||||||
// Set menu
|
|
||||||
mainKeys = &tele.ReplyMarkup{RemoveKeyboard: true}
|
|
||||||
|
|
||||||
msg = strings.Join(vacancies, "\n")
|
for _, vacancy := range vacancies {
|
||||||
|
_, err = t.bot.Send(
|
||||||
|
&tele.Chat{ID: user.ID},
|
||||||
|
vacancy,
|
||||||
|
&tele.SendOptions{
|
||||||
|
ParseMode: tele.ModeHTML,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
t.logger.Error(fmt.Sprintf("%v: %v", op, err.Error()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
} else {
|
} else {
|
||||||
needUpdateUser = false
|
needUpdateUser = false
|
||||||
msg = constants.UnknownCommandBotMessage
|
msg = constants.UnknownCommandBotMessage
|
||||||
|
|||||||
@ -4,102 +4,55 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
|
|
||||||
pbVC "gitea.cybertalant.ru/VisionCareerMiniapp/DataManagement/pb/golang"
|
pbVC "gitea.cybertalant.ru/VisionCareerMiniapp/DataManagement/pb/golang"
|
||||||
|
"gitea.cybertalant.ru/VisionCareerMiniapp/MiniappGoService/internal/application/constants"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
|
"google.golang.org/grpc/credentials/insecure"
|
||||||
|
"google.golang.org/grpc/metadata"
|
||||||
)
|
)
|
||||||
|
|
||||||
type grpcClient struct {
|
type grpcClient struct {
|
||||||
apiKey string
|
apiKey string
|
||||||
// conn *grpc.ClientConn
|
conn *grpc.ClientConn
|
||||||
// vсClient pbVC.VisionCareerApiServiceV1Client
|
vсClient pbVC.VisionCareerApiServiceV1Client
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *grpcClient) Close() error {
|
func (t *grpcClient) Close() error {
|
||||||
// return t.conn.Close()
|
return t.conn.Close()
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *grpcClient) GetUserVacancies(ctx context.Context, in *pbVC.GetUserVacanciesRequest, opts ...grpc.CallOption) (*pbVC.GetUserVacanciesResponse, error) {
|
func (t *grpcClient) GetUserVacancies(ctx context.Context, in *pbVC.GetUserVacanciesRequest, opts ...grpc.CallOption) (*pbVC.GetUserVacanciesResponse, error) {
|
||||||
// // Append api key to Meta-data
|
// Append api key to Meta-data
|
||||||
// md := metadata.Pairs(constants.APIKey.String(), t.apiKey)
|
md := metadata.Pairs(constants.APIKey.String(), t.apiKey)
|
||||||
// ctx = metadata.NewOutgoingContext(ctx, md)
|
ctx = metadata.NewOutgoingContext(ctx, md)
|
||||||
|
|
||||||
// return t.vсClient.GetUserVacancies(ctx, in, opts...)
|
return t.vсClient.GetUserVacancies(ctx, in, opts...)
|
||||||
return &pbVC.GetUserVacanciesResponse{
|
|
||||||
Status: "success",
|
|
||||||
Items: []string{
|
|
||||||
"<b>THIS IS MOCKS</b>",
|
|
||||||
`
|
|
||||||
ЗП: до 500 000 рублей net
|
|
||||||
Penetration Tester – Red Team, Wildberries & Russ 💜
|
|
||||||
Уровень: Middle/Senior
|
|
||||||
Формат: удаленка или гибрид
|
|
||||||
📭 Вместе с масштабным развитием IT направления Wildberries и Russ развивает информационную безопасность. Мы решаем сложные и разнообразные задачи: от повышения защищенности каждого сервиса до развития безопасности в рамках всей нашей инфраструктуры. Сейчас мы в поиске опытного Penetration Tester в Red Team. Команда занимается проведением аудитов безопасности инфраструктуры, продуктов и сервисов в различных форматах (тестирования на проникновение, анализ защищенности, кибер-учения).
|
|
||||||
|
|
||||||
📝 Ключевые задачи:
|
|
||||||
• Проведение аудитов в формате тестирования на проникновение (внешняя и внутренняя инфраструктура, социалка)
|
|
||||||
|
|
||||||
• Проведение аудитов в формате анализа защищенности (веб и мобильные приложения)
|
|
||||||
• Проведение аудитов в формате Red/Purple Teaming
|
|
||||||
• Поиск и эксплуатация уязвимостей веб и мобильных приложений
|
|
||||||
• Поиск и эксплуатация уязвимостей и недостатков конфигурации ОС Linux а также специфичных для нее сервисов
|
|
||||||
• Поиск и эксплуатация уязвимостей OC Windows и недостатков конфигурации Active Directory
|
|
||||||
• Поиск и эксплуатация уязвимостей и недостатков конфигурации СУБД, систем виртуализации и контейнеризации
|
|
||||||
• Оформление найденных уязвимостей для отчетов по итогам проектов
|
|
||||||
💫 Основные требования:
|
|
||||||
• Опыт проведения проектов по анализу защищенности веб и мобильных приложений
|
|
||||||
|
|
||||||
• Опыт проведения проектов по тестированию на проникновение (внешняя и внутренняя инфраструктура)
|
|
||||||
• Опыт поиска и эксплуатации уязвимостей веб и мобильных приложений
|
|
||||||
• Опыт поиска и эксплуатации уязвимостей ОС Linux
|
|
||||||
• Опыт поиска и эксплуатации уязвимостей OC Windows и недостатков конфигурации AD
|
|
||||||
• Опыт поиска и эксплуатации уязвимостей и недостатков конфигурации систем виртуализации и контейнеризации
|
|
||||||
• Знание любого языка программирования на уровне достаточном для понимания/создания эксплойтов и автоматизации задач по поиску уязвимостей
|
|
||||||
❤️ Будет плюсом:
|
|
||||||
• Образование (бакалавр, магистр) в одном из технических вузов РФ (МИФИ, МГТУ им. Баумана, МГУ)
|
|
||||||
|
|
||||||
• Наличие профильных сертификатов (OSCP, OSWE, OSEP, CRTO)
|
|
||||||
• Выступления на крупных конференциях и митапах, например PHDays, OffZone, Standoff и других
|
|
||||||
• Участие в CTF и Bug Bounty
|
|
||||||
🔥 Что мы предлагаем:
|
|
||||||
|
|
||||||
• Полная удаленка или гибрид с офисами в Москве и Санкт-Петербурге
|
|
||||||
• IT-ипотека и оформление в аккредитованную IT-компанию
|
|
||||||
• Бесплатное питание в офисах, ДМС со стоматологией (после испытательного срока)
|
|
||||||
• Корпоративное обучение и IT-мероприятия
|
|
||||||
|
|
||||||
💘 Контакты: @alina_velbik
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *grpcClient) UpsertUserData(ctx context.Context, in *pbVC.UpsertUserDataRequest, opts ...grpc.CallOption) (*pbVC.UpsertUserDataResponse, error) {
|
func (t *grpcClient) UpsertUserData(ctx context.Context, in *pbVC.UpsertUserDataRequest, opts ...grpc.CallOption) (*pbVC.UpsertUserDataResponse, error) {
|
||||||
// // Append api key to Meta-data
|
// Append api key to Meta-data
|
||||||
// md := metadata.Pairs(constants.APIKey.String(), t.apiKey)
|
md := metadata.Pairs(constants.APIKey.String(), t.apiKey)
|
||||||
// ctx = metadata.NewOutgoingContext(ctx, md)
|
ctx = metadata.NewOutgoingContext(ctx, md)
|
||||||
|
|
||||||
// return t.vсClient.UpsertUserData(ctx, in, opts...)
|
return t.vсClient.UpsertUserData(ctx, in, opts...)
|
||||||
return &pbVC.UpsertUserDataResponse{
|
|
||||||
Status: "success",
|
|
||||||
}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init : Инициализирует общий gRPC клиент
|
// Init : Инициализирует общий gRPC клиент
|
||||||
func Init(addr, apiKey string) (*grpcClient, error) {
|
func Init(addr, apiKey string) (*grpcClient, error) {
|
||||||
// Открытие соединения
|
// Открытие соединения
|
||||||
// conn, err := grpc.Dial(
|
conn, err := grpc.Dial(
|
||||||
// addr,
|
addr,
|
||||||
// grpc.WithTransportCredentials(insecure.NewCredentials()),
|
grpc.WithTransportCredentials(insecure.NewCredentials()),
|
||||||
// grpc.WithBlock(),
|
grpc.WithBlock(),
|
||||||
// )
|
)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, err
|
|
||||||
// }
|
|
||||||
// Инициализация gRPC клиентов
|
// Инициализация gRPC клиентов
|
||||||
return &grpcClient{
|
return &grpcClient{
|
||||||
apiKey: apiKey,
|
apiKey: apiKey,
|
||||||
// conn: conn,
|
conn: conn,
|
||||||
// vсClient: pbVC.NewVisionCareerApiServiceV1Client(conn),
|
vсClient: pbVC.NewVisionCareerApiServiceV1Client(conn),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user