63 lines
1.1 KiB
Go
63 lines
1.1 KiB
Go
package telegram_handler
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
"ticket-pimp/internal/domain"
|
|
|
|
"github.com/mr-linch/go-tg"
|
|
"github.com/mr-linch/go-tg/tgb"
|
|
)
|
|
|
|
type git struct {
|
|
name string
|
|
url string
|
|
|
|
git string
|
|
ssh string
|
|
}
|
|
|
|
func newGit(g *domain.Git) *git {
|
|
return &git{
|
|
name: g.Name,
|
|
url: g.HtmlUrl,
|
|
git: g.CloneUrl,
|
|
ssh: fmt.Sprintf("ssh://%s/%s.git", g.SshUrl, g.FullName),
|
|
}
|
|
}
|
|
|
|
// FYI: Telegram doesn't renders this hyperlink, if the url is localhost 🤷♂️
|
|
func (g *git) PrepareAnswer() string {
|
|
return tg.HTML.Text(
|
|
tg.HTML.Line(
|
|
"Repo ",
|
|
tg.HTML.Link(g.name, g.url),
|
|
"has been created!",
|
|
),
|
|
)
|
|
}
|
|
|
|
func (h *Handler) NewRepoHandler(ctx context.Context, mu *tgb.MessageUpdate) error {
|
|
|
|
str := strings.Replace(mu.Text, "/repo", "", 1)
|
|
|
|
if str == "" {
|
|
return errors.New("empty command provided")
|
|
}
|
|
|
|
var g *domain.Git
|
|
|
|
g, err := h.git.CreateRepo(str)
|
|
|
|
if err != nil {
|
|
return mu.Answer(errorAnswer(err.Error())).ParseMode(tg.HTML).DoVoid(ctx)
|
|
}
|
|
|
|
resp := newGit(g).PrepareAnswer()
|
|
h.LogMessage(ctx, mu, resp)
|
|
|
|
return mu.Answer(resp).ParseMode(tg.HTML).DoVoid(ctx)
|
|
}
|