/**
* Copyright 2011 Intuit Inc. All Rights Reserved
*/
package com.intuit.tank.rest;
/*
* #%L
* Rest Client Common
* %%
* Copyright (C) 2011 - 2015 Intuit Inc.
* %%
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* #L%
*/
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.apache.commons.lang3.StringUtils;
/**
* RestUrlBuilder
*
* @author dangleton
*
*/
public class RestUrlBuilder {
private String baseUrl;
/**
* @param baseUrl
*/
public RestUrlBuilder(@Nonnull String baseUrl) {
this.baseUrl = StringUtils.removeEnd(baseUrl, "/");
}
/**
* Builds the url with the specified methodName.
*
* @param methodName
* the methodName
* @return the url.
*/
@Nonnull
public String buildUrl(@Nonnull String methodName) {
return buildUrl(methodName, (Object[]) null);
}
/**
* Builds the url with the specified methodName and parameter.
*
* @param methodName
* the methodName
* @param parameter
* the parameter value
* @return the url.
*/
@Nonnull
public String buildUrl(@Nullable String methodName, @Nullable Object... parameters) {
StringBuilder sb = new StringBuilder(baseUrl);
if (methodName != null) {
if (!methodName.startsWith("/")) {
sb.append('/');
}
sb.append(StringUtils.removeEnd(methodName, "/"));
}
if (parameters != null) {
for (Object parameter : parameters) {
if (parameter != null) {
String s = parameter.toString();
if (!s.startsWith("/")) {
sb.append('/');
}
sb.append(s);
}
}
}
return sb.toString();
}
}