lib/ruby-fs-stack/familytree.rb in ruby-fs-stack-0.4.6 vs lib/ruby-fs-stack/familytree.rb in ruby-fs-stack-0.4.7
- old
+ new
@@ -41,10 +41,18 @@
# p.id # => 'KW3B-NNM'
def person(id_or_ids, options = {})
if id_or_ids.kind_of? Array
multiple_ids = true
url = Base + 'person/' + id_or_ids.join(',')
+ props = properties()
+ if id_or_ids.size > props['person.max.ids']
+ persons = []
+ id_or_ids.each_slice(props['person.max.ids']) do |ids_slice|
+ persons = persons + person(ids_slice,options)
+ end
+ return persons
+ end
else
multiple_ids = false
id = id_or_ids.to_s
if id == 'me'
url = Base + 'person'
@@ -257,20 +265,39 @@
url = Base + 'pedigree/' + id
end
end
# url += add_querystring(options)
response = @fs_communicator.get(url)
- familytree = Org::Familysearch::Ws::Familytree::V2::Schema::FamilyTree.from_json JSON.parse(response.body)
+ familytree = parse_response(response)
if multiple_ids
return familytree.pedigrees
else
pedigree = familytree.pedigrees.find{|p| p.requestedId == id }
pedigree ||= familytree.pedigrees.first if id == 'me'
return pedigree
end
end
+ def properties
+ if @properties_hash
+ return @properties_hash
+ else
+ url = Base + 'properties'
+ response = @fs_communicator.get(url)
+ familytree = parse_response(response)
+ @properties_hash = {}
+ familytree.properties.each do |prop|
+ @properties_hash[prop.name] = prop.value.to_i
+ end
+ return @properties_hash
+ end
+ end
+
private
+
+ def parse_response(response)
+ Org::Familysearch::Ws::Familytree::V2::Schema::FamilyTree.from_json JSON.parse(response.body)
+ end
#options will either have a :parent, :child, or :spouse key. We need to find which one
def get_relationship_type(options)
keys = options.keys.collect{|k|k.to_s}
key = keys.find{|k| ['parent','child','spouse'].include? k}
key
\ No newline at end of file