package main import ( "bufio" "fmt" "os" "strconv" ) type UTRSimple struct { AccessToken string `json:"access_token"` ExpiresIn int `json:"expires_in"` RefreshToken string `json:"refresh_token"` } func Auth(authFile string) UTRSimple { _ , ferr := os.Stat(authFile) if ferr != nil { WriteAuth(authFile) } return ReadAuth(authFile) } func WriteAuth(authFile string) { authToken, err := GetOAuth() if err != nil { panic(err) } uT := GetUserToken(authToken) err = os.MkdirAll(dataDir, 0755) if err != nil { panic(err) } file, err := os.Create(authFile) if err != nil { panic(err) } defer file.Close() confString := fmt.Sprintf("%s\n%d\n%s", uT.AccessToken, uT.ExpiresIn, uT.RefreshToken) _, err = file.WriteString(confString) if err != nil { panic(err) } } func ReadAuth(authFile string) UTRSimple{ file, err := os.Open(authFile) if err != nil { fmt.Println("Error opening file:", err) panic(err) } defer file.Close() var lines []string scanner := bufio.NewScanner(file) for scanner.Scan() { lines = append(lines, scanner.Text()) } var utrs UTRSimple if len(lines) >= 3 { utrs.AccessToken = lines[0] exp, _ := strconv.Atoi(lines[1]) utrs.ExpiresIn = exp utrs.RefreshToken = lines[2] } else { fmt.Println("File does not contain enough lines.") } return utrs }