Skip to content

Commit

Permalink
SI-2526-burn-endpoint-middleware (#288)
Browse files Browse the repository at this point in the history
* token owner middleware

* Update internal/middleware/owner/owner.go

Co-authored-by: Kevin Joiner <[email protected]>

* linter

---------

Co-authored-by: Kevin Joiner <[email protected]>
  • Loading branch information
Allyson-English and KevinJoiner authored Mar 26, 2024
1 parent cfba6a4 commit 2b3484c
Show file tree
Hide file tree
Showing 9 changed files with 453 additions and 251 deletions.
10 changes: 6 additions & 4 deletions cmd/devices-api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,10 +211,6 @@ func startWebAPI(logger zerolog.Logger, settings *config.Settings, pdb db.Store,

vehicleAddr := common.HexToAddress(settings.VehicleNFTAddress)

// vehicle token actions
vPriv.Get("/commands/burn", userDeviceController.GetBurnDevice)
vPriv.Post("/commands/burn", userDeviceController.PostBurnDevice)

// vehicle command privileges
vPriv.Get("/status", privTokenWare.OneOf(vehicleAddr,
[]privileges.Privilege{privileges.VehicleNonLocationData, privileges.VehicleCurrentLocation, privileges.VehicleAllTimeLocation}), nftController.GetVehicleStatus)
Expand Down Expand Up @@ -312,6 +308,12 @@ func startWebAPI(logger zerolog.Logger, settings *config.Settings, pdb db.Store,
udOwner.Post("/integrations/:integrationID", userDeviceController.RegisterDeviceIntegration)
udOwner.Post("/commands/refresh", userDeviceController.RefreshUserDeviceStatus)

// token owner actions
udOwnerByTokenMw := owner.VehicleToken(pdb, &logger)
udOwnerByToken := v1Auth.Group("/user/devices/:tokenID", udOwnerByTokenMw)
udOwnerByToken.Get("/commands/burn", userDeviceController.GetBurnDevice)
udOwnerByToken.Post("/commands/burn", userDeviceController.PostBurnDevice)

if settings.SyntheticDevicesEnabled {
syntheticController := controllers.NewSyntheticDevicesController(settings, pdb.DBS, &logger, ddSvc, usersClient, wallet, registryClient)

Expand Down
178 changes: 89 additions & 89 deletions docs/docs.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Package docs GENERATED BY SWAG; DO NOT EDIT
// This file was generated by swaggo/swag at
// 2024-03-19 12:07:34.37237 -0600 MDT m=+1.886394792
// 2024-03-25 14:37:29.265763 -0600 MDT m=+2.160190626
package docs

import "github.com/swaggo/swag"
Expand Down Expand Up @@ -408,7 +408,7 @@ const docTemplate = `{
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/internal_controllers.DocumentResponse"
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.DocumentResponse"
}
}
}
Expand Down Expand Up @@ -463,7 +463,7 @@ const docTemplate = `{
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/internal_controllers.DocumentResponse"
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.DocumentResponse"
}
}
}
Expand Down Expand Up @@ -499,7 +499,7 @@ const docTemplate = `{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/internal_controllers.DocumentResponse"
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.DocumentResponse"
}
}
}
Expand Down Expand Up @@ -624,15 +624,15 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/internal_controllers.CompleteOAuthExchangeRequest"
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.CompleteOAuthExchangeRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/internal_controllers.CompleteOAuthExchangeResponseWrapper"
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.CompleteOAuthExchangeResponseWrapper"
}
}
}
Expand Down Expand Up @@ -754,20 +754,84 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.RegisterUserDevice"
"$ref": "#/definitions/internal_controllers.RegisterUserDevice"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.RegisterUserDeviceResponse"
"$ref": "#/definitions/internal_controllers.RegisterUserDeviceResponse"
}
}
}
}
},
"/user/devices/:tokenID/commands/burn": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Returns the data the user must sign in order to burn the device.",
"tags": [
"user-devices"
],
"parameters": [
{
"type": "integer",
"description": "token id",
"name": "tokenID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/apitypes.TypedData"
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Sends a burn device request to the blockchain",
"tags": [
"user-devices"
],
"parameters": [
{
"type": "integer",
"description": "token id",
"name": "tokenID",
"in": "path",
"required": true
},
{
"description": "Signature and Token ID",
"name": "burnRequest",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/internal_controllers.BurnRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/user/devices/:userDeviceID/aftermarket/commands/cloud-repair": {
"post": {
"security": [
Expand Down Expand Up @@ -980,21 +1044,21 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.RegisterUserDeviceSmartcar"
"$ref": "#/definitions/internal_controllers.RegisterUserDeviceSmartcar"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.UserDeviceFull"
"$ref": "#/definitions/internal_controllers.UserDeviceFull"
}
},
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.UserDeviceFull"
"$ref": "#/definitions/internal_controllers.UserDeviceFull"
}
},
"400": {
Expand Down Expand Up @@ -1039,15 +1103,15 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.RegisterUserDeviceVIN"
"$ref": "#/definitions/internal_controllers.RegisterUserDeviceVIN"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.UserDeviceFull"
"$ref": "#/definitions/internal_controllers.UserDeviceFull"
}
},
"400": {
Expand Down Expand Up @@ -1080,7 +1144,7 @@ const docTemplate = `{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.MyDevicesResp"
"$ref": "#/definitions/internal_controllers.MyDevicesResp"
}
}
}
Expand All @@ -1104,7 +1168,7 @@ const docTemplate = `{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.MyDevicesResp"
"$ref": "#/definitions/internal_controllers.MyDevicesResp"
}
}
}
Expand Down Expand Up @@ -1190,7 +1254,7 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.MintRequest"
"$ref": "#/definitions/internal_controllers.MintRequest"
}
}
],
Expand Down Expand Up @@ -1285,7 +1349,7 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.UpdateCountryCodeReq"
"$ref": "#/definitions/internal_controllers.UpdateCountryCodeReq"
}
}
],
Expand Down Expand Up @@ -1505,7 +1569,7 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/internal_controllers.BurnSyntheticDeviceRequest"
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.BurnSyntheticDeviceRequest"
}
}
],
Expand Down Expand Up @@ -1705,7 +1769,7 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/internal_controllers.MintSyntheticDeviceRequest"
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.MintSyntheticDeviceRequest"
}
}
],
Expand Down Expand Up @@ -1825,7 +1889,7 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.UpdateNameReq"
"$ref": "#/definitions/internal_controllers.UpdateNameReq"
}
},
{
Expand Down Expand Up @@ -1861,7 +1925,7 @@ const docTemplate = `{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.DeviceOffer"
"$ref": "#/definitions/internal_controllers.DeviceOffer"
}
}
}
Expand Down Expand Up @@ -1894,7 +1958,7 @@ const docTemplate = `{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.DeviceRange"
"$ref": "#/definitions/internal_controllers.DeviceRange"
}
}
}
Expand Down Expand Up @@ -1960,7 +2024,7 @@ const docTemplate = `{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.DeviceValuation"
"$ref": "#/definitions/internal_controllers.DeviceValuation"
}
}
}
Expand Down Expand Up @@ -1990,7 +2054,7 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.UpdateVINReq"
"$ref": "#/definitions/internal_controllers.UpdateVINReq"
}
},
{
Expand Down Expand Up @@ -2033,7 +2097,7 @@ const docTemplate = `{
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/github.com_DIMO-Network_devices-api_internal_controllers.NFTImageData"
"$ref": "#/definitions/internal_controllers.NFTImageData"
}
}
],
Expand Down Expand Up @@ -2186,70 +2250,6 @@ const docTemplate = `{
}
}
},
"/vehicle/:tokenID/commands/burn": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Returns the data the user must sign in order to burn the device.",
"tags": [
"user-devices"
],
"parameters": [
{
"type": "integer",
"description": "token id",
"name": "tokenID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/apitypes.TypedData"
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Sends a burn device request to the blockchain",
"tags": [
"user-devices"
],
"parameters": [
{
"type": "integer",
"description": "token id",
"name": "tokenID",
"in": "path",
"required": true
},
{
"description": "Signature and Token ID",
"name": "burnRequest",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/internal_controllers.BurnRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/vehicle/{tokenID}/commands/doors/lock": {
"post": {
"description": "Lock the device's doors.",
Expand Down
Loading

0 comments on commit 2b3484c

Please sign in to comment.