@@ -660,6 +660,11 @@ type ScalewayTokensDefinition struct {
660660 Token ScalewayTokenDefinition `json:"token"`
661661}
662662
663+ // ScalewayGetTokens represents a list of Scaleway Tokens
664+ type ScalewayGetTokens struct {
665+ Tokens []ScalewayTokenDefinition `json:"tokens"`
666+ }
667+
663668// ScalewayContainerData represents a Scaleway container data (S3)
664669type ScalewayContainerData struct {
665670 LastModified string `json:"last_modified"`
@@ -1908,7 +1913,6 @@ func (s *ScalewayAPI) GetTasks() (*[]ScalewayTask, error) {
19081913// CheckCredentials performs a dummy check to ensure we can contact the API
19091914func (s * ScalewayAPI ) CheckCredentials () error {
19101915 query := url.Values {}
1911- query .Set ("token_id" , s .Token )
19121916
19131917 resp , err := s .GetResponsePaginate (AccountAPI , "tokens" , query )
19141918 if resp != nil {
@@ -1917,10 +1921,25 @@ func (s *ScalewayAPI) CheckCredentials() error {
19171921 if err != nil {
19181922 return err
19191923 }
1924+ body , err := s .handleHTTPError ([]int {http .StatusOK }, resp )
1925+ if err != nil {
1926+ return err
1927+ }
1928+ found := false
1929+ var tokens ScalewayGetTokens
19201930
1921- if _ , err := s . handleHTTPError ([] int { http . StatusOK }, resp ); err != nil {
1931+ if err = json . Unmarshal ( body , & tokens ); err != nil {
19221932 return err
19231933 }
1934+ for _ , token := range tokens .Tokens {
1935+ if token .ID == s .Token {
1936+ found = true
1937+ break
1938+ }
1939+ }
1940+ if ! found {
1941+ return fmt .Errorf ("Invalid token %v" , s .Token )
1942+ }
19241943 return nil
19251944}
19261945
0 commit comments