lib/pilha/stack_overflow/answer.rb in pilha-0.1.3 vs lib/pilha/stack_overflow/answer.rb in pilha-0.1.5

- old
+ new

@@ -1,69 +1,46 @@ module StackExchange module StackOverflow - class Answer + class Answer < Base extend Forwardable def_delegators :@struct, :answer_id, :accepted, :answer_comments_url, :question_id, :owner, :creation_date, :last_activity_date, :up_vote_count, :down_vote_count, :view_count, :score, :community_owned, :title, :comments class << self attr_reader :client - def find_by_id(id, options = {}) - options.merge! :id => id - response = client.request('/answers/:id', options) - OpenStruct.new(parse response) + def find(id, options = {}) + request('/answers/:id', id, options).answers.first end def find_by_user_id(id, options = {}) - options.merge! :id => id - response = client.request('/users/:id/answers', options) - OpenStruct.new(parse response) + request('/users/:id/answers', id, options) end - private - def setup_associations!(response, hash) - setup_comments! hash - setup_owner! hash - end + def find_by_question_id(id, options = {}) + request('/questions/:id/answers', id, options) + end - def setup_comments!(hash) - if hash['comments'] - hash['comments'] = hash['comments'].map {|c| Comment.new c } - end - end - - def setup_owner!(hash) - if hash['owner'] - hash['owner'] = User.new(hash['owner']) - end - end - - def setup_answers!(response) - if response['answers'] - response['answers'] = response['answers'].map { |a| Answer.new a } - end - end - + private def parse(response) - response['answers'].each do |answer_hash| - setup_associations!(response, answer_hash) + response['answers'].each do |answer| + parse_with_class(answer, 'comments', Comment) + parse_with_class(answer, 'owner', User) end - setup_answers! response - response + parse_with_class(response, 'answers', Answer) + OpenStruct.new response end end def initialize(hash) @struct = OpenStruct.new hash end def id @struct.answer_id end - end end end