package com.airlock.iam.oauth2.infrastructure.mapper;

import com.airlock.iam.common.infrastructure.event.EventPayloadData;
import com.airlock.iam.oauth2.api.domain.model.OAuth2Scope;
import com.airlock.iam.oauth2.api.domain.model.event.OAuth2UserConsentEvent;
import java.util.Map;
import org.mapstruct.Mapper;

@Mapper
public interface OAuth2EventMapper {
   default EventPayloadData mapOAuth2UserConsent(OAuth2UserConsentEvent event) {
      return new EventPayloadData(
         Map.of(
            "acceptedScopes",
            OAuth2Scope.convertToScopeNamesList(event.acceptedScopes()),
            "deniedScopes",
            OAuth2Scope.convertToScopeNamesList(event.deniedScopes()),
            "alwaysGrantedScopes",
            OAuth2Scope.convertToScopeNamesList(event.alwaysGrantedScopes()),
            "clientId",
            event.clientId().id(),
            "authorizationServerId",
            event.authorizationServerId().id()
         )
      );
   }
}
