kopia lustrzana https://github.com/bugout-dev/moonstream
work with bugout-go
rodzic
b0623f738c
commit
aa0795469a
|
@ -1,241 +0,0 @@
|
||||||
package cmd
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"io/ioutil"
|
|
||||||
"net/http"
|
|
||||||
|
|
||||||
configs "github.com/bugout-dev/moonstream/nodes/node_balancer/configs"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
bugoutClient BugoutClient
|
|
||||||
)
|
|
||||||
|
|
||||||
type BugoutClient struct {
|
|
||||||
Client http.Client
|
|
||||||
AuthURL string
|
|
||||||
}
|
|
||||||
|
|
||||||
type PingResponse struct {
|
|
||||||
Status string `json:"status"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bugout responses
|
|
||||||
type BugoutUserResponse struct {
|
|
||||||
ID string `json:"user_id"`
|
|
||||||
ApplicationID string `json:"application_id"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type UserAccess struct {
|
|
||||||
UserID string `json:"user_id"`
|
|
||||||
AccessID string `json:"access_id"`
|
|
||||||
Name string `json:"name"`
|
|
||||||
Description string `json:"description"`
|
|
||||||
BlockchainAccess bool `json:"blockchain_access"`
|
|
||||||
ExtendedMethods bool `json:"extended_methods"`
|
|
||||||
|
|
||||||
dataSource string
|
|
||||||
}
|
|
||||||
|
|
||||||
type BugoutResourceResponse struct {
|
|
||||||
ID string `json:"id"`
|
|
||||||
ResourceData UserAccess `json:"resource_data"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type BugoutResourcesResponse struct {
|
|
||||||
Resources []BugoutResourceResponse `json:"resources"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize Bugout http client
|
|
||||||
func InitBugoutClient() {
|
|
||||||
client := http.Client{Timeout: configs.BUGOUT_AUTH_CALL_TIMEOUT}
|
|
||||||
bugoutClient = BugoutClient{
|
|
||||||
Client: client,
|
|
||||||
AuthURL: configs.BUGOUT_AUTH_URL,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get Bugout user
|
|
||||||
func (bc *BugoutClient) GetUser(token string) (BugoutUserResponse, error) {
|
|
||||||
var userResponse BugoutUserResponse
|
|
||||||
|
|
||||||
url := fmt.Sprintf("%s/user", configs.BUGOUT_AUTH_URL)
|
|
||||||
req, err := http.NewRequest("GET", url, nil)
|
|
||||||
if err != nil {
|
|
||||||
return userResponse, err
|
|
||||||
}
|
|
||||||
|
|
||||||
req.Header = http.Header{
|
|
||||||
"Authorization": []string{fmt.Sprintf("Bearer %s", token)},
|
|
||||||
}
|
|
||||||
resp, err := bc.Client.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
return userResponse, err
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
|
|
||||||
// Parse response
|
|
||||||
body, err := ioutil.ReadAll(resp.Body)
|
|
||||||
if err != nil {
|
|
||||||
return userResponse, err
|
|
||||||
}
|
|
||||||
err = json.Unmarshal(body, &userResponse)
|
|
||||||
if err != nil {
|
|
||||||
return userResponse, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return userResponse, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find Bugout user
|
|
||||||
func (bc *BugoutClient) FindUser(token, userID string) (BugoutUserResponse, error) {
|
|
||||||
var userResponse BugoutUserResponse
|
|
||||||
|
|
||||||
url := fmt.Sprintf("%s/user/find?user_id=%s", configs.BUGOUT_AUTH_URL, userID)
|
|
||||||
req, err := http.NewRequest("GET", url, nil)
|
|
||||||
if err != nil {
|
|
||||||
return userResponse, err
|
|
||||||
}
|
|
||||||
|
|
||||||
req.Header = http.Header{
|
|
||||||
"Authorization": []string{fmt.Sprintf("Bearer %s", token)},
|
|
||||||
}
|
|
||||||
resp, err := bc.Client.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
return userResponse, err
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
|
|
||||||
// Parse response
|
|
||||||
body, err := ioutil.ReadAll(resp.Body)
|
|
||||||
if err != nil {
|
|
||||||
return userResponse, err
|
|
||||||
}
|
|
||||||
err = json.Unmarshal(body, &userResponse)
|
|
||||||
if err != nil {
|
|
||||||
return userResponse, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return userResponse, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (bc *BugoutClient) AddUserAccess(token string, proposedUserAccess UserAccess) (UserAccess, error) {
|
|
||||||
var userAccess UserAccess
|
|
||||||
|
|
||||||
// Check user exists
|
|
||||||
user, err := bc.FindUser(token, proposedUserAccess.UserID)
|
|
||||||
if err != nil {
|
|
||||||
return userAccess, err
|
|
||||||
}
|
|
||||||
if user == (BugoutUserResponse{}) {
|
|
||||||
return userAccess, fmt.Errorf("User with id %s not found", proposedUserAccess.UserID)
|
|
||||||
}
|
|
||||||
|
|
||||||
resource := map[string]interface{}{
|
|
||||||
"application_id": configs.NB_APPLICATION_ID,
|
|
||||||
"resource_data": proposedUserAccess,
|
|
||||||
}
|
|
||||||
resourceJson, err := json.Marshal(resource)
|
|
||||||
if err != nil {
|
|
||||||
return userAccess, err
|
|
||||||
}
|
|
||||||
url := fmt.Sprintf("%s/resources", configs.BUGOUT_AUTH_URL)
|
|
||||||
req, err := http.NewRequest("POST", url, bytes.NewBuffer(resourceJson))
|
|
||||||
if err != nil {
|
|
||||||
return userAccess, err
|
|
||||||
}
|
|
||||||
req.Header = http.Header{
|
|
||||||
"Authorization": []string{fmt.Sprintf("Bearer %s", token)},
|
|
||||||
"Content-Type": []string{"application/json"},
|
|
||||||
}
|
|
||||||
resp, err := bc.Client.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
return userAccess, err
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
|
|
||||||
// Parse response
|
|
||||||
body, err := ioutil.ReadAll(resp.Body)
|
|
||||||
if err != nil {
|
|
||||||
return userAccess, err
|
|
||||||
}
|
|
||||||
var resourceResponse BugoutResourceResponse
|
|
||||||
err = json.Unmarshal(body, &resourceResponse)
|
|
||||||
if err != nil {
|
|
||||||
return userAccess, err
|
|
||||||
}
|
|
||||||
|
|
||||||
userAccess = resourceResponse.ResourceData
|
|
||||||
|
|
||||||
return userAccess, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get Bugout resource
|
|
||||||
func (bc *BugoutClient) GetResources(token, userID, accessID string) (BugoutResourcesResponse, error) {
|
|
||||||
var resourcesResponse BugoutResourcesResponse
|
|
||||||
|
|
||||||
url := fmt.Sprintf("%s/resources?application_id=%s", configs.BUGOUT_AUTH_URL, configs.NB_APPLICATION_ID)
|
|
||||||
if userID != "" {
|
|
||||||
url += fmt.Sprintf("&user_id=%s", userID)
|
|
||||||
}
|
|
||||||
if accessID != "" {
|
|
||||||
url += fmt.Sprintf("&access_id=%s", accessID)
|
|
||||||
}
|
|
||||||
req, err := http.NewRequest("GET", url, nil)
|
|
||||||
if err != nil {
|
|
||||||
return resourcesResponse, err
|
|
||||||
}
|
|
||||||
req.Header = http.Header{
|
|
||||||
"Authorization": []string{fmt.Sprintf("Bearer %s", token)},
|
|
||||||
}
|
|
||||||
resp, err := bc.Client.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
return resourcesResponse, err
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
|
|
||||||
// Parse response
|
|
||||||
body, err := ioutil.ReadAll(resp.Body)
|
|
||||||
if err != nil {
|
|
||||||
return resourcesResponse, err
|
|
||||||
}
|
|
||||||
err = json.Unmarshal(body, &resourcesResponse)
|
|
||||||
if err != nil {
|
|
||||||
return resourcesResponse, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return resourcesResponse, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (bc *BugoutClient) DeleteResource(token, resourceID string) (BugoutResourceResponse, error) {
|
|
||||||
var resourceResponse BugoutResourceResponse
|
|
||||||
|
|
||||||
url := fmt.Sprintf("%s/resources/%s", configs.BUGOUT_AUTH_URL, resourceID)
|
|
||||||
req, err := http.NewRequest("DELETE", url, nil)
|
|
||||||
if err != nil {
|
|
||||||
return resourceResponse, err
|
|
||||||
}
|
|
||||||
req.Header = http.Header{
|
|
||||||
"Authorization": []string{fmt.Sprintf("Bearer %s", token)},
|
|
||||||
}
|
|
||||||
resp, err := bc.Client.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
return resourceResponse, err
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
|
|
||||||
// Parse response
|
|
||||||
body, err := ioutil.ReadAll(resp.Body)
|
|
||||||
if err != nil {
|
|
||||||
return resourceResponse, err
|
|
||||||
}
|
|
||||||
err = json.Unmarshal(body, &resourceResponse)
|
|
||||||
if err != nil {
|
|
||||||
return resourceResponse, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return resourceResponse, nil
|
|
||||||
}
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
bugout "github.com/bugout-dev/bugout-go/pkg"
|
||||||
"github.com/bugout-dev/moonstream/nodes/node_balancer/configs"
|
"github.com/bugout-dev/moonstream/nodes/node_balancer/configs"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
|
@ -13,6 +14,8 @@ import (
|
||||||
|
|
||||||
var (
|
var (
|
||||||
stateCLI StateCLI
|
stateCLI StateCLI
|
||||||
|
|
||||||
|
bugoutClient bugout.BugoutClient
|
||||||
)
|
)
|
||||||
|
|
||||||
// Command Line Interface state
|
// Command Line Interface state
|
||||||
|
@ -45,6 +48,21 @@ type StateCLI struct {
|
||||||
offsetFlag int
|
offsetFlag int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PingResponse struct {
|
||||||
|
Status string `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type UserAccess struct {
|
||||||
|
UserID string `json:"user_id"`
|
||||||
|
AccessID string `json:"access_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
BlockchainAccess bool `json:"blockchain_access"`
|
||||||
|
ExtendedMethods bool `json:"extended_methods"`
|
||||||
|
|
||||||
|
dataSource string
|
||||||
|
}
|
||||||
|
|
||||||
func (s *StateCLI) usage() {
|
func (s *StateCLI) usage() {
|
||||||
fmt.Printf(`usage: nodebalancer [-h] {%[1]s,%[2]s,%[3]s,%[4]s,%[5]s} ...
|
fmt.Printf(`usage: nodebalancer [-h] {%[1]s,%[2]s,%[3]s,%[4]s,%[5]s} ...
|
||||||
|
|
||||||
|
@ -174,23 +192,45 @@ func CLI() {
|
||||||
BlockchainAccess: stateCLI.blockchainAccessFlag,
|
BlockchainAccess: stateCLI.blockchainAccessFlag,
|
||||||
ExtendedMethods: stateCLI.extendedMethodsFlag,
|
ExtendedMethods: stateCLI.extendedMethodsFlag,
|
||||||
}
|
}
|
||||||
userAccess, err := bugoutClient.AddUserAccess(configs.NB_CONTROLLER_TOKEN, proposedUserAccess)
|
_, err := bugoutClient.Brood.FindUser(
|
||||||
|
configs.NB_CONTROLLER_TOKEN,
|
||||||
|
map[string]string{
|
||||||
|
"user_id": proposedUserAccess.UserID,
|
||||||
|
"application_id": configs.NB_APPLICATION_ID,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("User does not exists %v\n", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
resource, err := bugoutClient.Brood.CreateResource(configs.NB_CONTROLLER_TOKEN, configs.NB_APPLICATION_ID, proposedUserAccess)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Unable to create user access %v\n", err)
|
fmt.Printf("Unable to create user access %v\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
userAccessJson, err := json.Marshal(userAccess)
|
resource_data, err := json.Marshal(resource.ResourceData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Unable to marshal user access struct %v\n", err)
|
fmt.Printf("Unable to encode resource %s data interface to json %v", resource.Id, err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
fmt.Println(string(userAccessJson))
|
fmt.Println(string(resource_data))
|
||||||
|
|
||||||
case "delete-access":
|
case "delete-access":
|
||||||
stateCLI.deleteAccessCmd.Parse(os.Args[2:])
|
stateCLI.deleteAccessCmd.Parse(os.Args[2:])
|
||||||
stateCLI.checkRequirements()
|
stateCLI.checkRequirements()
|
||||||
|
|
||||||
resources, err := bugoutClient.GetResources(configs.NB_CONTROLLER_TOKEN, stateCLI.userIDFlag, stateCLI.accessIDFlag)
|
queryParameters := make(map[string]string)
|
||||||
|
if stateCLI.userIDFlag != "" {
|
||||||
|
queryParameters["user_id"] = stateCLI.userIDFlag
|
||||||
|
}
|
||||||
|
if stateCLI.accessIDFlag != "" {
|
||||||
|
queryParameters["access_id"] = stateCLI.accessIDFlag
|
||||||
|
}
|
||||||
|
resources, err := bugoutClient.Brood.GetResources(
|
||||||
|
configs.NB_CONTROLLER_TOKEN,
|
||||||
|
configs.NB_APPLICATION_ID,
|
||||||
|
queryParameters,
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Unable to get Bugout resources %v\n", err)
|
fmt.Printf("Unable to get Bugout resources %v\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
@ -198,12 +238,23 @@ func CLI() {
|
||||||
|
|
||||||
var userAccesses []UserAccess
|
var userAccesses []UserAccess
|
||||||
for _, resource := range resources.Resources {
|
for _, resource := range resources.Resources {
|
||||||
deletedResource, err := bugoutClient.DeleteResource(configs.NB_CONTROLLER_TOKEN, resource.ID)
|
deletedResource, err := bugoutClient.Brood.DeleteResource(configs.NB_CONTROLLER_TOKEN, resource.Id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Unable to delete resource with id %s %v\n", resource.ID, err)
|
fmt.Printf("Unable to delete resource %s %v\n", resource.Id, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
userAccesses = append(userAccesses, deletedResource.ResourceData)
|
resource_data, err := json.Marshal(deletedResource.ResourceData)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Unable to encode resource %s data interface to json %v", resource.Id, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
var userAccess UserAccess
|
||||||
|
err = json.Unmarshal(resource_data, &userAccess)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Unable to decode resource %s data json to structure %v", resource.Id, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
userAccesses = append(userAccesses, userAccess)
|
||||||
}
|
}
|
||||||
|
|
||||||
userAccessesJson, err := json.Marshal(userAccesses)
|
userAccessesJson, err := json.Marshal(userAccesses)
|
||||||
|
@ -223,7 +274,18 @@ func CLI() {
|
||||||
stateCLI.usersCmd.Parse(os.Args[2:])
|
stateCLI.usersCmd.Parse(os.Args[2:])
|
||||||
stateCLI.checkRequirements()
|
stateCLI.checkRequirements()
|
||||||
|
|
||||||
resources, err := bugoutClient.GetResources(configs.NB_CONTROLLER_TOKEN, stateCLI.userIDFlag, stateCLI.accessIDFlag)
|
var queryParameters map[string]string
|
||||||
|
if stateCLI.userIDFlag != "" {
|
||||||
|
queryParameters["user_id"] = stateCLI.userIDFlag
|
||||||
|
}
|
||||||
|
if stateCLI.accessIDFlag != "" {
|
||||||
|
queryParameters["access_id"] = stateCLI.accessIDFlag
|
||||||
|
}
|
||||||
|
resources, err := bugoutClient.Brood.GetResources(
|
||||||
|
configs.NB_CONTROLLER_TOKEN,
|
||||||
|
configs.NB_APPLICATION_ID,
|
||||||
|
queryParameters,
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Unable to get Bugout resources %v\n", err)
|
fmt.Printf("Unable to get Bugout resources %v\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
@ -240,8 +302,19 @@ func CLI() {
|
||||||
limit = len(resources.Resources[offset:]) + offset
|
limit = len(resources.Resources[offset:]) + offset
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, resourceData := range resources.Resources[offset:limit] {
|
for _, resource := range resources.Resources[offset:limit] {
|
||||||
userAccesses = append(userAccesses, resourceData.ResourceData)
|
resource_data, err := json.Marshal(resource.ResourceData)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Unable to encode resource %s data interface to json %v", resource.Id, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
var userAccess UserAccess
|
||||||
|
err = json.Unmarshal(resource_data, &userAccess)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Unable to decode resource %s data json to structure %v", resource.Id, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
userAccesses = append(userAccesses, userAccess)
|
||||||
}
|
}
|
||||||
userAccessesJson, err := json.Marshal(userAccesses)
|
userAccessesJson, err := json.Marshal(userAccesses)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -265,5 +338,11 @@ func CLI() {
|
||||||
func init() {
|
func init() {
|
||||||
configs.VerifyEnvironments()
|
configs.VerifyEnvironments()
|
||||||
|
|
||||||
InitBugoutClient()
|
// Init bugout client
|
||||||
|
bc, err := bugout.ClientFromEnv()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Unable to initialize bugout client %v", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
bugoutClient = bc
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,7 +139,11 @@ func accessMiddleware(next http.Handler) http.Handler {
|
||||||
currentUserAccess = controllerUserAccess
|
currentUserAccess = controllerUserAccess
|
||||||
currentUserAccess.dataSource = dataSource
|
currentUserAccess.dataSource = dataSource
|
||||||
} else {
|
} else {
|
||||||
resources, err := bugoutClient.GetResources(configs.NB_CONTROLLER_TOKEN, "", accessID)
|
resources, err := bugoutClient.Brood.GetResources(
|
||||||
|
configs.NB_CONTROLLER_TOKEN,
|
||||||
|
configs.NB_APPLICATION_ID,
|
||||||
|
map[string]string{"access_id": accessID},
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, "Unable to get user with provided access identifier", http.StatusForbidden)
|
http.Error(w, "Unable to get user with provided access identifier", http.StatusForbidden)
|
||||||
return
|
return
|
||||||
|
@ -148,7 +152,17 @@ func accessMiddleware(next http.Handler) http.Handler {
|
||||||
http.Error(w, "User with provided access identifier not found", http.StatusForbidden)
|
http.Error(w, "User with provided access identifier not found", http.StatusForbidden)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
userAccess := resources.Resources[0].ResourceData
|
resource_data, err := json.Marshal(resources.Resources[0].ResourceData)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, "Unable to encode resource data interface to json", http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var userAccess UserAccess
|
||||||
|
err = json.Unmarshal(resource_data, &userAccess)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, "Unable to decode resource data json to structure", http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
currentUserAccess = UserAccess{
|
currentUserAccess = UserAccess{
|
||||||
UserID: userAccess.UserID,
|
UserID: userAccess.UserID,
|
||||||
AccessID: userAccess.AccessID,
|
AccessID: userAccess.AccessID,
|
||||||
|
|
|
@ -5,6 +5,7 @@ package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -111,11 +112,27 @@ func Server() {
|
||||||
// Record system information
|
// Record system information
|
||||||
reporter.Publish(humbug.SystemReport())
|
reporter.Publish(humbug.SystemReport())
|
||||||
|
|
||||||
resources, err := bugoutClient.GetResources(configs.NB_CONTROLLER_TOKEN, "", configs.NB_CONTROLLER_ACCESS_ID)
|
// TODO(kompotkot): Remove, make it work without brood for internal crawlers
|
||||||
|
resources, err := bugoutClient.Brood.GetResources(
|
||||||
|
configs.NB_CONTROLLER_TOKEN,
|
||||||
|
configs.NB_APPLICATION_ID,
|
||||||
|
map[string]string{"access_id": configs.NB_CONTROLLER_ACCESS_ID},
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Unable to access Bugout authentication server %v", err)
|
fmt.Printf("Unable to get user with provided access identifier %v", err)
|
||||||
|
}
|
||||||
|
if len(resources.Resources) == 0 {
|
||||||
|
fmt.Printf("User with provided access identifier not found %v", err)
|
||||||
|
}
|
||||||
|
resource_data, err := json.Marshal(resources.Resources[0].ResourceData)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Unable to encode resource data interface to json %v", err)
|
||||||
|
}
|
||||||
|
var userAccess UserAccess
|
||||||
|
err = json.Unmarshal(resource_data, &userAccess)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Unable to decode resource data json to structure %v", err)
|
||||||
}
|
}
|
||||||
userAccess := resources.Resources[0].ResourceData
|
|
||||||
controllerUserAccess = UserAccess{
|
controllerUserAccess = UserAccess{
|
||||||
UserID: userAccess.UserID,
|
UserID: userAccess.UserID,
|
||||||
AccessID: userAccess.AccessID,
|
AccessID: userAccess.AccessID,
|
||||||
|
|
Ładowanie…
Reference in New Issue