github.com/cs3org/reva/v2@v2.27.7/internal/grpc/services/gateway/authregistry.go (about)

     1  // Copyright 2018-2021 CERN
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  //
    15  // In applying this license, CERN does not waive the privileges and immunities
    16  // granted to it by virtue of its status as an Intergovernmental Organization
    17  // or submit itself to any jurisdiction.
    18  
    19  package gateway
    20  
    21  import (
    22  	"context"
    23  
    24  	registry "github.com/cs3org/go-cs3apis/cs3/auth/registry/v1beta1"
    25  	gateway "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1"
    26  	rpc "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1"
    27  	"github.com/cs3org/reva/v2/pkg/rgrpc/status"
    28  	"github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool"
    29  )
    30  
    31  func (s *svc) ListAuthProviders(ctx context.Context, req *registry.ListAuthProvidersRequest) (*gateway.ListAuthProvidersResponse, error) {
    32  	c, err := pool.GetAuthRegistryServiceClient(s.c.AuthRegistryEndpoint)
    33  	if err != nil {
    34  		return &gateway.ListAuthProvidersResponse{
    35  			Status: status.NewInternal(ctx, "gateway"),
    36  		}, nil
    37  	}
    38  
    39  	res, err := c.ListAuthProviders(ctx, req)
    40  	if err != nil {
    41  		return &gateway.ListAuthProvidersResponse{
    42  			Status: status.NewInternal(ctx, "gateway"),
    43  		}, nil
    44  	}
    45  
    46  	if res.Status.Code != rpc.Code_CODE_OK {
    47  		return &gateway.ListAuthProvidersResponse{
    48  			Status: status.NewInternal(ctx, "gateway"),
    49  		}, nil
    50  	}
    51  
    52  	types := make([]string, len(res.Providers))
    53  	for i, p := range res.Providers {
    54  		types[i] = p.ProviderType
    55  	}
    56  
    57  	gwRes := &gateway.ListAuthProvidersResponse{
    58  		Status: res.Status,
    59  		Opaque: res.Opaque,
    60  		Types:  types,
    61  	}
    62  
    63  	return gwRes, nil
    64  }