lib/coder_wally/client.rb in coder_wally-0.0.7 vs lib/coder_wally/client.rb in coder_wally-0.1.0
- old
+ new
@@ -1,66 +1,34 @@
-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'
+ # Instantiate class
+ def initialize
+ @api = API.new
+ @builder = Builder.new
end
- # Build user URI from username and apii url
- def uri_for_user username
- 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'
- end
- end
-
# Get badges for given user and return has collection of `Badge`s
def get_badges_for username
- coder_wall = build_coder_wall(username)
+ coder_wall = build_coder_wall_from_response(username)
coder_wall.badges
end
# Get user details for given user and return a `User` object
def get_details_for username
- coder_wall = build_coder_wall(username)
+ coder_wall = build_coder_wall_from_response(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)
+ build_coder_wall_from_response(username)
end
# Builds a CoderWall object
- def build_coder_wall(username)
- json_response = JSON.load(send_request(uri_for_user(username)))
+ def build_coder_wall_from_response(username)
+ json_response = @api.fetch(username)
- badges = json_response['badges'].map { |badge| Badge.new(badge) }
- accounts = Account.new(json_response['accounts'])
- user = User.new(json_response['name'], json_response['username'],
- json_response['location'], json_response['team'], json_response['endorsements'])
-
- CoderWall.new badges, user, accounts
+ @builder.build(json_response)
end
end
-end
-
-# Handles user not found exception
-class UserNotFoundError < StandardError
-end
-
-# Handles server exception
-class ServerError < StandardError
end