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

com.netflix.karyon.examples.hellonoss.server.simple.HelloWorldEndpoint Maven / Gradle / Ivy

package com.netflix.karyon.examples.hellonoss.server.simple;

import io.netty.buffer.ByteBuf;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.reactivex.netty.channel.StringTransformer;
import io.reactivex.netty.protocol.http.server.HttpServerRequest;
import io.reactivex.netty.protocol.http.server.HttpServerResponse;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import rx.Observable;

/**
 * @author Tomasz Bak
 */
public class HelloWorldEndpoint {

    private static final Logger logger = LoggerFactory.getLogger(HelloWorldEndpoint.class);

    public Observable sayHello(HttpServerResponse response) {
        JSONObject content = new JSONObject();
        try {
            content.put("Message", "Hello from Netflix OSS");
            response.write(content.toString(), StringTransformer.DEFAULT_INSTANCE);
            return response.close();
        } catch (JSONException e) {
            logger.error("Error creating json response.", e);
            return Observable.error(e);
        }
    }

    public Observable sayHelloToUser(HttpServerRequest request, HttpServerResponse response) {
        JSONObject content = new JSONObject();

        int prefixLength = "/hello/to".length();
        String userName = request.getPath().substring(prefixLength);

        try {
            if (userName.isEmpty() || userName.length() == 1 /*The uri is /hello/to/ but no name */) {
                response.setStatus(HttpResponseStatus.BAD_REQUEST);
                content.put("Error", "Please provide a username to say hello. The URI should be /hello/to/{username}");
            } else {
                content.put("Message", "Hello " + userName.substring(1) /*Remove the / prefix*/ + " from Netflix OSS");
            }
        } catch (JSONException e) {
            logger.error("Error creating json response.", e);
            return Observable.error(e);
        }

        response.write(content.toString(), StringTransformer.DEFAULT_INSTANCE);
        return response.close();

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy