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:
parent
50726b4f07
commit
6e053fc117
3
main.go
3
main.go
@ -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":
|
||||||
|
@ -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"),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
30
modules/gitter/settings.go
Normal file
30
modules/gitter/settings.go
Normal 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
|
||||||
|
}
|
@ -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()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user