added timestamp to push webhooks

pull/46/head
Brad Rydzewski 5 years ago
parent d8fff5ce77
commit 08514fd8b9

@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
### Added
- Improve status display text in new bitbucket pull request screen, from [@bradrydzewski](https://github.com/bradrydzewski). See [#27](https://github.com/drone/go-scm/issues/27).
- Implement timestamp value for GitHub push webhooks, from [@bradrydzewski](https://github.com/bradrydzewski).
### Fixed
- Fix issue with GitHub enterprise deep link including API prefix, from [@bradrydzewski](https://github.com/bradrydzewski).

@ -21,14 +21,14 @@
"Author": {
"Name": "Codertocat",
"Email": "21031067+Codertocat@users.noreply.github.com",
"Date": "0001-01-01T00:00:00Z",
"Date": "2018-06-15T13:01:51-07:00",
"Login": "Codertocat",
"Avatar": ""
},
"Committer": {
"Name": "GitHub",
"Email": "noreply@github.com",
"Date": "0001-01-01T00:00:00Z",
"Date": "2018-06-15T13:01:51-07:00",
"Login": "web-flow",
"Avatar": ""
},

@ -22,14 +22,14 @@
"Author": {
"Name": "Brad Rydzewski",
"Email": "brad.rydzewski@gmail.com",
"Date": "0001-01-01T00:00:00Z",
"Date": "2018-06-19T19:03:12-07:00",
"Login": "bradrydzewski",
"Avatar": ""
},
"Committer": {
"Name": "GitHub",
"Email": "noreply@github.com",
"Date": "0001-01-01T00:00:00Z",
"Date": "2018-06-19T19:03:12-07:00",
"Login": "web-flow",
"Avatar": ""
},

@ -22,14 +22,14 @@
"Author": {
"Name": "Brad Rydzewski",
"Email": "brad.rydzewski@gmail.com",
"Date": "0001-01-01T00:00:00Z",
"Date": "2018-06-19T19:03:12-07:00",
"Login": "bradrydzewski",
"Avatar": ""
},
"Committer": {
"Name": "GitHub",
"Email": "noreply@github.com",
"Date": "0001-01-01T00:00:00Z",
"Date": "2018-06-19T19:03:12-07:00",
"Login": "web-flow",
"Avatar": ""
},

@ -168,12 +168,12 @@ type (
After string `json:"after"`
Compare string `json:"compare"`
Head struct {
ID string `json:"id"`
TreeID string `json:"tree_id"`
Distinct bool `json:"distinct"`
Message string `json:"message"`
Timestamp string `json:"timestamp"`
URL string `json:"url"`
ID string `json:"id"`
TreeID string `json:"tree_id"`
Distinct bool `json:"distinct"`
Message string `json:"message"`
Timestamp null.Time `json:"timestamp"`
URL string `json:"url"`
Author struct {
Name string `json:"name"`
Email string `json:"email"`
@ -189,12 +189,12 @@ type (
Modified []string `json:"modified"`
} `json:"head_commit"`
Commits []struct {
ID string `json:"id"`
TreeID string `json:"tree_id"`
Distinct bool `json:"distinct"`
Message string `json:"message"`
Timestamp string `json:"timestamp"`
URL string `json:"url"`
ID string `json:"id"`
TreeID string `json:"tree_id"`
Distinct bool `json:"distinct"`
Message string `json:"message"`
Timestamp null.Time `json:"timestamp"`
URL string `json:"url"`
Author struct {
Name string `json:"name"`
Email string `json:"email"`
@ -273,13 +273,13 @@ func convertPushHook(src *pushHook) *scm.PushHook {
Login: src.Head.Author.Username,
Email: src.Head.Author.Email,
Name: src.Head.Author.Name,
// TODO (bradrydzewski) set the timestamp
Date: src.Head.Timestamp.ValueOrZero(),
},
Committer: scm.Signature{
Login: src.Head.Committer.Username,
Email: src.Head.Committer.Email,
Name: src.Head.Committer.Name,
// TODO (bradrydzewski) set the timestamp
Date: src.Head.Timestamp.ValueOrZero(),
},
},
Repo: scm.Repository{

@ -1,5 +1,6 @@
// Copyright (c) 2014, Greg Roseberry
// All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package null

@ -1,5 +1,6 @@
// Copyright (c) 2014, Greg Roseberry
// All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package null

@ -1,5 +1,6 @@
// Copyright (c) 2014, Greg Roseberry
// All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package null

@ -0,0 +1,65 @@
// Copyright (c) 2014, Greg Roseberry
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package null
import (
"encoding/json"
"fmt"
"reflect"
"time"
)
// Time is a nullable time.Time.
// JSON marshals to the zero value for time.Time if null.
// Considered to be null to SQL if zero.
type Time struct {
Time time.Time
Valid bool
}
// MarshalJSON implements json.Marshaler.
// It will encode null if this time is null.
func (t Time) MarshalJSON() ([]byte, error) {
if !t.Valid {
return []byte("null"), nil
}
return t.Time.MarshalJSON()
}
// UnmarshalJSON implements json.Unmarshaler.
// It supports string, object (e.g. pq.NullTime and friends)
// and null input.
func (t *Time) UnmarshalJSON(data []byte) error {
var err error
var v interface{}
if err = json.Unmarshal(data, &v); err != nil {
return err
}
switch v.(type) {
case string:
err = t.Time.UnmarshalJSON(data)
case nil:
t.Valid = false
return nil
default:
err = fmt.Errorf("json: cannot unmarshal %v into Go value of type null.Time", reflect.TypeOf(v).Name())
}
t.Valid = err == nil
return err
}
// ValueOrZero returns the inner value if valid, otherwise zero.
func (t Time) ValueOrZero() time.Time {
if !t.Valid {
return time.Time{}
}
return t.Time
}
// IsZero returns true for null or zero Times, for
// potential future omitempty support.
func (t Time) IsZero() bool {
return !t.Valid || t.Time.IsZero()
}
Loading…
Cancel
Save