1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

WTF-400 Gitter extracted to new config format

This commit is contained in:
Chris Cummer 2019-04-14 19:45:27 -07:00
parent 50726b4f07
commit 6e053fc117
4 changed files with 45 additions and 20 deletions

View File

@ -223,7 +223,8 @@ func makeWidget(app *tview.Application, pages *tview.Pages, widgetName string) w
settings := gitlab.NewSettingsFromYAML(wtf.Config) settings := gitlab.NewSettingsFromYAML(wtf.Config)
widget = gitlab.NewWidget(app, pages, settings) widget = gitlab.NewWidget(app, pages, settings)
case "gitter": case "gitter":
widget = gitter.NewWidget(app, pages) settings := gitter.NewSettingsFromYAML(wtf.Config)
widget = gitter.NewWidget(app, pages, settings)
case "gspreadsheets": case "gspreadsheets":
widget = gspreadsheets.NewWidget(app) widget = gspreadsheets.NewWidget(app)
case "hackernews": case "hackernews":

View File

@ -5,18 +5,16 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/wtfutil/wtf/logger" "github.com/wtfutil/wtf/logger"
"github.com/wtfutil/wtf/wtf"
"io" "io"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
"os"
"strconv" "strconv"
) )
func GetMessages(roomId string, numberOfMessages int) ([]Message, error) { func GetMessages(roomId string, numberOfMessages int, apiToken string) ([]Message, error) {
var messages []Message var messages []Message
resp, err := apiRequest("rooms/" + roomId + "/chatMessages?limit=" + strconv.Itoa(numberOfMessages)) resp, err := apiRequest("rooms/"+roomId+"/chatMessages?limit="+strconv.Itoa(numberOfMessages), apiToken)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -26,10 +24,10 @@ func GetMessages(roomId string, numberOfMessages int) ([]Message, error) {
return messages, nil return messages, nil
} }
func GetRoom(roomUri string) (*Room, error) { func GetRoom(roomUri, apiToken string) (*Room, error) {
var rooms Rooms var rooms Rooms
resp, err := apiRequest("rooms?q=" + roomUri) resp, err := apiRequest("rooms?q="+roomUri, apiToken)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -52,9 +50,9 @@ var (
apiBaseURL = "https://api.gitter.im/v1/" apiBaseURL = "https://api.gitter.im/v1/"
) )
func apiRequest(path string) (*http.Response, error) { func apiRequest(path, apiToken string) (*http.Response, error) {
req, err := http.NewRequest("GET", apiBaseURL+path, nil) req, err := http.NewRequest("GET", apiBaseURL+path, nil)
bearer := fmt.Sprintf("Bearer %s", apiToken()) bearer := fmt.Sprintf("Bearer %s", apiToken)
req.Header.Add("Authorization", bearer) req.Header.Add("Authorization", bearer)
httpClient := &http.Client{} httpClient := &http.Client{}
@ -86,10 +84,3 @@ func parseJson(obj interface{}, text io.Reader) {
} }
} }
} }
func apiToken() string {
return wtf.Config.UString(
"wtf.mods.gitter.apiToken",
os.Getenv("WTF_GITTER_API_TOKEN"),
)
}

View File

@ -0,0 +1,30 @@
package gitter
import (
"os"
"github.com/olebedev/config"
"github.com/wtfutil/wtf/cfg"
)
type Settings struct {
common *cfg.Common
apiToken string
numberOfMessages int
roomURI string
}
func NewSettingsFromYAML(ymlConfig *config.Config) *Settings {
localConfig, _ := ymlConfig.Get("wtf.mods.gitter")
settings := Settings{
common: cfg.NewCommonSettingsFromYAML(ymlConfig),
apiToken: localConfig.UString("apiToken", os.Getenv("WTF_GITTER_API_TOKEN")),
numberOfMessages: localConfig.UInt("numberOfMessages", 10),
roomURI: localConfig.UString("roomUri", "wtfutil/Lobby"),
}
return &settings
}

View File

@ -26,12 +26,15 @@ type Widget struct {
messages []Message messages []Message
selected int selected int
settings *Settings
} }
func NewWidget(app *tview.Application, pages *tview.Pages) *Widget { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget {
widget := Widget{ widget := Widget{
HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText),
TextWidget: wtf.NewTextWidget(app, "Gitter", "gitter", true), TextWidget: wtf.NewTextWidget(app, "Gitter", "gitter", true),
settings: settings,
} }
widget.HelpfulWidget.SetView(widget.View) widget.HelpfulWidget.SetView(widget.View)
@ -51,7 +54,7 @@ func (widget *Widget) Refresh() {
return return
} }
room, err := GetRoom(wtf.Config.UString("wtf.mods.gitter.roomUri", "wtfutil/Lobby")) room, err := GetRoom(widget.settings.roomURI, widget.settings.apiToken)
if err != nil { if err != nil {
widget.View.SetWrap(true) widget.View.SetWrap(true)
widget.View.SetTitle(widget.Name()) widget.View.SetTitle(widget.Name())
@ -63,7 +66,7 @@ func (widget *Widget) Refresh() {
return return
} }
messages, err := GetMessages(room.ID, wtf.Config.UInt("wtf.mods.gitter.numberOfMessages", 10)) messages, err := GetMessages(room.ID, widget.settings.numberOfMessages, widget.settings.apiToken)
if err != nil { if err != nil {
widget.View.SetWrap(true) widget.View.SetWrap(true)
@ -86,7 +89,7 @@ func (widget *Widget) display() {
widget.View.SetWrap(true) widget.View.SetWrap(true)
widget.View.Clear() widget.View.Clear()
widget.View.SetTitle(widget.ContextualTitle(fmt.Sprintf("%s - %s", widget.Name(), wtf.Config.UString("wtf.mods.gitter.roomUri", "wtfutil/Lobby")))) widget.View.SetTitle(widget.ContextualTitle(fmt.Sprintf("%s - %s", widget.Name(), widget.settings.roomURI)))
widget.View.SetText(widget.contentFrom(widget.messages)) widget.View.SetText(widget.contentFrom(widget.messages))
widget.View.Highlight(strconv.Itoa(widget.selected)).ScrollToHighlight() widget.View.Highlight(strconv.Itoa(widget.selected)).ScrollToHighlight()
} }