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

com.brettonw.bedrock.service.Event Maven / Gradle / Ivy

package com.brettonw.bedrock.service;

import com.brettonw.bedrock.bag.Bag;
import com.brettonw.bedrock.bag.BagArray;
import com.brettonw.bedrock.bag.BagObject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import javax.servlet.http.HttpServletRequest;

import static com.brettonw.bedrock.service.Base.*;

public class Event {
    private static final Logger log = LogManager.getLogger (Event.class);

    private final BagObject query;
    private final HttpServletRequest request;
    private Bag response;

    public Event (BagObject query, HttpServletRequest request) {
        this.query = query;
        this.request = request;
    }

    public BagObject getQuery () {
        return query;
    }

    public HttpServletRequest getRequest () {
        return request;
    }

    public Bag getResponse () {
        return response;
    }

    public String getEventName () {
        return query.getString (EVENT);
    }

    public String getIpAddress () {
        String ipAddress = request.getRemoteAddr ();

        // try to get the x-forwarded header, the last one...
        String forwarding = request.getHeader ("x-forwarded-for");
        if (forwarding != null) {
            String[] forwards = forwarding.split (",");
            for (String forward : forwards) {
                forward = forward.trim ();
                ipAddress = forward.split (":")[0];
            }
        }

        return ipAddress;
    }


    public Event respond (Bag bag) {
        response = bag;
        return this;
    }

    public Event ok (Bag bag) {
        return respond (BagObject.open (QUERY, query).put (STATUS, OK).put (RESPONSE, bag));
    }

    public Event ok () {
        return ok (null);
    }

    public Event error (BagArray errors) {
        // log the errors
        for (int i = 0, end = errors.getCount (); i < end; ++i) {
            log.error (errors.getString (i));
        }

        // and respond to the end user...
        return respond (BagObject.open (QUERY, query).put (STATUS, ERROR).put (ERROR, errors));
    }

    public Event error (String error) {
        return error (BagArray.open (error));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy