lib/rpush/client/active_model/pushy/notification.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Rpush
  module Client
    module ActiveModel
      module Pushy
        module Notification
          def self.included(base)
            base.instance_eval do
              alias_attribute :time_to_live, :expiry

              validates :time_to_live, numericality: { only_integer: true, greater_than: 0 }, allow_nil: true
              validates :registration_ids, presence: true
              validates :data, presence: true

              validates_with Rpush::Client::ActiveModel::Pushy::TimeToLiveValidator
              validates_with Rpush::Client::ActiveModel::PayloadDataSizeValidator, limit: 4096
              validates_with Rpush::Client::ActiveModel::RegistrationIdsCountValidator, limit: 1000
            end
          end

          def as_json(_options = nil)
            {
              'data'             => data,
              'time_to_live'     => time_to_live,
              'registration_ids' => registration_ids
            }
          end
        end
      end
    end
  end
end