diff --git a/examples/message_list.rb b/examples/message_list.rb new file mode 100755 index 0000000..6d3d6d2 --- /dev/null +++ b/examples/message_list.rb @@ -0,0 +1,62 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib/') +require 'messagebird' + +# ACCESS_KEY = '' + +unless defined?(ACCESS_KEY) + puts 'You need to set an ACCESS_KEY constant in this file' + exit 1 +end + +begin + # Create a MessageBird client with the specified ACCESS_KEY. + client = MessageBird::Client.new(ACCESS_KEY) + + messages = client.message_list(status: 'scheduled') + + # Print the object information. + puts + puts 'The following information was returned as a Message list:' + puts + puts " count : #{messages.count}" + puts " limit : #{messages.limit}" + puts " offset : #{messages.offset}" + puts " totalCount : #{messages.total_count}" + puts " links : #{messages.links}" + unless messages.items.empty? + msg = messages[0] # Equivalent to messages.items[0] + # Print the object information. + puts + puts 'The following information was returned as a Message object:' + puts + puts " id : #{msg.id}" + puts " href : #{msg.href}" + puts " direction : #{msg.direction}" + puts " type : #{msg.type}" + puts " originator : #{msg.originator}" + puts " body : #{msg.body}" + puts " reference : #{msg.reference}" + puts " validity : #{msg.validity}" + puts " gateway : #{msg.gateway}" + puts " typeDetails : #{msg.typeDetails}" + puts " datacoding : #{msg.datacoding}" + puts " mclass : #{msg.mclass}" + puts " scheduledDateTime : #{msg.scheduled_date_time}" + puts " createdDatetime : #{msg.created_datetime}" + puts " recipients : #{msg.recipients}" + puts + end +rescue MessageBird::ErrorException => e + puts + puts 'An error occurred while listing your messages:' + puts + e.errors.each do |error| + puts " code : #{error.code}" + puts " description : #{error.description}" + puts " parameter : #{error.parameter}" + puts + end +end diff --git a/lib/messagebird/client.rb b/lib/messagebird/client.rb index d7a076d..7ce7ab3 100644 --- a/lib/messagebird/client.rb +++ b/lib/messagebird/client.rb @@ -232,6 +232,20 @@ def message(id) Message.new(request(:get, "messages/#{id}")) end + # Retrieve messages with optional paging and status filter. + def message_list(filter = {}) + limit = filter[:limit] || 10 + offset = filter[:offset] || 0 + status = filter[:status] || '' + + params = { limit: limit, offset: offset } + if status != '' + params['status'] = status + end + query = 'messages?' + URI.encode_www_form(params) + List.new(Message, request(:get, query)) + end + # Create a new message. def message_create(originator, recipients, body, params = {}) # Convert an array of recipients to a comma-separated string.