webhooks can be vpntor:///outdir
parent
dbfd33f55e
commit
352eff2691
|
|
@ -70,17 +70,19 @@ func oneItem(ctx context.Context, feed feeds.Feed, item feeds.Item) error {
|
||||||
Item: item,
|
Item: item,
|
||||||
}
|
}
|
||||||
|
|
||||||
method, err := render(feed.Version.WebhookMethod, arg)
|
wmethod, wurl, wbody := feed.Webhook()
|
||||||
|
|
||||||
|
method, err := render(wmethod, arg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
wurl, err := render(feed.Version.WebhookURL, arg)
|
wurl, err = render(wurl, arg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
body, err := render(feed.Version.WebhookBody, arg)
|
body, err := render(wbody, arg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,12 +24,12 @@ func (h Handler) feeds(w http.ResponseWriter, r *http.Request) error {
|
||||||
func (h Handler) feedsPost(ctx context.Context, form url.Values) error {
|
func (h Handler) feedsPost(ctx context.Context, form url.Values) error {
|
||||||
var req feeds.Version
|
var req feeds.Version
|
||||||
for k, v := range map[string]*string{
|
for k, v := range map[string]*string{
|
||||||
"URL": &req.URL,
|
|
||||||
"Cron": &req.Cron,
|
"Cron": &req.Cron,
|
||||||
"Pattern": &req.Pattern,
|
"Pattern": &req.Pattern,
|
||||||
|
"URL": &req.URL,
|
||||||
|
"WebhookBody": &req.WebhookBody,
|
||||||
"WebhookMethod": &req.WebhookMethod,
|
"WebhookMethod": &req.WebhookMethod,
|
||||||
"WebhookURL": &req.WebhookURL,
|
"WebhookURL": &req.WebhookURL,
|
||||||
"WebhookBody": &req.WebhookBody,
|
|
||||||
} {
|
} {
|
||||||
if *v = form.Get(k); *v == "" {
|
if *v = form.Get(k); *v == "" {
|
||||||
return fmt.Errorf("no ?%s in %s", k, form.Encode())
|
return fmt.Errorf("no ?%s in %s", k, form.Encode())
|
||||||
|
|
|
||||||
|
|
@ -5,18 +5,12 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
|
||||||
"show-rss/src/cmd/server/handler"
|
"show-rss/src/cmd/server/handler"
|
||||||
"strconv"
|
"show-rss/src/server"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Main(ctx context.Context) error {
|
func Main(ctx context.Context) error {
|
||||||
port, _ := strconv.Atoi(os.Getenv("PORT"))
|
return Run(ctx, fmt.Sprintf(":%d", server.Port))
|
||||||
if port == 0 {
|
|
||||||
port = 10000
|
|
||||||
}
|
|
||||||
|
|
||||||
return Run(ctx, fmt.Sprintf(":%d", port))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Run(ctx context.Context, listen string) error {
|
func Run(ctx context.Context, listen string) error {
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,11 @@ package feeds
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"net/url"
|
||||||
"show-rss/src/db"
|
"show-rss/src/db"
|
||||||
|
"show-rss/src/server"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
|
|
@ -230,3 +233,17 @@ func initDB(ctx context.Context) error {
|
||||||
)`,
|
)`,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (feed Feed) Webhook() (string, string, string) {
|
||||||
|
u, _ := url.Parse(feed.Version.WebhookURL)
|
||||||
|
switch u.Scheme {
|
||||||
|
case "vpntor":
|
||||||
|
return "POST", fmt.Sprintf("http://localhost:%d/v1/vpntor", server.Port), fmt.Sprintf(`{
|
||||||
|
"Magnet": "{{ .Item.Link }}",
|
||||||
|
"Dir": %q,
|
||||||
|
"URL": "https://vpntor.int.bel.blue/transmission/rpc"
|
||||||
|
}`, u.Path)
|
||||||
|
default:
|
||||||
|
return feed.Version.WebhookMethod, feed.Version.WebhookURL, feed.Version.WebhookBody
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
package server
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
var Port = func() int {
|
||||||
|
port, _ := strconv.Atoi(os.Getenv("PORT"))
|
||||||
|
if port == 0 {
|
||||||
|
port = 10000
|
||||||
|
}
|
||||||
|
return port
|
||||||
|
}()
|
||||||
Loading…
Reference in New Issue