Module: Knowyourgems

Defined in:
lib/knowyourgems.rb,
lib/knowyourgems/version.rb

Constant Summary collapse

VERSION =
"0.1.3"

Class Method Summary collapse

Class Method Details

.gems_api_common(user_handle) ⇒ Object



33
34
35
36
37
38
# 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) ⇒ Object



28
29
30
31
# File 'lib/knowyourgems.rb', line 28

def http_response service
  uri = URI(service)
  response = Net::HTTP.get_response(uri)
end

.last_updated(gem_name) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 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) ⇒ Object



10
11
12
13
14
15
16
17
# 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


56
57
58
59
60
61
62
63
64
# File 'lib/knowyourgems.rb', line 56

def popular_versions gem_name, count = 1
  response, valid = versions_detail gem_name
  if valid
    sort_versions = HashMultiTool.sort_by_order response, ['downloads_count'], "DESC"
    decorate_version_detail sort_versions, count
  else
    response
  end
end

.valid_response?(response) ⇒ Boolean

Returns:

  • (Boolean)


66
67
68
69
70
71
72
73
74
75
76
77
78
79
# 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) ⇒ Object



19
20
21
22
23
24
25
26
# 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