package com.airlock.iam.techclientreg.domain.service;

import com.airlock.iam.base.api.domain.model.identity.Identity;
import com.airlock.iam.techclient.api.domain.model.TechnicalClient;
import com.airlock.iam.techclient.api.domain.model.oauth2.OAuth2TechnicalClientMetadata;
import com.airlock.iam.techclientreg.domain.model.step.OAuth2ClientRegistrationResponseData;
import java.util.Optional;

public final class OAuth2TechClientRegistrationResponseDataMapper {
   private OAuth2TechClientRegistrationResponseDataMapper() {
   }

   public static OAuth2ClientRegistrationResponseData map(Optional<Identity<TechnicalClient>> techClientId, OAuth2TechnicalClientMetadata metadata) {
      return OAuth2ClientRegistrationResponseData.builder()
         .techClientId(techClientId)
         .clientId(metadata.getClientId())
         .clientIdIssuedAt(metadata.getClientIdIssuedAt())
         .clientName(metadata.getClientName())
         .clientNameTranslations(metadata.getClientNameTranslations())
         .clientUri(metadata.getClientUri())
         .clientUriTranslations(metadata.getClientUriTranslations())
         .clientSecret(metadata.getClientSecret())
         .contacts(metadata.getContacts())
         .grantTypes(metadata.getGrantTypes())
         .logoUri(metadata.getLogoUri())
         .logoUriTranslations(metadata.getLogoUriTranslations())
         .policyUri(metadata.getPolicyUri())
         .policyUriTranslations(metadata.getPolicyUriTranslations())
         .redirectUris(metadata.getRedirectUris())
         .responseTypes(metadata.getResponseTypes())
         .scopes(metadata.getScopes())
         .softwareId(metadata.getSoftwareId())
         .softwareVersion(metadata.getSoftwareVersion())
         .tokenEndpointAuthMethod(metadata.getTokenEndpointAuthMethod())
         .tosUri(metadata.getTosUri())
         .tosUriTranslations(metadata.getTosUriTranslations())
         .build();
   }
}
