Skip to content

Commit e4eb8ab

Browse files
authored
feat(ipfs): add token to manage IPFS CLI (#1674)
1 parent 9de7ce5 commit e4eb8ab

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed

api/ipfs/v1alpha1/ipfs_sdk.go

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
148152
type 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
806895
func (r *ListVolumesResponse) UnsafeGetTotalCount() uint64 {

0 commit comments

Comments
 (0)