package org.ff4j.web;
/*
* #%L
* ff4j-core
* %%
* Copyright (C) 2013 - 2015 FF4J
* %%
* 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.
* #L%
*/
import org.ff4j.FF4j;
/**
* Helper to build an instance of {@link ApiConfig} and initialize the REST API.
*
* @author Cedrick Lunven (@clunven)</a>
*/
public class ApiConfigBuilder {
/** API Configuration. */
private ApiConfig apiConfig;
public ApiConfigBuilder() {
apiConfig = new ApiConfig();
}
public ApiConfigBuilder(FF4j ff4j) {
apiConfig = new ApiConfig(ff4j);
}
public ApiConfigBuilder(ApiConfig initConf) {
apiConfig = initConf;
}
public ApiConfig build() {
return apiConfig;
}
// Documentation
public ApiConfigBuilder documentation(boolean b) {
apiConfig.setDocumentation(b);
return this;
}
public ApiConfigBuilder withDocumentation() {
return documentation(true);
}
public ApiConfigBuilder withoutDocumentation() {
return documentation(false);
}
// Authentication
public ApiConfigBuilder authenticate(boolean b) {
apiConfig.setAuthenticate(b);
return this;
}
public ApiConfigBuilder withAuthentication() {
return authenticate(true);
}
public ApiConfigBuilder withoutAuthentication() {
return authenticate(false);
}
// Autorisation
public ApiConfigBuilder autorize(boolean b) {
apiConfig.setAutorize(b);
return this;
}
public ApiConfigBuilder withAutorization() {
return autorize(true);
}
public ApiConfigBuilder withoutAutorization() {
return autorize(false);
}
public ApiConfigBuilder addApiKey(String apiKey) {
apiConfig.createApiKey(apiKey, true, true, null);
return this;
}
public ApiConfigBuilder addUser(String userName, String userPassword) {
apiConfig.createUser(userName, userPassword, true, true, null);
return this;
}
public ApiConfigBuilder host(String host) {
apiConfig.setHost(host);
return this;
}
public ApiConfigBuilder webContext(String context) {
apiConfig.setWebContext(context);
return this;
}
public ApiConfigBuilder port(int port) {
apiConfig.setPort(port);
return this;
}
}