Skip to content

Commit 5bcd581

Browse files
authored
Merge pull request #20 from bugout-dev/get-resource-by-id
Get single resource
2 parents f855e27 + 8332d94 commit 5bcd581

File tree

5 files changed

+62
-5
lines changed

5 files changed

+62
-5
lines changed

cmd/bugout/brood/resources.go

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,12 @@ func GenerateResourcesCommand() *cobra.Command {
2020
resourcesCreateCmd := GenerateResourceCreateCommand()
2121
resourcesUpdateCmd := GenerateResourceUpdateCommand()
2222
resourcesDeleteCmd := GenerateResourceDeleteCommand()
23+
resourceGetCmd := GenerateResourceGetCommand()
2324
resourcesGetCmd := GenerateResourcesGetCommand()
2425

2526
resourceHoldersCmd := GenerateResourceHoldersCommand()
2627

27-
resourcesCmd.AddCommand(resourcesCreateCmd, resourcesUpdateCmd, resourcesDeleteCmd, resourcesGetCmd, resourceHoldersCmd)
28+
resourcesCmd.AddCommand(resourcesCreateCmd, resourcesUpdateCmd, resourcesDeleteCmd, resourceGetCmd, resourcesGetCmd, resourceHoldersCmd)
2829

2930
return resourcesCmd
3031
}
@@ -151,12 +152,40 @@ func GenerateResourceDeleteCommand() *cobra.Command {
151152
return resourceDeleteCmd
152153
}
153154

155+
func GenerateResourceGetCommand() *cobra.Command {
156+
var token, resourceId string
157+
resourcesGetCmd := &cobra.Command{
158+
Use: "get",
159+
Short: "Get resource of application",
160+
PreRunE: cmdutils.TokenArgPopulator,
161+
RunE: func(cmd *cobra.Command, args []string) error {
162+
client, clientErr := bugout.ClientFromEnv()
163+
if clientErr != nil {
164+
return clientErr
165+
}
166+
167+
resources, err := client.Brood.GetResource(token, resourceId)
168+
if err != nil {
169+
return nil
170+
}
171+
172+
encodeErr := json.NewEncoder(cmd.OutOrStdout()).Encode(&resources)
173+
return encodeErr
174+
},
175+
}
176+
177+
resourcesGetCmd.Flags().StringVarP(&token, "token", "t", "", "Bugout access token to use for the request")
178+
resourcesGetCmd.Flags().StringVarP(&resourceId, "resource_id", "r", "", "Resource ID")
179+
180+
return resourcesGetCmd
181+
}
182+
154183
func GenerateResourcesGetCommand() *cobra.Command {
155184
var token, applicationId string
156185
var queryParams map[string]string
157186
resourcesGetCmd := &cobra.Command{
158-
Use: "get",
159-
Short: "Get resources of application",
187+
Use: "list",
188+
Short: "List resources of application",
160189
PreRunE: cmdutils.TokenArgPopulator,
161190
RunE: func(cmd *cobra.Command, args []string) error {
162191
client, clientErr := bugout.ClientFromEnv()

pkg/brood/client.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ type BroodCaller interface {
3434
RemoveUserFromGroup(token, groupID, username string) (UserGroup, error)
3535
CreateResource(token, applicationId string, resourceData interface{}) (Resource, error)
3636
UpdateResource(token, resourceId string, update interface{}, dropKeys []string) (Resource, error)
37+
GetResource(token, resourceId string) (Resource, error)
3738
GetResources(token, applicationId string, queryParameters map[string]string) (Resources, error)
3839
DeleteResource(token, resourceId string) (Resource, error)
3940
GetResourceHolders(token, resourceId string) (ResourceHolders, error)

pkg/brood/resources.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,31 @@ func (client BroodClient) UpdateResource(token, resourceId string, update interf
8484
return resource, decodeErr
8585
}
8686

87+
func (client BroodClient) GetResource(token, resourceId string) (Resource, error) {
88+
resourcesRoute := fmt.Sprintf("%s/%s", client.Routes.Resources, resourceId)
89+
request, requestErr := http.NewRequest("GET", resourcesRoute, nil)
90+
if requestErr != nil {
91+
return Resource{}, requestErr
92+
}
93+
request.Header.Add("Authorization", fmt.Sprintf("Bearer %s", token))
94+
request.Header.Add("Accept", "application/json")
95+
96+
response, responseErr := client.HTTPClient.Do(request)
97+
if responseErr != nil {
98+
return Resource{}, responseErr
99+
}
100+
defer response.Body.Close()
101+
102+
statusErr := utils.HTTPStatusCheck(response)
103+
if statusErr != nil {
104+
return Resource{}, statusErr
105+
}
106+
107+
var resource Resource
108+
decodeErr := json.NewDecoder(response.Body).Decode(&resource)
109+
return resource, decodeErr
110+
}
111+
87112
func (client BroodClient) GetResources(token, applicationId string, queryParameters map[string]string) (Resources, error) {
88113
resourcesRoute := client.Routes.Resources
89114
request, requestErr := http.NewRequest("GET", resourcesRoute, nil)

pkg/brood/user.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,9 @@ func (client BroodClient) ListTokens(token string) (UserTokensList, error) {
142142
return result, decodeErr
143143
}
144144

145-
/* Find Brood user if exists
145+
/*
146+
Find Brood user if exists
147+
146148
query parameters:
147149
- **user_id** (UUID): Brood user ID
148150
- **username** (string): User name

pkg/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
package bugout
22

3-
const Version string = "0.4.3"
3+
const Version string = "0.4.4"

0 commit comments

Comments
 (0)