lib/ews/soap/builders/ews_builder.rb
def dispatch_field_uri!(uri, ns=NS_EWS_MESSAGES)
      type = uri.keys.first
      vals = uri[type].is_a?(Array) ? uri[type] : [uri[type]]
      case type
      when :field_uRI, :field_uri
        vals.each do |val|
          value = val.is_a?(Hash) ? val[type] : val
          nbuild[ns].FieldURI('FieldURI' => value)
        end
      when :indexed_field_uRI, :indexed_field_uri
        vals.each do |val|
          nbuild[ns].IndexedFieldURI(
            'FieldURI'   => (val[:field_uRI] || val[:field_uri]),
            'FieldIndex' => val[:field_index]
          )
        end
      when :extended_field_uRI, :extended_field_uri
        vals.each do |val|
          nbuild[ns].ExtendedFieldURI {
            nbuild.parent['DistinguishedPropertySetId'] = val[:distinguished_property_set_id] if val[:distinguished_property_set_id]
            nbuild.parent['PropertySetId'] = val[:property_set_id] if val[:property_set_id]
            nbuild.parent['PropertyTag'] = val[:property_tag] if val[:property_tag]
            nbuild.parent['PropertyName'] = val[:property_name] if val[:property_name]
            nbuild.parent['PropertyId'] = val[:property_id] if val[:property_id]
            nbuild.parent['PropertyType'] = val[:property_type] if val[:property_type]
          }
        end
      else
        raise EwsBadArgumentError, "Bad URI type. #{type}"
      end
    end
def dispatch_field_uri!(uri, ns=NS_EWS_MESSAGES)
      type = uri.keys.first
      vals = uri[type].is_a?(Array) ? uri[type] : [uri[type]]
      case type
      when :field_uRI, :field_uri
        vals.each do |val|
          value = val.is_a?(Hash) ? val[type] : val
          nbuild[ns].FieldURI('FieldURI' => value)
        end
      when :indexed_field_uRI, :indexed_field_uri
        vals.each do |val|
          nbuild[ns].IndexedFieldURI(
            'FieldURI'   => (val[:field_uRI] || val[:field_uri]),
            'FieldIndex' => val[:field_index]
          )
        end
      when :extended_field_uRI, :extended_field_uri
        vals.each do |val|
          nbuild[ns].ExtendedFieldURI {
            nbuild.parent['DistinguishedPropertySetId'] = val[:distinguished_property_set_id] if val[:distinguished_property_set_id]
            nbuild.parent['PropertySetId'] = val[:property_set_id] if val[:property_set_id]
            nbuild.parent['PropertyTag'] = val[:property_tag] if val[:property_tag]
            nbuild.parent['PropertyName'] = val[:property_name] if val[:property_name]
            nbuild.parent['PropertyId'] = val[:property_id] if val[:property_id]
            nbuild.parent['PropertyType'] = val[:property_type] if val[:property_type]
          }
        end
      else
        raise EwsBadArgumentError, "Bad URI type. #{type}"
      end
    end
A helper to dispatch to a FieldURI, IndexedFieldURI, or an ExtendedFieldURI
 @todo Implement ExtendedFieldURI