Get the Access-Token
( conf *Configuration )
| 17 | |
| 18 | // Get the Access-Token |
| 19 | func accessToken( conf *Configuration ) ( err error ) { |
| 20 | if conf.Rest.AccessTokenPath == "" { log.Println( "AcTo: [ERR] Access-Token must be stored in a file" ); return } |
| 21 | client := rest.New( conf.Rest ) // Create the REST client |
| 22 | if err = client.Init(); err != nil { log.Println( "AcTo: [ERR] REST Client setup failed:", err ); return } |
| 23 | if !client.HaveAccessToken() { // An old Access-Token may be used to obtain a new one, although that process may be done by "connect" too |
| 24 | if err = client.InteractiveCredentials(); err != nil { log.Println( "AcTo: [ERR] Credential error:", err ); return } // Try to obtain credentials through the terminal |
| 25 | } |
| 26 | dohResolver := doh.New(conf.DoH) |
| 27 | dohResolver.Init() |
| 28 | client.SetDohResolver(dohResolver) |
| 29 | |
| 30 | plainResolver := plain.New(conf.Plain) |
| 31 | if err = plainResolver.Init(); err != nil { log.Println( "AcTo: [ERR] Plain resolver init failed", err ); return } |
| 32 | client.SetPlainResolver(plainResolver) |
| 33 | |
| 34 | ctx, cancel := context.WithTimeout( context.Background(), conf.Rest.RestTimeout ) |
| 35 | defer cancel() |
| 36 | if err = client.Resolve( ctx ); err != nil { log.Println( "AcTo: [ERR] DNS failed:", err ); return } // Resolve the REST endpoint |
| 37 | if _, err = client.GetAccessToken( ctx ); err != nil { log.Println( "AcTo: [ERR] Access-Token request failed:", err ); return } // Request an Access-Token |
| 38 | log.Println( "AcTo: Access-Token stored in", conf.Rest.AccessTokenPath ) |
| 39 | return |
| 40 | } |
| 41 | |
| 42 | // Fetch and dump filtering categories |
| 43 | func categories( conf *Configuration ) { |
no test coverage detected