Skip to content

Commit 7341c8f

Browse files
authored
Update github example (#125)
1 parent f277183 commit 7341c8f

File tree

2 files changed

+46
-31
lines changed

2 files changed

+46
-31
lines changed

examples/github-repo/cmd/resource/handler.go renamed to examples/github-repo/cmd/resource/resource.go

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import (
66
"log"
77
"strings"
88

9-
"github.com/aws-cloudformation/cloudformation-cli-go-plugin/cfn/encoding"
109
"github.com/aws-cloudformation/cloudformation-cli-go-plugin/cfn/handler"
10+
"github.com/aws/aws-sdk-go/aws"
1111
"github.com/google/go-github/github"
1212
"golang.org/x/oauth2"
1313
)
@@ -28,18 +28,18 @@ func parseURL(url string) (string, string) {
2828
return parts[len(parts)-2], parts[len(parts)-1]
2929
}
3030

31-
// Create a repo
31+
// Create handles the Create event from the Cloudformation service.
3232
func Create(req handler.Request, prevModel *Model, currentModel *Model) (handler.ProgressEvent, error) {
33-
client := makeGitHubClient(*currentModel.OauthToken.Value())
33+
client := makeGitHubClient(*currentModel.OauthToken)
3434

35-
log.Printf("Attempting to create repository: %s/%s", *currentModel.Owner.Value(), *currentModel.Name.Value())
35+
log.Printf("Attempting to create repository: %s/%s", *currentModel.Owner, *currentModel.Name)
3636

3737
repo, resp, err := client.Repositories.Create(context.Background(), "", &github.Repository{
38-
Name: currentModel.Name.Value(),
39-
Homepage: currentModel.Homepage.Value(),
40-
Description: currentModel.Description.Value(),
38+
Name: currentModel.Name,
39+
Homepage: currentModel.Homepage,
40+
Description: currentModel.Description,
4141
Owner: &github.User{
42-
Name: currentModel.Owner.Value(),
42+
Name: currentModel.Owner,
4343
},
4444
})
4545

@@ -52,7 +52,7 @@ func Create(req handler.Request, prevModel *Model, currentModel *Model) (handler
5252
return handler.ProgressEvent{}, fmt.Errorf("Status Code: %d, Status: %v", resp.StatusCode, resp.Status)
5353
}
5454

55-
currentModel.URL = encoding.NewString(repo.GetURL())
55+
currentModel.URL = aws.String(repo.GetURL())
5656

5757
return handler.ProgressEvent{
5858
OperationStatus: handler.Success,
@@ -61,12 +61,12 @@ func Create(req handler.Request, prevModel *Model, currentModel *Model) (handler
6161
}, nil
6262
}
6363

64-
// Read a repo status
64+
// Read handles the Read event from the Cloudformation service.
6565
func Read(req handler.Request, prevModel *Model, currentModel *Model) (handler.ProgressEvent, error) {
66-
owner, repoName := parseURL(*currentModel.URL.Value())
66+
owner, repoName := parseURL(*currentModel.URL)
6767

68-
log.Printf("Looking for repository: %s/%s", *currentModel.Owner.Value(), *currentModel.Name.Value())
69-
client := makeGitHubClient(*currentModel.OauthToken.Value())
68+
log.Printf("Looking for repository: %s/%s", *currentModel.Owner, *currentModel.Name)
69+
client := makeGitHubClient(*currentModel.OauthToken)
7070
repo, resp, err := client.Repositories.Get(context.Background(), owner, repoName)
7171
if err != nil {
7272
return handler.ProgressEvent{}, err
@@ -77,10 +77,10 @@ func Read(req handler.Request, prevModel *Model, currentModel *Model) (handler.P
7777
return handler.ProgressEvent{}, fmt.Errorf("Status Code: %d, Status: %v", resp.StatusCode, resp.Status)
7878
}
7979

80-
currentModel.Name = encoding.NewString(*repo.Name)
81-
currentModel.Owner = encoding.NewString(*repo.Owner.Name)
82-
currentModel.Description = encoding.NewString(*repo.Description)
83-
currentModel.Homepage = encoding.NewString(*repo.Homepage)
80+
currentModel.Name = aws.String(*repo.Name)
81+
currentModel.Owner = aws.String(*repo.Owner.Name)
82+
currentModel.Description = aws.String(*repo.Description)
83+
currentModel.Homepage = aws.String(*repo.Homepage)
8484

8585
return handler.ProgressEvent{
8686
OperationStatus: handler.Success,
@@ -89,16 +89,16 @@ func Read(req handler.Request, prevModel *Model, currentModel *Model) (handler.P
8989
}, nil
9090
}
9191

92-
// Update a repo
92+
// Update handles the Update event from the Cloudformation service.
9393
func Update(req handler.Request, prevModel *Model, currentModel *Model) (handler.ProgressEvent, error) {
94-
owner, repoName := parseURL(*currentModel.URL.Value())
94+
owner, repoName := parseURL(*currentModel.URL)
9595

96-
log.Printf("Looking for repository: %s/%s", *currentModel.Owner.Value(), *currentModel.Name.Value())
97-
client := makeGitHubClient(*currentModel.OauthToken.Value())
96+
log.Printf("Looking for repository: %s/%s", *currentModel.Owner, *currentModel.Name)
97+
client := makeGitHubClient(*currentModel.OauthToken)
9898

9999
_, resp, err := client.Repositories.Edit(context.Background(), owner, repoName, &github.Repository{
100-
Homepage: currentModel.Homepage.Value(),
101-
Description: currentModel.Description.Value(),
100+
Homepage: currentModel.Homepage,
101+
Description: currentModel.Description,
102102
})
103103
if err != nil {
104104
return handler.ProgressEvent{}, err
@@ -116,12 +116,12 @@ func Update(req handler.Request, prevModel *Model, currentModel *Model) (handler
116116
}, nil
117117
}
118118

119-
// Delete a repo
119+
// Delete handles the Delete event from the Cloudformation service.
120120
func Delete(req handler.Request, prevModel *Model, currentModel *Model) (handler.ProgressEvent, error) {
121-
owner, repoName := parseURL(*currentModel.URL.Value())
121+
owner, repoName := parseURL(*currentModel.URL)
122122

123-
log.Printf("Looking for repository: %s/%s", *currentModel.Owner.Value(), *currentModel.Name.Value())
124-
client := makeGitHubClient(*currentModel.OauthToken.Value())
123+
log.Printf("Looking for repository: %s/%s", *currentModel.Owner, *currentModel.Name)
124+
client := makeGitHubClient(*currentModel.OauthToken)
125125

126126
resp, err := client.Repositories.Delete(context.Background(), owner, repoName)
127127
if err != nil {
@@ -140,10 +140,8 @@ func Delete(req handler.Request, prevModel *Model, currentModel *Model) (handler
140140
}, nil
141141
}
142142

143-
// List ...
143+
// List handles the List event from the Cloudformation service.
144144
func List(req handler.Request, prevModel *Model, currentModel *Model) (handler.ProgressEvent, error) {
145-
// no-op
146-
147145
return handler.ProgressEvent{
148146
OperationStatus: handler.Success,
149147
Message: "List Complete",

examples/github-repo/example-github-repo.json

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,22 @@
4545
],
4646
"primaryIdentifier": [
4747
"/properties/URL"
48-
]
48+
],
49+
"handlers": {
50+
"create": {
51+
"permissions": []
52+
},
53+
"read": {
54+
"permissions": []
55+
},
56+
"update": {
57+
"permissions": []
58+
},
59+
"delete": {
60+
"permissions": []
61+
},
62+
"list": {
63+
"permissions": []
64+
}
65+
}
4966
}

0 commit comments

Comments
 (0)