All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.api.tools.framework.importers.swagger.aspects.auth.model.SecurityRequirementModel Maven / Gradle / Ivy

/*
 * Copyright (C) 2016 Google, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.api.tools.framework.importers.swagger.aspects.auth.model;

import com.google.api.AuthRequirement;
import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import java.util.List;
import java.util.Map;

/** Class representing authentication schema in security requirement extension in OpenAPI. */
public class SecurityRequirementModel {

  // List of audiences
  private final List audiences;

  public List getAudiences() {
    return audiences;
  }

  public SecurityRequirementModel(List audiences) {
    this.audiences = ImmutableList.copyOf(audiences);
  }

  public static ImmutableList createAuthRequirements(
      Map authRequirements) {
    ImmutableList.Builder authRequirementsList = ImmutableList.builder();
    for (Map.Entry authReq : authRequirements.entrySet()) {
      AuthRequirement.Builder authRequirement = AuthRequirement.newBuilder();
      authRequirement.setProviderId(authReq.getKey());
      authRequirement.setAudiences(Joiner.on(",").join(authReq.getValue().getAudiences()));
      authRequirementsList.add(authRequirement.build());
    }
    return authRequirementsList.build();
  }

  public static Map flattenSecurityRequirementModel(
      List> securityRequirementsResult) {
    Map securityRequirementsResultFlattened =
        Maps.newLinkedHashMap();
    for (Map schemas : securityRequirementsResult) {
      securityRequirementsResultFlattened.putAll(schemas);
    }
    return securityRequirementsResultFlattened;
  }

  public static Map mergeSecurityRequirementModel(
      Map securityRequirementsFromCustomExtension,
      Map securityRequirementsFromSecurityObject) {
    if (securityRequirementsFromCustomExtension == null
        && securityRequirementsFromSecurityObject == null) {
      return null;
    }

    Map result = Maps.newLinkedHashMap();
    if (securityRequirementsFromSecurityObject != null) {
      result.putAll(securityRequirementsFromSecurityObject);
    }
    // Overwrite if the same definition is referenced inside the custom extension.
    if (securityRequirementsFromCustomExtension != null) {
      result.putAll(securityRequirementsFromCustomExtension);
    }

    return result;
  }

  /** Converts Map to Map. */
  public enum SecurityRequirementModelExtractor
      implements Function>, Map> {
    INSTANCE;

    @Override
    public Map apply(Map> reqs) {
      Map result = Maps.newLinkedHashMap();
      for (String schemaName : reqs.keySet()) {
        result.put(schemaName, new SecurityRequirementModel(Lists.newArrayList()));
      }
      return result;
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy