mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
Gracefully handle calendar connection failures
This commit is contained in:
parent
a4a94f2984
commit
22a9f7b194
2
config.yml
Normal file
2
config.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
wtf:
|
||||||
|
refresh_interval: 1
|
@ -92,35 +92,40 @@ func saveToken(file string, token *oauth2.Token) {
|
|||||||
log.Fatalf("Unable to cache oauth token: %v", err)
|
log.Fatalf("Unable to cache oauth token: %v", err)
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
|
||||||
json.NewEncoder(f).Encode(token)
|
json.NewEncoder(f).Encode(token)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Fetch() *calendar.Events {
|
func Fetch() (*calendar.Events, error) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
b, err := ioutil.ReadFile("./gcal/client_secret.json")
|
b, err := ioutil.ReadFile("./gcal/client_secret.json")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Unable to read client secret file: %v", err)
|
//log.Fatalf("Unable to read client secret file: %v", err)
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
config, err := google.ConfigFromJSON(b, calendar.CalendarReadonlyScope)
|
config, err := google.ConfigFromJSON(b, calendar.CalendarReadonlyScope)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Unable to parse client secret file to config: %v", err)
|
//log.Fatalf("Unable to parse client secret file to config: %v", err)
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
client := getClient(ctx, config)
|
client := getClient(ctx, config)
|
||||||
|
|
||||||
srv, err := calendar.New(client)
|
srv, err := calendar.New(client)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Unable to retrieve calendar Client %v", err)
|
//log.Fatalf("Unable to retrieve calendar Client %v", err)
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
t := today().Format(time.RFC3339)
|
t := today().Format(time.RFC3339)
|
||||||
events, err := srv.Events.List("primary").ShowDeleted(false).SingleEvents(true).TimeMin(t).MaxResults(10).OrderBy("startTime").Do()
|
events, err := srv.Events.List("primary").ShowDeleted(false).SingleEvents(true).TimeMin(t).MaxResults(10).OrderBy("startTime").Do()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Unable to retrieve next ten of the user's events. %v", err)
|
//log.Fatalf("Unable to retrieve next ten of the user's events. %v", err)
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return events
|
return events, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func today() time.Time {
|
func today() time.Time {
|
||||||
|
@ -34,7 +34,7 @@ func NewWidget() *Widget {
|
|||||||
/* -------------------- Exported Functions -------------------- */
|
/* -------------------- Exported Functions -------------------- */
|
||||||
|
|
||||||
func (widget *Widget) Refresh() {
|
func (widget *Widget) Refresh() {
|
||||||
events := Fetch()
|
events, _ := Fetch()
|
||||||
|
|
||||||
widget.View.SetTitle(" 🍿 Calendar ")
|
widget.View.SetTitle(" 🍿 Calendar ")
|
||||||
widget.RefreshedAt = time.Now()
|
widget.RefreshedAt = time.Now()
|
||||||
@ -58,6 +58,10 @@ func (widget *Widget) addView() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (widget *Widget) contentFrom(events *calendar.Events) string {
|
func (widget *Widget) contentFrom(events *calendar.Events) string {
|
||||||
|
if events == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
str := "\n"
|
str := "\n"
|
||||||
|
|
||||||
for _, event := range events.Items {
|
for _, event := range events.Items {
|
||||||
|
15
wtf.go
15
wtf.go
@ -1,8 +1,10 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/olebedev/config"
|
||||||
"github.com/rivo/tview"
|
"github.com/rivo/tview"
|
||||||
"github.com/senorprogrammer/wtf/bamboohr"
|
"github.com/senorprogrammer/wtf/bamboohr"
|
||||||
"github.com/senorprogrammer/wtf/gcal"
|
"github.com/senorprogrammer/wtf/gcal"
|
||||||
@ -14,6 +16,15 @@ import (
|
|||||||
"github.com/senorprogrammer/wtf/weather"
|
"github.com/senorprogrammer/wtf/weather"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func loadConfig() *config.Config {
|
||||||
|
cfg, err := config.ParseYamlFile("./config.yml")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
}
|
||||||
|
|
||||||
func refresher(stat *status.Widget, app *tview.Application) {
|
func refresher(stat *status.Widget, app *tview.Application) {
|
||||||
tick := time.NewTicker(1 * time.Second)
|
tick := time.NewTicker(1 * time.Second)
|
||||||
quit := make(chan struct{})
|
quit := make(chan struct{})
|
||||||
@ -30,6 +41,10 @@ func refresher(stat *status.Widget, app *tview.Application) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
cfg := loadConfig()
|
||||||
|
|
||||||
|
fmt.Printf("%v\n", cfg)
|
||||||
|
|
||||||
bamboo := bamboohr.NewWidget()
|
bamboo := bamboohr.NewWidget()
|
||||||
bamboo.Refresh()
|
bamboo.Refresh()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user