2024-11-05 17:39:39 +01:00
|
|
|
package parse
|
|
|
|
|
|
|
|
|
|
import (
|
2024-12-02 12:06:06 +01:00
|
|
|
"fmt"
|
2024-11-05 17:39:39 +01:00
|
|
|
"time"
|
|
|
|
|
|
2025-07-31 14:43:42 +02:00
|
|
|
"github.com/MetaMask/go-did-it"
|
|
|
|
|
|
2024-12-02 12:06:06 +01:00
|
|
|
"github.com/ucan-wg/go-ucan/pkg/policy/limits"
|
2024-11-05 17:39:39 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func OptionalDID(s *string) (did.DID, error) {
|
|
|
|
|
if s == nil {
|
2025-07-31 14:43:42 +02:00
|
|
|
return nil, nil
|
2024-11-05 17:39:39 +01:00
|
|
|
}
|
|
|
|
|
return did.Parse(*s)
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-02 12:06:06 +01:00
|
|
|
func OptionalTimestamp(sec *int64) (*time.Time, error) {
|
2024-11-05 17:39:39 +01:00
|
|
|
if sec == nil {
|
2024-12-02 12:06:06 +01:00
|
|
|
return nil, nil
|
2024-11-05 17:39:39 +01:00
|
|
|
}
|
2024-12-02 12:06:06 +01:00
|
|
|
|
|
|
|
|
if *sec > limits.MaxInt53 || *sec < limits.MinInt53 {
|
|
|
|
|
return nil, fmt.Errorf("timestamp value %d exceeds safe integer bounds", *sec)
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-05 17:39:39 +01:00
|
|
|
t := time.Unix(*sec, 0)
|
2024-12-02 12:06:06 +01:00
|
|
|
return &t, nil
|
2024-11-05 17:39:39 +01:00
|
|
|
}
|