class RubyStackoverflow::Client::User
Attributes
answers[R]
badges[R]
comments[R]
permissions[R]
posts[R]
questions[R]
reputations[R]
suggested_edits[R]
Public Class Methods
new(attributes_hash)
click to toggle source
Calls superclass method
RubyStackoverflow::Client::Resource::new
# File lib/ruby-stackoverflow/client/resource/user.rb, line 8 def initialize(attributes_hash) @badges = [] @answers = [] @comments = [] @questions = [] @reputations = [] @suggested_edits=[] @tags = [] @posts = [] @permissions = [] super end
parse_data(data)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 22 def parse_data(data) users = [] data.each do|attr_hash| if data_has_badge?(attr_hash) user = create_user(attr_hash, users, :user) user.badges.push(Badge.new(attr_hash)) elsif data_has_answer?(attr_hash) user = create_user(attr_hash, users) user.answers.push(Answer.new(attr_hash)) elsif data_has_comment?(attr_hash) user = create_user(attr_hash, users) user.comments.push(Comment.new(attr_hash)) elsif data_has_question?(attr_hash) user = create_user(attr_hash, users) user.questions.push(Question.new(attr_hash)) elsif data_has_reputation?(attr_hash) user = create_user(attr_hash, users, :user_id) user.reputations.push(Reputation.new(attr_hash)) elsif data_has_suggested_edit?(attr_hash) user = create_user(attr_hash, users, :proposing_user) user.suggested_edits.push(SuggestedEdit.new(attr_hash)) elsif data_has_tag_name?(attr_hash) user = create_user(attr_hash, users, :user_id) user.tags.push(Tag.new(attr_hash)) elsif data_has_timeline?(attr_hash) user = create_user(attr_hash, users, :user_id) user.posts.push(Post.new(attr_hash)) elsif data_has_permission_object?(attr_hash) user = create_user(attr_hash, users, :user_id) user.permissions.push(Permission.new(attr_hash)) elsif data_has_notification?(attr_hash) users << Notification.new(attr_hash) else users << new(attr_hash) end end users end
Private Class Methods
create_user(attr_hash, users, hash_key=:owner)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 68 def create_user(attr_hash, users, hash_key=:owner) user_attr = attr_hash.delete(hash_key) user_attr = user_attr.is_a?(Hash) ? user_attr : {user_id: user_attr } user = find_or_create_user(users, user_attr) users << user unless user_exists?(users, user_attr[:user_id]) user end
data_has_answer?(data)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 85 def data_has_answer?(data) data.include?(:answer_id) end
data_has_badge?(data)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 81 def data_has_badge?(data) data.include?(:badge_id) end
data_has_comment?(data)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 88 def data_has_comment?(data) data.include?(:comment_id) && !data.include?(:timeline_type) end
data_has_notification?(data)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 119 def data_has_notification?(data) data.include?(:notification_type) end
data_has_permission_object?(data)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 115 def data_has_permission_object?(data) data.include?(:object_type) end
data_has_question?(data)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 92 def data_has_question?(data) data.include?(:question_id) end
data_has_reputation?(data)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 96 def data_has_reputation?(data) data.include?(:reputation_change) end
data_has_suggested_edit?(data)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 100 def data_has_suggested_edit?(data) data.include?(:suggested_edit_id) end
data_has_tag_name?(data)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 104 def data_has_tag_name?(data) data.include?(:name) || data_has_tag_score?(data) end
data_has_tag_score?(data)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 108 def data_has_tag_score?(data) data.include?(:tag_name) && data.include?(:answer_score) end
data_has_timeline?(data)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 111 def data_has_timeline?(data) data.include?(:timeline_type) end
find_or_create_user(users, user_attr)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 63 def find_or_create_user(users, user_attr) user_array = users.select{|u|u.user_id == user_attr[:user_id] } !user_array.empty? ? user_array.first : new(user_attr) end
user_exists?(users, user_id)
click to toggle source
# File lib/ruby-stackoverflow/client/resource/user.rb, line 76 def user_exists?(users, user_id) user_array = users.select{|u|u.user_id == user_id } !user_array.empty? end