Skip to content

Commit 27c2303

Browse files
author
Andrew Nikitin
authored
feat: Add implementation for all DID URL dereferencing parameters [DEV-2351] (#132)
* Add handling for only did queries and small refactoring * Makes linter happy * Add unit tests * Add basic implementation for resource queries * Small refactoring * Add resourceVersion and handler for it * Makes Linter happy * Makes linter happy * Small refactoring * Fix unit tests for queries * MAkes linter happy and fix integration tests * Add more integration tests for queries * Fixed: - added version support - changed logic for allowing versionId and versionTime in the same query - added more integration tests * Changed did doc implementation due to the latest changes in doc * Makes linter happy * Small validation and refactorings * Add checksum handling and small improvements * Fix RequestURI parameter displaying * Makes linter happy * Makes linter happy * Uncomment positive integration tests * Makes linter happy * fix swagger build * Change expected diddoc jsons for integration tests * Fix PR review comments * Makes linter happy * Change error code * Fix unit tests
1 parent 90f42c3 commit 27c2303

File tree

93 files changed

+3144
-386
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+3144
-386
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ clean:
155155

156156
swagger:
157157
@echo "Generating Swagger files..."
158-
@go install github.com/swaggo/swag/cmd/swag@latest
158+
@go install github.com/swaggo/swag/cmd/swag@v1.8.11
159159
@swag fmt
160160
@swag init -g ./main.go
161161
.PHONY: swagger

docs/docs.go

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/swagger.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -621,6 +621,10 @@
621621
"resourceURI": {
622622
"type": "string",
623623
"example": "did:cheqd:testnet:55dbc8bf-fba3-4117-855c-1e0dc1d3bb47/resources/398cee0a-efac-4643-9f4c-74c48c72a14b"
624+
},
625+
"resourceVersion": {
626+
"type": "string",
627+
"example": "1"
624628
}
625629
}
626630
},

docs/swagger.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ definitions:
5151
resourceURI:
5252
example: did:cheqd:testnet:55dbc8bf-fba3-4117-855c-1e0dc1d3bb47/resources/398cee0a-efac-4643-9f4c-74c48c72a14b
5353
type: string
54+
resourceVersion:
55+
example: "1"
56+
type: string
5457
type: object
5558
types.DereferencingMetadata:
5659
properties:

main.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ import (
1818

1919
func serve() {
2020
// Get Config
21-
config := utils.GetConfig()
21+
config := types.GetConfig()
2222
// Setup logger
23-
utils.SetupLogger(config)
23+
types.SetupLogger(config)
2424
// Services
2525
ledgerService := services.NewLedgerService()
2626
didService := services.NewDIDDocService(types.DID_METHOD, ledgerService)
@@ -36,7 +36,7 @@ func serve() {
3636

3737
// Echo instance
3838
e := echo.New()
39-
e.HTTPErrorHandler = utils.CustomHTTPErrorHandler
39+
e.HTTPErrorHandler = services.CustomHTTPErrorHandler
4040

4141
// Middleware
4242
e.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
@@ -86,7 +86,7 @@ func serve() {
8686
// @schemes https http
8787

8888
func main() {
89-
err := utils.PrintConfig()
89+
err := types.PrintConfig()
9090
if err != nil {
9191
panic(err)
9292
}

services/diddoc/diddoc_all_version_metadata.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,25 @@ func (dd *DIDDocAllVersionMetadataRequestService) SpecificPrepare(c services.Res
2222
}
2323

2424
func (dd DIDDocAllVersionMetadataRequestService) Redirect(c services.ResolverContext) error {
25-
migratedDid := migrations.MigrateDID(dd.Did)
25+
migratedDid := migrations.MigrateDID(dd.GetDid())
2626

2727
path := types.RESOLVER_PATH + migratedDid + types.DID_VERSIONS_PATH
2828
return c.Redirect(http.StatusMovedPermanently, path)
2929
}
3030

3131
func (dd *DIDDocAllVersionMetadataRequestService) SpecificValidation(c services.ResolverContext) error {
32+
// We not allow query here
33+
if len(dd.Queries) != 0 {
34+
return types.NewInvalidDidUrlError(dd.GetDid(), dd.RequestedContentType, nil, dd.IsDereferencing)
35+
}
3236
return nil
3337
}
3438

3539
func (dd *DIDDocAllVersionMetadataRequestService) Query(c services.ResolverContext) error {
36-
result, err := c.DidDocService.GetAllDidDocVersionsMetadata(dd.Did, dd.RequestedContentType)
40+
result, err := c.DidDocService.GetAllDidDocVersionsMetadata(dd.GetDid(), dd.GetContentType())
3741
if err != nil {
3842
err.IsDereferencing = dd.IsDereferencing
3943
return err
4044
}
41-
dd.Result = result
42-
return nil
45+
return dd.SetResponse(result)
4346
}

services/diddoc/diddoc_fragment.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"strings"
55

66
"github.com/cheqd/did-resolver/services"
7+
"github.com/cheqd/did-resolver/types"
78
)
89

910
type FragmentDIDDocRequestService struct {
@@ -16,6 +17,10 @@ func (dd *FragmentDIDDocRequestService) Setup(c services.ResolverContext) error
1617
}
1718

1819
func (dd *FragmentDIDDocRequestService) SpecificValidation(c services.ResolverContext) error {
20+
// We not allow query here
21+
if len(dd.Queries) != 0 {
22+
return types.NewInvalidDidUrlError(dd.GetDid(), dd.RequestedContentType, nil, dd.IsDereferencing)
23+
}
1924
return nil
2025
}
2126

@@ -29,11 +34,10 @@ func (dd *FragmentDIDDocRequestService) SpecificPrepare(c services.ResolverConte
2934
}
3035

3136
func (dd *FragmentDIDDocRequestService) Query(c services.ResolverContext) error {
32-
result, err := c.DidDocService.DereferenceSecondary(dd.Did, dd.Version, dd.Fragment, dd.RequestedContentType)
37+
result, err := c.DidDocService.DereferenceSecondary(dd.GetDid(), dd.Version, dd.Fragment, dd.GetContentType())
3338
if err != nil {
3439
err.IsDereferencing = dd.IsDereferencing
3540
return err
3641
}
37-
dd.Result = result
38-
return nil
42+
return dd.SetResponse(result)
3943
}

0 commit comments

Comments
 (0)