package com.mobify.astro.messaging;

import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class EventMessage extends SenderMessage {
    public static final String TAG = EventMessage.class.getName();
    public static final String EVENTS_KEYWORD = "events";

    protected static final class KeyNames {
        protected static final String EVENT_NAME = "eventName";
        protected static final String PARAMS = "params";
    }

    public EventMessage() {
        super();
    }

    /**
     * Create an EventMessage which contains an event name and parameters for that event.
     *
     * @param eventName Name of the event
     * @param params Extra data to send with the event
     * @param sender The object that sends the event
     */
    public EventMessage(String eventName, JSONObject params, AddressableObject sender) {
        super();

        JSONObject payload = new JSONObject();
        try {
            payload.put(EventMessage.KeyNames.EVENT_NAME, eventName);
            payload.put(EventMessage.KeyNames.PARAMS, params);
        } catch (JSONException e) {
            Exceptions.EventCreationException f = new Exceptions.EventCreationException(eventName, e);
            Log.e(TAG, f.getMessage(), f);
            return;
        }

        this.setPayload(payload);
        this.setSenderAddress(sender);
    }
}