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 (
|
||||
"fmt"
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
|
||||
"gitea.cybertalant.ru/VisionCareerMiniapp/MiniappGoService/internal/application/constants"
|
||||
"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 {
|
||||
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 {
|
||||
needUpdateUser = false
|
||||
msg = constants.UnknownCommandBotMessage
|
||||
|
||||
@ -4,102 +4,55 @@ import (
|
||||
"context"
|
||||
|
||||
pbVC "gitea.cybertalant.ru/VisionCareerMiniapp/DataManagement/pb/golang"
|
||||
"gitea.cybertalant.ru/VisionCareerMiniapp/MiniappGoService/internal/application/constants"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/credentials/insecure"
|
||||
"google.golang.org/grpc/metadata"
|
||||
)
|
||||
|
||||
type grpcClient struct {
|
||||
apiKey string
|
||||
// conn *grpc.ClientConn
|
||||
// vсClient pbVC.VisionCareerApiServiceV1Client
|
||||
apiKey string
|
||||
conn *grpc.ClientConn
|
||||
vсClient pbVC.VisionCareerApiServiceV1Client
|
||||
}
|
||||
|
||||
func (t *grpcClient) Close() error {
|
||||
// return t.conn.Close()
|
||||
return nil
|
||||
return t.conn.Close()
|
||||
}
|
||||
|
||||
func (t *grpcClient) GetUserVacancies(ctx context.Context, in *pbVC.GetUserVacanciesRequest, opts ...grpc.CallOption) (*pbVC.GetUserVacanciesResponse, error) {
|
||||
// // Append api key to Meta-data
|
||||
// md := metadata.Pairs(constants.APIKey.String(), t.apiKey)
|
||||
// ctx = metadata.NewOutgoingContext(ctx, md)
|
||||
// Append api key to Meta-data
|
||||
md := metadata.Pairs(constants.APIKey.String(), t.apiKey)
|
||||
ctx = metadata.NewOutgoingContext(ctx, md)
|
||||
|
||||
// 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
|
||||
return t.vсClient.GetUserVacancies(ctx, in, opts...)
|
||||
}
|
||||
|
||||
func (t *grpcClient) UpsertUserData(ctx context.Context, in *pbVC.UpsertUserDataRequest, opts ...grpc.CallOption) (*pbVC.UpsertUserDataResponse, error) {
|
||||
// // Append api key to Meta-data
|
||||
// md := metadata.Pairs(constants.APIKey.String(), t.apiKey)
|
||||
// ctx = metadata.NewOutgoingContext(ctx, md)
|
||||
// Append api key to Meta-data
|
||||
md := metadata.Pairs(constants.APIKey.String(), t.apiKey)
|
||||
ctx = metadata.NewOutgoingContext(ctx, md)
|
||||
|
||||
// return t.vсClient.UpsertUserData(ctx, in, opts...)
|
||||
return &pbVC.UpsertUserDataResponse{
|
||||
Status: "success",
|
||||
}, nil
|
||||
return t.vсClient.UpsertUserData(ctx, in, opts...)
|
||||
}
|
||||
|
||||
// Init : Инициализирует общий gRPC клиент
|
||||
func Init(addr, apiKey string) (*grpcClient, error) {
|
||||
// Открытие соединения
|
||||
// conn, err := grpc.Dial(
|
||||
// addr,
|
||||
// grpc.WithTransportCredentials(insecure.NewCredentials()),
|
||||
// grpc.WithBlock(),
|
||||
// )
|
||||
conn, err := grpc.Dial(
|
||||
addr,
|
||||
grpc.WithTransportCredentials(insecure.NewCredentials()),
|
||||
grpc.WithBlock(),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// if err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
// Инициализация gRPC клиентов
|
||||
return &grpcClient{
|
||||
apiKey: apiKey,
|
||||
// conn: conn,
|
||||
// vсClient: pbVC.NewVisionCareerApiServiceV1Client(conn),
|
||||
apiKey: apiKey,
|
||||
conn: conn,
|
||||
vсClient: pbVC.NewVisionCareerApiServiceV1Client(conn),
|
||||
}, nil
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user