Skip to content

Commit

Permalink
Merge pull request #17 from terratensor/16-tg-link-clipper
Browse files Browse the repository at this point in the history
Добавлена функция обрабатывающая телеграм ссылки
  • Loading branch information
audetv authored Oct 7, 2023
2 parents 8c78795 + 2000af9 commit ef969e1
Showing 1 changed file with 31 additions and 1 deletion.
32 changes: 31 additions & 1 deletion consumer/internal/infra/msgparser/msgparser.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ func Parse(msg string) ([]string, error) {
builder.WriteString(fmt.Sprintf("\n%s\n", processBlockquote(n)))
return
}
if n.Type == html.ElementNode && nodeHasRequiredCssClass("link", n) {
link := getInnerText(n)
link = tgLinkClipper(link)
builder.WriteString(fmt.Sprintf("%v", link))
return
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
f(c)
}
Expand Down Expand Up @@ -99,7 +105,9 @@ func processBlockquote(node *html.Node) string {
continue
}
if el.Type == html.ElementNode && nodeHasRequiredCssClass("link", el) {
text += fmt.Sprintf("\n%v\n", strings.TrimSpace(getInnerText(el)))
link := getInnerText(el)
link = tgLinkClipper(link)
text += fmt.Sprintf(" %v", link)
}
}

Expand All @@ -119,6 +127,28 @@ func processBlockquote(node *html.Node) string {
return strings.TrimSpace(builder.String())
}

// tgLinkClipper вырезает из url на телеграм канал схему и подставляет нижнее подчеркивание перед адресом
// необходимо для того, чтобы телеграм ссылки отображались как текст и не открывались.
// Исключение составляет канал svoddru
func tgLinkClipper(link string) string {

if strings.Contains(link, "https://t.me/svoddru") {
return link
}

if strings.Contains(link, "https://t.me") {
link = strings.ReplaceAll(link, "https://", "")
link = fmt.Sprintf("_%v", link)
}

if strings.Contains(link, "http://t.me") {
link = strings.ReplaceAll(link, "http://", "")
link = fmt.Sprintf("_%v", link)
}

return link
}

// Перебирает аттрибуты токена в цикле и возвращает bool
// если в html token найден переданный css class
func nodeHasRequiredCssClass(rcc string, n *html.Node) bool {
Expand Down

0 comments on commit ef969e1

Please sign in to comment.