@@ -2,77 +2,28 @@ package main
22
33import (
44 "encoding/json"
5- "fmt"
6- "net/http"
7- "net/url"
5+ "github-telegram-notify/types"
6+ "github-telegram-notify/utils"
87 "os"
98)
109
11- type Metadata struct {
12- Sha string `json:"sha"`
13- RepositoryName string `json:"repository"`
14- Event Event `json:"event"`
15- Ref_name string `json:"ref_name"`
16- ServerUrl string `json:"server_url"`
17- }
18-
19- func (m * Metadata ) repoUrl () string {
20- return fmt .Sprint (m .ServerUrl , "/" , m .RepositoryName )
21- }
22-
23- type Event struct {
24- Commits []Commit `json:"commits"`
25- Compare string `json:"compare"`
26- }
27-
28- type Commit struct {
29- Id string `json:"id"`
30- Message string `json:"message"`
31- Url string `json:"url"`
32- Ref string `json:"ref"`
33- Author Author `json:"author"`
34- }
35-
36- type Author struct {
37- Name string `json:"name"`
38- Email string `json:"email"`
39- Username string `json:"username"`
40- }
41-
42- func (a * Author ) Url () string {
43- return fmt .Sprint ("https://github.com/" , a .Username )
44- }
45-
4610func main () {
47- apiBaseUri , _ := url .Parse ("https://api.telegram.org" )
4811 tg_token := os .Getenv ("INPUT_BOT_TOKEN" )
49- chatId := os .Getenv ("INPUT_CHAT_ID" )
12+ chatID := os .Getenv ("INPUT_CHAT_ID" )
5013 gitEventRaw := os .Getenv ("INPUT_GIT_EVENT" )
5114 print (gitEventRaw )
52- var gitEvent Metadata
15+ var gitEvent * types. Metadata
5316 err := json .Unmarshal ([]byte (gitEventRaw ), & gitEvent )
5417 if err != nil {
5518 panic (err )
5619 }
57- req_url , _ := url .Parse (fmt .Sprint (apiBaseUri , "/bot" , tg_token , "/sendMessage" ))
58- params := url.Values {}
59- text := fmt .Sprintf ("<b>🔨 %d New commit to</b> <a href=\" %s\" >%s</a>[<code>%s</code>]\n \n " , len (gitEvent .Event .Commits ), gitEvent .repoUrl (), gitEvent .RepositoryName , gitEvent .Ref_name )
60- for _ , commit := range gitEvent .Event .Commits {
61- text += fmt .Sprintf ("• <a href=\" %s\" >%s</a> - %s by <a href=\" %s\" >%s</a>\n " , commit .Url , commit .Id [:7 ], commit .Message , commit .Author .Url (), commit .Author .Name )
62- }
63- params .Set ("chat_id" , chatId )
64- params .Set ("text" , text )
65- params .Set ("parse_mode" , "html" )
66- params .Set ("disable_web_page_preview" , "true" )
67- kyb , err := json .Marshal (map [string ][][]map [string ]string {
68- "inline_keyboard" : {
69- {{"text" : "Open changes" , "url" : gitEvent .Event .Compare }},
70- },
71- })
20+ text , markupText , markupUrl , err := utils .CreateContents (gitEvent )
7221 if err != nil {
7322 panic (err )
7423 }
75- params .Set ("reply_markup" , string (kyb ))
76- req_url .RawQuery = params .Encode ()
77- http .Get (req_url .String ())
24+ error := utils .SendMessage (tg_token , chatID , text , markupText , markupUrl )
25+ if error .Description != "" {
26+ panic (error .String ())
27+ }
28+
7829}
0 commit comments