Sha256: ed6bd1d6512f9266d154bf4ce7da5d2ee915876cf8fa5a452d03a29350fcd770

Contents?: true

Size: 1.82 KB

Versions: 2

Compression:

Stored size: 1.82 KB

Contents

module VoipfoneClient
  class DivertListItem < Client
    attr_accessor :name, :number

    # Constructor for `DivertListItem` which accepts the name and number of the phone number to add to the diverts list.
    # @param name [String] the name of the phone to be diverted to
    # @param number [String] the number of the phone to be diverted to.
    def initialize(name: nil, number: nil)
      @name = name
      @number = number
      super()
    end

    # Add a new number to the list of numbers which can be diverted to. Requires a name
    # and a phone number, which will have spaces stripped from it. May be in international
    # format.
    # @return [Boolean] true on success or a failure message (in which case a `VoipfoneAPIError` will be raised)
    def save
      if @name.nil? || @number.nil?
        raise ArgumentError, "You need to include a name and number to add to the diverts list"
      end
      @number = @number.gsub(" ","")
      parameters = {
        "div-list-name" => @name,
        "div-list-num" => number
      }
      request = @browser.post("#{VoipfoneClient::API_POST_URL}?setDivertsList", parameters)
      response = parse_response(request)
      if response == [@name, @number]
        return true
      else
        raise VoipfoneAPIError, "Although Voipfone returned an OK, the data they stored didn't match what you asked for: #{response}"
      end
    end

    class << self
      # Get a list of phones which can be diverted to. Returns a nested array of name and phone number.
      # @return [Array] of names and phone numbers 
      def all
        d = self.new
        request = d.browser.get("#{VoipfoneClient::API_GET_URL}?divertsCommon")
        d.parse_response(request)["divertsCommon"].collect do |i|
          DivertListItem.new(name: i.first, number: i.last)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
voipfone_client-0.2.1 lib/voipfone_client/divert_list_item.rb
voipfone_client-0.2.0 lib/voipfone_client/divert_list_item.rb