Skip to content

Commit 7ac13a4

Browse files
Add CreatedOnTime and UpdatedOnTime To Repository (ktrysmt#236)
* feat(repository): Add CreatedOnTime and UpdatedOnTime fiields with *time.time types * docs: Remove commented code --------- Co-authored-by: Thomas O'Neill <[email protected]>
1 parent 6432927 commit 7ac13a4

File tree

2 files changed

+23
-11
lines changed

2 files changed

+23
-11
lines changed

repositories.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ package bitbucket
33
import (
44
"errors"
55
"fmt"
6-
7-
"github.com/mitchellh/mapstructure"
86
)
97

108
//"github.com/k0kubun/pp"
@@ -70,10 +68,9 @@ func decodeRepositories(reposResponse interface{}) (*RepositoriesRes, error) {
7068
repoArray := reposResponseMap["values"].([]interface{})
7169
var repos []Repository
7270
for _, repoEntry := range repoArray {
73-
var repo Repository
74-
err := mapstructure.Decode(repoEntry, &repo)
71+
repo, err := decodeRepository(repoEntry)
7572
if err == nil {
76-
repos = append(repos, repo)
73+
repos = append(repos, *repo)
7774
}
7875
}
7976

repository.go

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"path"
1010
"strconv"
1111
"strings"
12+
"time"
1213

1314
"github.com/mitchellh/mapstructure"
1415
)
@@ -29,11 +30,15 @@ type Repository struct {
2930
Has_wiki bool
3031
Mainbranch RepositoryBranch
3132
Type string
32-
CreatedOn string `mapstructure:"created_on"`
33-
UpdatedOn string `mapstructure:"updated_on"`
34-
Owner map[string]interface{}
35-
Links map[string]interface{}
36-
Parent *Repository
33+
// Deprecated: CreatedOn is deprecated use CreatedOnTime
34+
CreatedOn string `mapstructure:"created_on"`
35+
// Deprecated: UpdatedOn is deprecated use UpdatedOnTime
36+
UpdatedOn string `mapstructure:"updated_on"`
37+
Owner map[string]interface{}
38+
Links map[string]interface{}
39+
Parent *Repository
40+
CreatedOnTime *time.Time `mapstructure:"created_on"`
41+
UpdatedOnTime *time.Time `mapstructure:"updated_on"`
3742
}
3843

3944
type RepositoryFile struct {
@@ -249,6 +254,8 @@ type UserPermissions struct {
249254
UserPermissions []UserPermission
250255
}
251256

257+
var stringToTimeHookFunc = mapstructure.StringToTimeHookFunc("2006-01-02T15:04:05.000000+00:00")
258+
252259
func (r *Repository) Create(ro *RepositoryOptions) (*Repository, error) {
253260
data, err := r.buildRepositoryBody(ro)
254261
if err != nil {
@@ -1190,7 +1197,15 @@ func decodeRepository(repoResponse interface{}) (*Repository, error) {
11901197
}
11911198

11921199
var repository = new(Repository)
1193-
err := mapstructure.Decode(repoMap, repository)
1200+
decoder, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{
1201+
Metadata: nil,
1202+
Result: repository,
1203+
DecodeHook: stringToTimeHookFunc,
1204+
})
1205+
if err != nil {
1206+
return nil, err
1207+
}
1208+
err = decoder.Decode(repoMap)
11941209
if err != nil {
11951210
return nil, err
11961211
}

0 commit comments

Comments
 (0)