All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ovh.ws.jsonizer.api.request.RestRequest Maven / Gradle / Ivy

The newest version!
/**
 * Copyright 2012, OVH. All rights reserved.
 *
 * 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.
 */
package com.ovh.ws.jsonizer.api.request;

import java.lang.reflect.Type;
import java.net.URI;
import java.util.Collections;
import java.util.Map;

import com.ovh.ws.api.AsyncCallback;
import com.ovh.ws.api.OvhWsException;
import com.ovh.ws.api.request.Request;
import com.ovh.ws.jsonizer.api.RestService;
import com.ovh.ws.jsonizer.api.http.HttpClient;
import com.ovh.ws.jsonizer.api.http.UriBuilder;
import com.ovh.ws.jsonizer.api.parser.TypeReference;

public abstract class RestRequest implements Request {

	private final RestService requestSender;
	private final String methodName;
	private final Type responseType;
	private final URI uri;

	protected RestRequest(RestService restService, String methodName, Type responseType) {
		this.requestSender = restService;
		this.methodName = methodName;
		this.responseType = responseType;

		HttpClient client = restService.getHttpClient();

		UriBuilder builder = UriBuilder.fromUrl(restService.getUrl());
		builder.protocol(client.getProtocol()).host(client.getHost()).port(client.getPort());

		this.uri = builder.path(methodName).build();
	}

	protected RestRequest(RestService restService, String methodName, TypeReference responseType) {
		this(restService, methodName, responseType.getType());
	}

	@Override
	public String getMethodName() {
		return methodName;
	}

	@Override
	public Type getResponseType() {
		return responseType;
	}

	@Override
	public Map getParams() {
		return Collections.emptyMap();
	}

	@Override
	public URI toUri() {
		return uri;
	}

	@Override
	public T send() throws OvhWsException {
		return requestSender.send(this);
	}

	@Override
	public void send(AsyncCallback callback) {
		requestSender.send(this, callback);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy