- create cloud folder discord handler;
This commit is contained in:
parent
f8bccf0135
commit
6f4824e628
|
|
@ -22,7 +22,6 @@ func main() {
|
||||||
log.Print("started")
|
log.Print("started")
|
||||||
config := domain.InitConfig("develop.env")
|
config := domain.InitConfig("develop.env")
|
||||||
run(config)
|
run(config)
|
||||||
// test(config)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func run(conf domain.Config) {
|
func run(conf domain.Config) {
|
||||||
|
|
@ -43,13 +42,13 @@ func run(conf domain.Config) {
|
||||||
|
|
||||||
gitService := services.NewGit(conf.Git)
|
gitService := services.NewGit(conf.Git)
|
||||||
cloudService := services.NewCloud(conf.Cloud)
|
cloudService := services.NewCloud(conf.Cloud)
|
||||||
codeService := services.NewCodaClient(conf.Coda)
|
codaService := services.NewCodaClient(conf.Coda)
|
||||||
|
|
||||||
// Инициализация контроллера:
|
// Инициализация контроллера:
|
||||||
controller := controller.NewWorkflowController(
|
controller := controller.NewWorkflowController(
|
||||||
gitService,
|
gitService,
|
||||||
cloudService,
|
cloudService,
|
||||||
codeService,
|
codaService,
|
||||||
conn,
|
conn,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -68,7 +67,7 @@ func run(conf domain.Config) {
|
||||||
// TicketsRepo: db,
|
// TicketsRepo: db,
|
||||||
GitService: gitService,
|
GitService: gitService,
|
||||||
CloudService: cloudService,
|
CloudService: cloudService,
|
||||||
Coda: codeService,
|
Coda: codaService,
|
||||||
AppConfig: &conf,
|
AppConfig: &conf,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ func InitRouter(wc controller.WorkflowController) *router {
|
||||||
r.Routes = append(
|
r.Routes = append(
|
||||||
r.Routes,
|
r.Routes,
|
||||||
r.CreateRepoHandler(3),
|
r.CreateRepoHandler(3),
|
||||||
|
r.CreateFolderHandler(3),
|
||||||
r.CreateTicketHandler(3),
|
r.CreateTicketHandler(3),
|
||||||
)
|
)
|
||||||
r.controller = wc
|
r.controller = wc
|
||||||
|
|
@ -97,22 +98,99 @@ func (h *router) CreateRepoHandler(repoNameMinLength int) route {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if option, ok := optionMap["repo_name"]; ok {
|
if project == nil {
|
||||||
str = option.StringValue()
|
if option, ok := optionMap["repo_name"]; ok {
|
||||||
|
str = option.StringValue()
|
||||||
|
} else {
|
||||||
|
str = ""
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
str = project.ShortName
|
str = project.ShortName
|
||||||
}
|
}
|
||||||
|
|
||||||
str = str + suffix
|
if str == "" {
|
||||||
|
result = "Ты, либо в проекте репо создавай, либо имя напиши, блет!"
|
||||||
var g *domain.Git
|
|
||||||
|
|
||||||
g, err := h.controller.IGit.CreateRepo(str)
|
|
||||||
// g, err := h.git.CreateRepo(str)
|
|
||||||
if err != nil {
|
|
||||||
result = fmt.Sprintf("error while repo creation: %v", err)
|
|
||||||
} else {
|
} else {
|
||||||
result = "🚀 " + g.HtmlUrl + " was created"
|
str = str + suffix
|
||||||
|
|
||||||
|
// var g *domain.Git
|
||||||
|
|
||||||
|
g, err := h.controller.IGit.CreateRepo(str)
|
||||||
|
if err != nil {
|
||||||
|
result = fmt.Sprintf("error while repo creation: %v", err)
|
||||||
|
} else {
|
||||||
|
result = "🚀 " + g.HtmlUrl + " was created"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
discerr := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||||
|
// Ignore type for now, they will be discussed in "responses"
|
||||||
|
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||||
|
Data: &discordgo.InteractionResponseData{
|
||||||
|
Content: result,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
log.Println(discerr)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *router) CreateFolderHandler(nameMinLenght int) route {
|
||||||
|
const (
|
||||||
|
nameOption string = "folder_name"
|
||||||
|
)
|
||||||
|
return route{
|
||||||
|
Command: discordgo.ApplicationCommand{
|
||||||
|
Name: "folder",
|
||||||
|
Description: "Command for cloud folder creation",
|
||||||
|
Options: []*discordgo.ApplicationCommandOption{
|
||||||
|
{
|
||||||
|
Type: discordgo.ApplicationCommandOptionString,
|
||||||
|
Name: nameOption,
|
||||||
|
Description: "Type the repository's name",
|
||||||
|
Required: false,
|
||||||
|
MinLength: &nameMinLenght,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Handler: func(s *discordgo.Session, i *discordgo.InteractionCreate) {
|
||||||
|
var result string
|
||||||
|
// Access options in the order provided by the user.
|
||||||
|
options := i.ApplicationCommandData().Options
|
||||||
|
|
||||||
|
// Or convert the slice into a map
|
||||||
|
optionMap := make(map[string]*discordgo.ApplicationCommandInteractionDataOption, len(options))
|
||||||
|
for _, opt := range options {
|
||||||
|
optionMap[opt.Name] = opt
|
||||||
|
}
|
||||||
|
|
||||||
|
var str string = ""
|
||||||
|
|
||||||
|
project, err := h.controller.GetProjectByChannelID(context.TODO(), i.ChannelID)
|
||||||
|
if err != nil {
|
||||||
|
result = fmt.Sprintf("unable to retrieve project from db, error: %v", err)
|
||||||
|
} else {
|
||||||
|
if project == nil {
|
||||||
|
if option, ok := optionMap[nameOption]; ok {
|
||||||
|
str = option.StringValue()
|
||||||
|
} else {
|
||||||
|
str = ""
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
str = project.ShortName
|
||||||
|
}
|
||||||
|
|
||||||
|
if str == "" {
|
||||||
|
result = "Ты, либо в проекте директорию создавай, либо имя напиши, блет!"
|
||||||
|
} else {
|
||||||
|
|
||||||
|
f, err := h.controller.ICloud.CreateFolder(str)
|
||||||
|
if err != nil {
|
||||||
|
result = fmt.Sprintf("error while cloud folder creation: %v", err)
|
||||||
|
} else {
|
||||||
|
result = "📂 Folder: " + f.PrivateURL + " was created"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,8 @@ func Run(ctx context.Context, opts TelegramOptions) error {
|
||||||
Message(h.Init, tgb.Command("init")).
|
Message(h.Init, tgb.Command("init")).
|
||||||
Message(h.PingHandler, tgb.Command("ping")).
|
Message(h.PingHandler, tgb.Command("ping")).
|
||||||
// Message(h.DevelopmentTaskHandler, tgb.TextHasPrefix("/new")).
|
// Message(h.DevelopmentTaskHandler, tgb.TextHasPrefix("/new")).
|
||||||
Message(h.NewRepoHandler, tgb.TextHasPrefix("/repo")).
|
// Message(h.NewRepoHandler, tgb.TextHasPrefix("/repo")).
|
||||||
Message(h.NewFolderHandler, tgb.TextHasPrefix("/folder")).
|
// Message(h.NewFolderHandler, tgb.TextHasPrefix("/folder")).
|
||||||
Message(h.FarmTaskHandler, tgb.TextHasPrefix("/task"))
|
Message(h.FarmTaskHandler, tgb.TextHasPrefix("/task"))
|
||||||
|
|
||||||
return tgb.NewPoller(
|
return tgb.NewPoller(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue