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