def get_folder(opts)
      opts = opts.clone
      [:folder_ids, :folder_shape].each do |k|
        validate_param(opts, k, true)
      end
      validate_param(opts[:folder_shape], :base_shape, true)
      req = build_soap! do |type, builder|
        if(type == :header)
        else
          builder.nbuild.GetFolder {
            builder.nbuild.parent.default_namespace = @default_ns
            builder.folder_shape!(opts[:folder_shape])
            builder.folder_ids!(opts[:folder_ids], opts[:act_as])
          }
        end
      end
      do_soap_request(req)
    end
def get_folder(opts)
      opts = opts.clone
      [:folder_ids, :folder_shape].each do |k|
        validate_param(opts, k, true)
      end
      validate_param(opts[:folder_shape], :base_shape, true)
      req = build_soap! do |type, builder|
        if(type == :header)
        else
          builder.nbuild.GetFolder {
            builder.nbuild.parent.default_namespace = @default_ns
            builder.folder_shape!(opts[:folder_shape])
            builder.folder_ids!(opts[:folder_ids], opts[:act_as])
          }
        end
      end
      do_soap_request(req)
    end
Gets folders from the Exchange store
 @see http://msdn.microsoft.com/en-us/library/aa580274.aspx

 @param [Hash] opts
 @option opts [Array<Hash>] :folder_ids An array of folder_ids in the form:
   [ {:id => 'myfolderID##asdfs', :change_key => 'asdfasdf'},
     {:id => :msgfolderroot} ]
 @option opts [Hash] :folder_shape defines the FolderShape node
 @option folder_shape [String] :base_shape IdOnly/Default/AllProperties
 @option folder_shape :additional_properties
 @option opts [String,nil] :act_as User to act on behalf as. This user must
   have been given delegate access to this folder or else this operation
   will fail.
 @example
   { :folder_ids   => [{:id => :msgfolderroot}],
     :folder_shape => {:base_shape => 'Default'} }