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

org.knowm.xchange.coinbase.dto.merchant.CoinbaseSubscription Maven / Gradle / Ivy

package org.knowm.xchange.coinbase.dto.merchant;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import java.util.Date;
import org.knowm.xchange.coinbase.dto.common.CoinbaseRecurringPaymentStatus;
import org.knowm.xchange.coinbase.dto.merchant.CoinbaseButton.CoinbaseButtonInfo;
import org.knowm.xchange.utils.jackson.ISO8601DateDeserializer;

/** @author jamespedwards42 */
public class CoinbaseSubscription {

  private final CoinbaseSubscriptionInfo subscription;

  private CoinbaseSubscription(
      @JsonProperty("recurring_payment") final CoinbaseSubscriptionInfo subscription) {

    this.subscription = subscription;
  }

  public String getId() {

    return subscription.getId();
  }

  public Date getCreatedAt() {

    return subscription.getCreatedAt();
  }

  public CoinbaseRecurringPaymentStatus getStatus() {

    return subscription.getStatus();
  }

  public String getCustom() {

    return subscription.getCustom();
  }

  public CoinbaseButton getButton() {

    return subscription.getButton();
  }

  @Override
  public String toString() {

    return "CoinbaseSubscription [subscription=" + subscription + "]";
  }

  private static final class CoinbaseSubscriptionInfo {

    private final String id;
    private final Date createdAt;
    private final CoinbaseRecurringPaymentStatus status;
    private final String custom;
    private final CoinbaseButton button;

    private CoinbaseSubscriptionInfo(
        @JsonProperty("id") final String id,
        @JsonProperty("created_at") @JsonDeserialize(using = ISO8601DateDeserializer.class)
            final Date createdAt,
        @JsonProperty("status") final CoinbaseRecurringPaymentStatus status,
        @JsonProperty("custom") final String custom,
        @JsonProperty("button") final CoinbaseButtonInfo button) {

      this.id = id;
      this.createdAt = createdAt;
      this.status = status;
      this.custom = custom;
      this.button = new CoinbaseButton(button);
    }

    public String getId() {

      return id;
    }

    public Date getCreatedAt() {

      return createdAt;
    }

    public CoinbaseRecurringPaymentStatus getStatus() {

      return status;
    }

    public String getCustom() {

      return custom;
    }

    public CoinbaseButton getButton() {

      return button;
    }

    @Override
    public String toString() {

      return "CoinbaseSubscriptionInfo [id="
          + id
          + ", createdAt="
          + createdAt
          + ", status="
          + status
          + ", custom="
          + custom
          + ", button="
          + button
          + "]";
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy