-
Notifications
You must be signed in to change notification settings - Fork 17
/
resolution.go
106 lines (80 loc) · 3.18 KB
/
resolution.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/*
Copyright SecureKey Technologies Inc. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package document
import "github.com/trustbloc/sidetree-core-go/pkg/api/operation"
// ResolutionResult describes resolution result.
type ResolutionResult struct {
Context interface{} `json:"@context"`
Document Document `json:"didDocument"`
DocumentMetadata Metadata `json:"didDocumentMetadata,omitempty"`
}
// Metadata can contains various metadata such as document metadata and method metadata..
type Metadata map[string]interface{}
const (
// UpdateCommitmentProperty is update commitment key.
UpdateCommitmentProperty = "updateCommitment"
// RecoveryCommitmentProperty is recovery commitment key.
RecoveryCommitmentProperty = "recoveryCommitment"
// PublishedProperty is published key.
PublishedProperty = "published"
// DeactivatedProperty is deactivated flag key.
DeactivatedProperty = "deactivated"
// AnchorOriginProperty is anchor origin key.
AnchorOriginProperty = "anchorOrigin"
// CreatedProperty is the time that document was created - anchoring time of first successful create operation.
CreatedProperty = "created"
// UpdatedProperty is the time of last document update - anchoring time of update/recover operations.
UpdatedProperty = "updated"
// VersionIDProperty is version ID key.
VersionIDProperty = "versionId"
// CanonicalIDProperty is canonical ID key.
CanonicalIDProperty = "canonicalId"
// EquivalentIDProperty is equivalent ID array.
EquivalentIDProperty = "equivalentId"
// MethodProperty is used for method metadata within did document metadata.
MethodProperty = "method"
// UnpublishedOperationsProperty holds unpublished did operations.
UnpublishedOperationsProperty = "unpublishedOperations"
// PublishedOperationsProperty holds published did operations.
PublishedOperationsProperty = "publishedOperations"
)
// ResolutionOption is an option for specifying the resolution options for various resolvers.
type ResolutionOption func(opts *ResolutionOptions)
// ResolutionOptions represent resolution options.
type ResolutionOptions struct {
AdditionalOperations []*operation.AnchoredOperation
VersionID string
VersionTime string
}
// WithAdditionalOperations sets the additional operations to be used in a Resolve call.
func WithAdditionalOperations(additionalOperations []*operation.AnchoredOperation) ResolutionOption {
return func(opts *ResolutionOptions) {
if len(additionalOperations) > 0 {
opts.AdditionalOperations = additionalOperations
}
}
}
// WithVersionID sets the version ID to be used in a Resolve call.
func WithVersionID(versionID string) ResolutionOption {
return func(opts *ResolutionOptions) {
opts.VersionID = versionID
}
}
// WithVersionTime sets the version time to be used in a Resolve call.
func WithVersionTime(versionTime string) ResolutionOption {
return func(opts *ResolutionOptions) {
opts.VersionTime = versionTime
}
}
// GetResolutionOptions returns resolution options.
func GetResolutionOptions(opts ...ResolutionOption) (ResolutionOptions, error) {
options := ResolutionOptions{}
for _, option := range opts {
if option != nil {
option(&options)
}
}
return options, nil
}