/* * Copyright 2016-present Open Networking Laboratory * * 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 org.onosproject.protocol.http; import java.io.InputStream; import java.util.Map; import javax.ws.rs.core.MediaType; import org.onlab.packet.IpAddress; import org.onosproject.net.DeviceId; import org.onosproject.protocol.rest.RestSBDevice; /** * Abstraction of an HTTP controller. Serves as a one stop shop for obtaining * HTTP southbound devices and (un)register listeners. */ public interface HttpSBController { /** * Returns all the devices known to this controller. * * @return map of devices */ Map<DeviceId, RestSBDevice> getDevices(); /** * Returns a device by node identifier. * * @param deviceInfo node identifier * @return RestSBDevice rest device */ RestSBDevice getDevice(DeviceId deviceInfo); /** * Returns a device by Ip and Port. * * @param ip device ip * @param port device port * @return RestSBDevice rest device */ RestSBDevice getDevice(IpAddress ip, int port); /** * Adds a device to the device map. * * @param device to be added */ void addDevice(RestSBDevice device); /** * Removes the device from the devices map. * * @param deviceId to be removed */ void removeDevice(DeviceId deviceId); /** * Does a HTTP POST request with specified parameters to the device. * * @param device device to make the request to * @param request url of the request * @param payload payload of the request as an InputStream * @param mediaType type of content in the payload i.e. application/json * @return true if operation returned 200, 201, 202, false otherwise * * @deprecated in Kingfisher (1.10.0) */ @Deprecated boolean post(DeviceId device, String request, InputStream payload, String mediaType); /** * Does a HTTP POST request with specified parameters to the device. * * @param <T> post return type * @param device device to make the request to * @param request url of the request * @param payload payload of the request as an InputStream * @param mediaType type of content in the payload i.e. application/json * @param responseClass the type of response object we are interested in, * such as String, InputStream. * @return Object of type requested via responseClass. */ @Deprecated <T> T post(DeviceId device, String request, InputStream payload, String mediaType, Class<T> responseClass); /** * Does a HTTP PUT request with specified parameters to the device. * * @param device device to make the request to * @param request resource path of the request * @param payload payload of the request as an InputStream * @param mediaType type of content in the payload i.e. application/json * @return true if operation returned 200, 201, 202, false otherwise * * @deprecated in Kingfisher (1.10.0) */ @Deprecated boolean put(DeviceId device, String request, InputStream payload, String mediaType); /** * * Does a HTTP GET request with specified parameters to the device. * * @param device device to make the request to * @param request url of the request * @param mediaType format to retrieve the content in * @return an inputstream of data from the reply. */ @Deprecated InputStream get(DeviceId device, String request, String mediaType); /** * Does a HTTP PATCH request with specified parameters to the device. * * @param device device to make the request to * @param request url of the request * @param payload payload of the request as an InputStream * @param mediaType format to retrieve the content in * @return true if operation returned 200, 201, 202, false otherwise * * @deprecated in Kingfisher (1.10.0) */ @Deprecated boolean patch(DeviceId device, String request, InputStream payload, String mediaType); /** * Does a HTTP DELETE request with specified parameters to the device. * * @param device device to make the request to * @param request url of the request * @param payload payload of the request as an InputStream * @param mediaType type of content in the payload i.e. application/json * @return true if operation returned 200 false otherwise * * @deprecated in Kingfisher (1.10.0) */ @Deprecated boolean delete(DeviceId device, String request, InputStream payload, String mediaType); /** * Does a HTTP POST request with specified parameters to the device. * * @param device device to make the request to * @param request url of the request * @param payload payload of the request as an InputStream * @param mediaType type of content in the payload i.e. application/json * @return status Commonly used status codes defined by HTTP */ int post(DeviceId device, String request, InputStream payload, MediaType mediaType); /** * Does a HTTP PUT request with specified parameters to the device. * * @param device device to make the request to * @param request resource path of the request * @param payload payload of the request as an InputStream * @param mediaType type of content in the payload i.e. application/json * @return status Commonly used status codes defined by HTTP */ int put(DeviceId device, String request, InputStream payload, MediaType mediaType); /** * Does a HTTP PATCH request with specified parameters to the device. * * @param device device to make the request to * @param request url of the request * @param payload payload of the request as an InputStream * @param mediaType format to retrieve the content in * @return status Commonly used status codes defined by HTTP */ int patch(DeviceId device, String request, InputStream payload, MediaType mediaType); /** * Does a HTTP DELETE request with specified parameters to the device. * * @param device device to make the request to * @param request url of the request * @param payload payload of the request as an InputStream * @param mediaType type of content in the payload i.e. application/json * @return status Commonly used status codes defined by HTTP */ int delete(DeviceId device, String request, InputStream payload, MediaType mediaType); /** * * Does a HTTP GET request with specified parameters to the device. * * @param device device to make the request to * @param request url of the request * @param mediaType format to retrieve the content in * @return an inputstream of data from the reply. */ InputStream get(DeviceId device, String request, MediaType mediaType); /** * Does a HTTP POST request with specified parameters to the device. * * @param <T> post return type * @param device device to make the request to * @param request url of the request * @param payload payload of the request as an InputStream * @param mediaType type of content in the payload i.e. application/json * @param responseClass the type of response object we are interested in, * such as String, InputStream. * @return Object of type requested via responseClass. */ <T> T post(DeviceId device, String request, InputStream payload, MediaType mediaType, Class<T> responseClass); }