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

com.viber.bot.message.UrlMessage Maven / Gradle / Ivy

package com.viber.bot.message;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.net.UrlEscapers;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable;
import java.util.HashMap;
import java.util.Map;

import static com.viber.bot.Preconditions.checkNotEmpty;

@Immutable
public class UrlMessage extends Message {

    private final String url;

    @JsonCreator
    public UrlMessage(final @JsonProperty("media") @Nonnull String url,
                      final @JsonProperty("keyboard") @Nullable MessageKeyboard keyboard,
                      final @JsonProperty("tracking_data") @Nullable TrackingData trackingData) {
        super("url", keyboard, trackingData);
        this.url = UrlEscapers.urlPathSegmentEscaper().escape(checkNotEmpty(url));
    }

    @JsonIgnore
    public UrlMessage(final @Nonnull String url) {
        this(url, null, null);
    }

    @Override
    protected Map getPartialMapRepresentation() {
        return new HashMap() {{
            put("media", getUrl());
        }};
    }

    public String getUrl() {
        return url;
    }

    @Override
    public boolean equals(final Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;

        final UrlMessage that = (UrlMessage) o;

        return url != null ? url.equals(that.url) : that.url == null;

    }

    @Override
    public int hashCode() {
        int result = super.hashCode();
        result = 31 * result + (url != null ? url.hashCode() : 0);
        return result;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy