Module: Knowyourgems

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

Constant Summary collapse

VERSION =
"0.1.1"

Class Method Summary collapse

Class Method Details

.gem_api(user_handle) ⇒ Object



49
50
51
# File 'lib/knowyourgems.rb', line 49

def gem_api user_handle
  "https://rubygems.org/api/v1/owners/#{user_handle}/gems.json"
end

.gems_api_common(user_handle) ⇒ Object



31
32
33
34
35
36
# File 'lib/knowyourgems.rb', line 31

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



26
27
28
29
# File 'lib/knowyourgems.rb', line 26

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

.last_updated(gem) ⇒ Object



38
39
40
41
42
43
44
45
46
47
# File 'lib/knowyourgems.rb', line 38

def last_updated gem
  url = versions_api gem
  response = http_response url
  response, valid = valid_response? response
  if valid
    ((DateTime.now - DateTime.parse(response.first['built_at'])).to_i).to_s + ' days'
  else
    response
  end
end

.name_of_your_gems(user_handle) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/knowyourgems.rb', line 8

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) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/knowyourgems.rb', line 57

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

.versions_api(gem) ⇒ Object



53
54
55
# File 'lib/knowyourgems.rb', line 53

def versions_api gem
  "https://rubygems.org/api/v1/versions/#{gem}.json"
end

.your_total_gems(user_handle) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/knowyourgems.rb', line 17

def your_total_gems user_handle
  response, valid = gems_api_common user_handle
  if valid
    response.count
  else
    response
  end
end