Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions lib/exchanger.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
require "exchanger/elements/single_recipient"
require "exchanger/elements/attendee"
require "exchanger/elements/complete_name"
require "exchanger/elements/address"
require "exchanger/elements/room"
# Entry elements
require "exchanger/elements/entry"
require "exchanger/elements/email_address"
Expand Down Expand Up @@ -64,6 +66,7 @@
require "exchanger/operations/resolve_names"
require "exchanger/operations/expand_dl"
require "exchanger/operations/get_user_availability"
require "exchanger/operations/get_room_lists"

module Exchanger
NS = {
Expand Down
12 changes: 12 additions & 0 deletions lib/exchanger/elements/address.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module Exchanger
# The Address element represents a fully resolved e-mail address
#
# http://msdn.microsoft.com/en-us/library/dd899404(v=exchg.150).aspx
class Address < Element
element :name, :type => String
element :email_address, :type => String
element :routing_type, :type => String
element :mailbox_type, :type => String
end

end
9 changes: 9 additions & 0 deletions lib/exchanger/elements/room.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module Exchanger
# The Room element represents a meeting room
#
# http://msdn.microsoft.com/en-us/library/dd899479(v=exchg.150).aspx
class Room < Element
element :id, :type => Address
end

end
35 changes: 35 additions & 0 deletions lib/exchanger/operations/get_room_lists.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
module Exchanger
# GetRoomLists operation
#
# http://msdn.microsoft.com/en-us/library/dd899416(v=exchg.150).aspx

class GetRoomLists < Operation
class Request < Operation::Request
def to_xml
Nokogiri::XML::Builder.new do |xml|
xml.send("soap:Envelope", "xmlns:xsi" => NS["xsi"],
"xmlns:xsd" => NS["xsd"], "xmlns:soap" => NS["soap"],
"xmlns:t" => NS["t"], "xmlns:m" => NS["m"]) do
xml.send("soap:Header") do
xml.send("t:RequestServerVersion", "Version" => 'Exchange2010_SP1')
end
xml.send("soap:Body") do
xml.send("m:GetRoomLists")
end
end
end
end
end

class Response < Operation::Response
def items
to_xml.xpath(".//m:RoomLists", NS).children.map do |node|
item_klass = Exchanger.const_get(node.name)
item_klass.new_from_xml(node)
end
end
end

end

end
26 changes: 26 additions & 0 deletions spec/exchanger/get_room_lists_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')

describe Exchanger::GetRoomLists do

before do
@response = VCR.use_cassette('get_room_lists') do
Exchanger::GetRoomLists.run(@valid_attributes)
end
@items = @response.items
end

it "should be sucessfull with default values" do
VCR.use_cassette('get_room_lists_default') do
Exchanger::GetRoomLists.run().status.should == 200
end
end

it "should be sucessfull with valid data" do
@response.status.should == 200
end

it "should response have Room items" do
@items.all?{ |i| i.class.name == "Exchanger::Room" }.should be_true
end

end