module Knowyourgems

Constants

VERSION

Public Class Methods

gems_api_common(user_handle) click to toggle source
# File lib/knowyourgems.rb, line 33
def gems_api_common user_handle
  url = gem_api user_handle
  response = http_response url
  response, valid = valid_response? response
  return response,valid
end
http_response(service) click to toggle source
# File lib/knowyourgems.rb, line 28
def http_response service
  uri = URI(service)
  response = Net::HTTP.get_response(uri)
end
last_updated(gem_name) click to toggle source
# File lib/knowyourgems.rb, line 40
def last_updated gem_name
  response, valid = versions_detail gem_name
  if valid
    date_diff = (DateTime.now - DateTime.parse(response.first['built_at'])).to_i
    if date_diff < 40
      "Awesome work you updated your gem #{date_diff} days before."
    elsif (40 < date_diff && date_diff < 100)
      "Your gem would like an update, it was updated #{date_diff} days ago."
    elsif date_diff > 100
      "Ohh man your gem is lagging behind. Was last updated #{date_diff} days back."
    end
  else
    response
  end
end
name_of_your_gems(user_handle) click to toggle source
# File lib/knowyourgems.rb, line 10
def name_of_your_gems user_handle
  response, valid = gems_api_common user_handle
  if valid
    response.collect!{|r| r['name']}
  else
    response
  end
end
valid_response?(response) click to toggle source
# File lib/knowyourgems.rb, line 66
def valid_response? response
  case response
    when Net::HTTPSuccess || Net::HTTPOK
      return (JSON.parse response.body), true
    when Net::HTTPNotFound
      {'error' => "#{response.message}: Invalid user handle"}
    when Net::HTTPUnauthorized
      {'error' => "#{response.message}: username and password set and correct?"}
    when Net::HTTPServerError
      {'error' => "#{response.message}: try again later?"}
    else
      {'error' => response.message}
  end
end
your_total_gems(user_handle) click to toggle source
# File lib/knowyourgems.rb, line 19
def your_total_gems user_handle
  response, valid = gems_api_common user_handle
  if valid
    response.count
  else
    response
  end
end

Private Class Methods

decorate_version_detail(versions = [], count = 1) click to toggle source
# File lib/knowyourgems.rb, line 96
def decorate_version_detail versions = [], count = 1
  count = count.to_i
  if (versions.count != 0 || count > 0)
    popular_versions = []
    0.upto(count -1) do |i|
      popular_versions << {
        version: versions[i]['number'],
        authors: versions[i]['authors'],
        created_at: versions[i]['built_at'],
        downloads_count: versions[i]['downloads_count']
      } unless versions[i].nil?
    end
    popular_versions
  else
    []
  end
end
gem_api(user_handle) click to toggle source
# File lib/knowyourgems.rb, line 88
def gem_api user_handle
  "https://rubygems.org/api/v1/owners/#{user_handle}/gems.json"
end
versions_api(gem_name) click to toggle source
# File lib/knowyourgems.rb, line 92
def versions_api gem_name
  "https://rubygems.org/api/v1/versions/#{gem_name}.json"
end
versions_detail(gem_name) click to toggle source
# File lib/knowyourgems.rb, line 82
def versions_detail gem_name
  url = versions_api gem_name
  response = http_response url
  return valid_response? response
end