package com.airlock.iam.oauth2.application.configuration.client;

import com.airlock.iam.oauth2.domain.model.client.OAuth2PostRequestBuilder;
import com.airlock.iam.oauth2.domain.model.client.OAuth2RequestBuilder;
import com.airlock.iam.plugin.api.annotation.config.Plugin;
import com.airlock.iam.plugin.api.annotation.license.PluginLicenseRestriction;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

@Plugin(
   description = "Plugin to build an HTTP POST request. The parameters (e.g. scope) will be transmitted in the request body with the 'application/x-www-form-urlencoded' format.",
   displayName = "OAuth 2.0 POST Request"
)
@PluginLicenseRestriction(moduleAffiliation = "OAuthClient")
public final class OAuth2PostRequestBuilderConfig implements OAuth2RequestBuilderConfig {
   @Override
   public OAuth2RequestBuilder logic() {
      return new OAuth2PostRequestBuilder();
   }

   @SuppressFBWarnings(justification = "generated code")
   public static OAuth2PostRequestBuilderConfig.OAuth2PostRequestBuilderConfigBuilder builder() {
      return new OAuth2PostRequestBuilderConfig.OAuth2PostRequestBuilderConfigBuilder();
   }

   @SuppressFBWarnings(justification = "generated code")
   public static class OAuth2PostRequestBuilderConfigBuilder {
      @SuppressFBWarnings(justification = "generated code")
      OAuth2PostRequestBuilderConfigBuilder() {
      }

      @SuppressFBWarnings(justification = "generated code")
      public OAuth2PostRequestBuilderConfig build() {
         return new OAuth2PostRequestBuilderConfig();
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "OAuth2PostRequestBuilderConfig.OAuth2PostRequestBuilderConfigBuilder()";
      }
   }
}
