implentented token and added comments
This commit is contained in:
parent
c98343222d
commit
823fa374dc
103
main.go
103
main.go
|
@ -1,6 +1,7 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
|
@ -10,60 +11,100 @@ import (
|
|||
"os"
|
||||
)
|
||||
|
||||
type app struct {
|
||||
ClientId string `json:"client_id"`
|
||||
ClientSecret string `json:"client_secret"`
|
||||
}
|
||||
|
||||
type user struct {
|
||||
Username string `json:"username"`
|
||||
Instance string `json:"instance"`
|
||||
AccessToken string `json:"access_token"`
|
||||
}
|
||||
|
||||
var BASE_URL = "https://awoo.fai.st"
|
||||
var BASE_API_URL = "https://awoo.fai.st/api/v1"
|
||||
var DEFAULT_REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob"
|
||||
|
||||
func main() {
|
||||
client_id, client_secret, err := get_app_credentials()
|
||||
// Get the `client_id` and the `client_secret` values
|
||||
app, err := getAppCredentials(BASE_URL)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Println(client_id, client_secret)
|
||||
fmt.Println(getTokenUrl(BASE_URL, app))
|
||||
|
||||
// Read the token
|
||||
fmt.Print("Enter token: ")
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
token, err := reader.ReadString('\n')
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
token = token[:len(token)-1]
|
||||
fmt.Println(token)
|
||||
}
|
||||
|
||||
func get_app_credentials() (string, string, error) {
|
||||
func getTokenUrl(instance string, app *app) string {
|
||||
return fmt.Sprintf("%s/oauth/authorize?response_type=code&client_id=%s&redirect_uri=%s", BASE_URL, app.ClientId, DEFAULT_REDIRECT_URI)
|
||||
}
|
||||
|
||||
func getAppCredentials(instance string) (*app, error) {
|
||||
// We try to read the file `credentials.json` to read
|
||||
// the application's credentials
|
||||
// If it doesn't exist, we generate a new application
|
||||
contents, err := os.ReadFile("credentials.json")
|
||||
if err != nil {
|
||||
return create_app()
|
||||
return createApp(instance)
|
||||
}
|
||||
var json_data map[string]string
|
||||
err = json.Unmarshal(contents, &json_data)
|
||||
|
||||
// The file's contents are unmarshalled into a map
|
||||
var credentials app
|
||||
err = json.Unmarshal(contents, &credentials)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
client_id := json_data["client_id"]
|
||||
client_secret := json_data["client_secret"]
|
||||
|
||||
return client_id, client_secret, nil
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func create_app() (string, string, error) {
|
||||
return &credentials, nil
|
||||
}
|
||||
|
||||
func createApp(instance string) (*app, error) {
|
||||
// Define the values to the request for creating the app
|
||||
data := url.Values{
|
||||
"client_name": {"grames"},
|
||||
"redirect_uris": {"urn:ietf:wg:oauth:2.0:oob"},
|
||||
"redirect_uris": {DEFAULT_REDIRECT_URI},
|
||||
}
|
||||
|
||||
resp, err := http.PostForm(BASE_API_URL+"/apps", data)
|
||||
|
||||
// Send request to create app
|
||||
resp, err := http.PostForm(instance+"/api/v1/apps", data)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// Read the body's JSON response into `contents` as []byte
|
||||
contents, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
return nil, err
|
||||
}
|
||||
err = os.WriteFile("credentials.json", contents, 0644)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
var json_data map[string]string
|
||||
err = json.Unmarshal(contents, &json_data)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
client_id := json_data["client_id"]
|
||||
client_secret := json_data["client_secret"]
|
||||
|
||||
return client_id, client_secret, nil
|
||||
// Unmarshal the JSON data into an app struct
|
||||
var credentials app
|
||||
err = json.Unmarshal(contents, &credentials)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Marshal the app into JSON data
|
||||
b, err := json.MarshalIndent(credentials, "", " ")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Write the JSON data into the file `credentials.json`
|
||||
err = os.WriteFile("credentials.json", b, 0644)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &credentials, nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue