Skip to content

Commit 4bd1fd4

Browse files
committed
feat: add option to disable markdown parsing for message (resolve #67)
1 parent 921f773 commit 4bd1fd4

File tree

6 files changed

+34
-4
lines changed

6 files changed

+34
-4
lines changed

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,15 @@ Following inlets are currently available:
161161

162162
You can also **define your own, custom inlets** in YAML. Further documentation on this and about the individual pre-existing inlets is available [here](/inlets).
163163

164+
For all inlets, the following options are available to be passed as query parameters:
165+
166+
| Parameter | Description |
167+
|-------------------------|-----------------------------------------------------------------------------------|
168+
| `disable_link_previews` | Disable a preview version of web links detected in the message. Default: `false`. |
169+
| `disable_markdown` | Disable the message being attempted to be parsed as Markdown. Default: `false`. |
170+
171+
Example: `POST https://telepush.dev/api/inlets/default?disable_markdown=true&disable_link_previews=true`.
172+
164173
## 📊 Metrics
165174

166175
Fundamental [Prometheus](https://prometheus) metrics are exposed under `/metrics`, if the `-metrics` flag gets passed.

inlets/config_inlet.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,10 @@ func (c *ConfigInlet) Handler(h http.Handler) http.Handler {
8383

8484
ctx := r.Context()
8585
ctx = context.WithValue(ctx, config.KeyMessage, message)
86-
ctx = context.WithValue(ctx, config.KeyParams, &model.MessageOptions{DisableLinkPreviews: true})
86+
ctx = context.WithValue(ctx, config.KeyParams, &model.MessageOptions{
87+
DisableLinkPreviews: strings.ToLower(r.URL.Query().Get("disable_link_previews")) == "true",
88+
DisableMarkdown: strings.ToLower(r.URL.Query().Get("disable_markdown")) == "true",
89+
})
8790

8891
h.ServeHTTP(w, r.WithContext(ctx))
8992
})

inlets/default/default.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/muety/telepush/model"
99
"github.com/muety/telepush/util"
1010
"net/http"
11+
"strings"
1112

1213
"github.com/muety/telepush/inlets"
1314
)
@@ -37,6 +38,15 @@ func (i *DefaultInlet) Handler(h http.Handler) http.Handler {
3738
return
3839
}
3940

41+
// make query params take precedence
42+
q := r.URL.Query()
43+
if strings.ToLower(q.Get("disable_link_previews")) == "true" {
44+
m.Options.DisableLinkPreviews = true
45+
}
46+
if strings.ToLower(q.Get("disable_markdown")) == "true" {
47+
m.Options.DisableMarkdown = true
48+
}
49+
4050
if len(m.Origin) == 0 {
4151
m.Origin = model.DefaultOrigin
4252
}
@@ -60,7 +70,7 @@ func (i *DefaultInlet) tryParseBody(r *http.Request) (m model.MessageWithOptions
6070
func (i *DefaultInlet) tryParseQuery(r *http.Request) (m model.MessageWithOptions, err error) {
6171
query := r.URL.Query()
6272
queryParams := make(map[string]string)
63-
for k := range r.URL.Query() {
73+
for k := range query {
6474
queryParams[k] = query.Get(k)
6575
}
6676
decoder, _ := mapstructure.NewDecoder(&mapstructure.DecoderConfig{

model/message.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,12 @@ type MessageWithOptions struct {
1717

1818
type MessageOptions struct {
1919
DisableLinkPreviews bool `json:"disable_link_previews" mapstructure:"disable_link_previews"`
20+
DisableMarkdown bool `json:"disable_markdown" mapstructure:"disable_markdown"`
21+
}
22+
23+
func (o *MessageOptions) ParseMode() string {
24+
if o.DisableMarkdown {
25+
return ""
26+
}
27+
return "Markdown"
2028
}

resolvers/file.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func (r FileResolver) Resolve(recipientId string, m *model.Message, params *mode
2727
err = api.SendDocument(&model.TelegramOutDocument{
2828
ChatId: recipientId,
2929
Caption: "*" + m.Origin + "* sent a document",
30-
ParseMode: "Markdown",
30+
ParseMode: params.ParseMode(),
3131
Document: &model.TelegramInputFile{
3232
Name: m.Filename,
3333
Data: decodedFile,

resolvers/text.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func (r TextResolver) Resolve(recipientId string, m *model.Message, params *mode
2727
err := api.SendMessage(&model.TelegramOutMessage{
2828
ChatId: recipientId,
2929
Text: m.Text,
30-
ParseMode: "Markdown",
30+
ParseMode: params.ParseMode(),
3131
DisableLinkPreview: disableLinkPreview,
3232
})
3333

0 commit comments

Comments
 (0)