lib/coder_wally/client.rb in coder_wally-0.0.5 vs lib/coder_wally/client.rb in coder_wally-0.0.6

- old
+ new

@@ -1,42 +1,58 @@ -require "open-uri" -require "json" +require 'open-uri' +require 'json' module CoderWally # Client to access the API class Client # The URL of the API we'll use. def api_url - "https://coderwall.com/%s.json" + 'https://coderwall.com/%s.json' end + # Build user URI from username and apii url def uri_for_user username - raise(ArgumentError, "Plesae provide a username") if username.empty? + raise(ArgumentError, 'Please provide a username') if username.empty? URI.parse(api_url % username) end + # Dispatch the request def send_request url begin open(url) rescue OpenURI::HTTPError => error - raise UserNotFoundError, "User not found" if error.io.status[0] == "404" - raise ServerError, "Server error" if error.io.status[0] == "500" + raise UserNotFoundError, 'User not found' if error.io.status[0] == '404' + raise ServerError, 'Server error' if error.io.status[0] == '500' end end + # Get badges for given user and return has collection of `Badge`s def get_badges_for username - json_response = JSON.load(send_request(uri_for_user(username))) - - json_response["badges"].map { |badge| Badge.new(badge) } + coder_wall = build_coder_wall(username) + coder_wall.badges end # Get user details for given user and return a `User` object def get_details_for username - json_response = JSON.load(send_request(uri_for_user(username))) - - User.new(json_response["name"], json_response["username"], - json_response["location"], json_response["team"]) + coder_wall = build_coder_wall(username) + coder_wall.user + end + + # Get all the information available for a given user, returns a `CoderWall` object + def get_everything_for username + build_coder_wall(username) + end + + # Builds a CoderWall object + def build_coder_wall(username) + json_response = JSON.load(send_request(uri_for_user(username))) + + badges = json_response['badges'].map { |badge| Badge.new(badge) } + user = User.new(json_response['name'], json_response['username'], + json_response['location'], json_response['team']) + + CoderWall.new badges, user end end end # Handles user not found exception