@@ -145,6 +145,10 @@ func (enum *PinStatus) UnmarshalJSON(data []byte) error {
145145 return nil
146146}
147147
148+ type CreateVolumeJWTResponse struct {
149+ Token string `json:"token"`
150+ }
151+
148152type ListPinsResponse struct {
149153 TotalCount uint64 `json:"total_count"`
150154
@@ -801,6 +805,91 @@ func (s *API) DeletePin(req *DeletePinRequest, opts ...scw.RequestOption) error
801805 return nil
802806}
803807
808+ type CreateVolumeJWTRequest struct {
809+ // Region: region to target. If none is passed will use default region from the config.
810+ Region scw.Region `json:"-"`
811+
812+ VolumeID string `json:"-"`
813+ }
814+
815+ func (s * API ) CreateVolumeJWT (req * CreateVolumeJWTRequest , opts ... scw.RequestOption ) (* CreateVolumeJWTResponse , error ) {
816+ var err error
817+
818+ if req .Region == "" {
819+ defaultRegion , _ := s .client .GetDefaultRegion ()
820+ req .Region = defaultRegion
821+ }
822+
823+ if fmt .Sprint (req .Region ) == "" {
824+ return nil , errors .New ("field Region cannot be empty in request" )
825+ }
826+
827+ if fmt .Sprint (req .VolumeID ) == "" {
828+ return nil , errors .New ("field VolumeID cannot be empty in request" )
829+ }
830+
831+ scwReq := & scw.ScalewayRequest {
832+ Method : "POST" ,
833+ Path : "/ipfs/v1alpha1/regions/" + fmt .Sprint (req .Region ) + "/volumes/" + fmt .Sprint (req .VolumeID ) + "/token" ,
834+ Headers : http.Header {},
835+ }
836+
837+ err = scwReq .SetBody (req )
838+ if err != nil {
839+ return nil , err
840+ }
841+
842+ var resp CreateVolumeJWTResponse
843+
844+ err = s .client .Do (scwReq , & resp , opts ... )
845+ if err != nil {
846+ return nil , err
847+ }
848+ return & resp , nil
849+ }
850+
851+ type DeleteVolumeJWTRequest struct {
852+ // Region: region to target. If none is passed will use default region from the config.
853+ Region scw.Region `json:"-"`
854+
855+ VolumeID string `json:"-"`
856+
857+ Token string `json:"-"`
858+ }
859+
860+ func (s * API ) DeleteVolumeJWT (req * DeleteVolumeJWTRequest , opts ... scw.RequestOption ) error {
861+ var err error
862+
863+ if req .Region == "" {
864+ defaultRegion , _ := s .client .GetDefaultRegion ()
865+ req .Region = defaultRegion
866+ }
867+
868+ query := url.Values {}
869+ parameter .AddToQuery (query , "token" , req .Token )
870+
871+ if fmt .Sprint (req .Region ) == "" {
872+ return errors .New ("field Region cannot be empty in request" )
873+ }
874+
875+ if fmt .Sprint (req .VolumeID ) == "" {
876+ return errors .New ("field VolumeID cannot be empty in request" )
877+ }
878+
879+ scwReq := & scw.ScalewayRequest {
880+ Method : "DELETE" ,
881+ Path : "/ipfs/v1alpha1/regions/" + fmt .Sprint (req .Region ) + "/volumes/" + fmt .Sprint (req .VolumeID ) + "/token" ,
882+ Query : query ,
883+ Headers : http.Header {},
884+ }
885+
886+ err = s .client .Do (scwReq , nil , opts ... )
887+ if err != nil {
888+ return err
889+ }
890+ return nil
891+ }
892+
804893// UnsafeGetTotalCount should not be used
805894// Internal usage only
806895func (r * ListVolumesResponse ) UnsafeGetTotalCount () uint64 {
0 commit comments