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