ghuls-lib 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ghuls/lib.rb +47 -7
  3. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 93492def48a9670b6caff212c59072b83b2a997d
4
- data.tar.gz: 55c789087aac45e5129afb58a3c23d86d30fa5a2
3
+ metadata.gz: 67ca5effd388bccc1045323ba0a05507c566f682
4
+ data.tar.gz: b93f7737533f3ac78d65fa01502d55cee400f7b0
5
5
  SHA512:
6
- metadata.gz: c029fe48c3b090f01281db001e8a9f06ffa81d0d64b6cb03d9290c7b236eb91b3ad82b1cde6f9704c254fe76ec56b5feb42f9c2acbb9190eed4b5e9f016c7ace
7
- data.tar.gz: 260c39163dd22118e2452ad92c5cc7df268102ccbeebce91ef0efcba7fe95d11afdaa0621c79ab8a32fad182fd890c84c8790c49b289a3d3de4c73ed24f90ff5
6
+ metadata.gz: d0057082b97bed7d49c6c6d75a67c9bd351b30430d0b332f6a38f63de3dd7b8a1750a4ebaf3ad6b48ff11fc40271247180c7299cb18da752f14f67592e374f95
7
+ data.tar.gz: 0a138e32b0fdc2eff4486742bfab2acb45684cab1deeba9007ff74bff35b840e2e0eb14277f24a0835dbbb89dd00a786d58e7aaa298fa344bd9aaab61299fef1
@@ -45,6 +45,20 @@ module GHULS
45
45
  true
46
46
  end
47
47
 
48
+ # Gets the username and checks if it exists in the process.
49
+ # @param userid [Fixnum] The user ID.
50
+ # @param github [Octokit::Client] See #user_exists?
51
+ # @return [String] The username
52
+ # @return [Boolean] False if it does not exist.
53
+ def self.get_user_and_check(userid, github)
54
+ begin
55
+ username = github.user(userid)
56
+ rescue Octokit::NotFound
57
+ return false
58
+ end
59
+ username[:login]
60
+ end
61
+
48
62
  # Returns the repos in the user's organizations that they have actually
49
63
  # contributed to.
50
64
  # @param username [String] See #user_exists?
@@ -72,9 +86,9 @@ module GHULS
72
86
  true_repos
73
87
  end
74
88
 
75
- # Gets the langauges and their bytes for the :user.
76
- # @param username [String] The username to get info for.
77
- # @param github [OctoKit::Client] The instance of Octokit::Client.
89
+ # Gets the langauges and their bytes for the user.
90
+ # @param username [String] See #user_exists?
91
+ # @param github [Octokit::Client] See #user_exists?
78
92
  # @return [Hash] The languages and their bytes, as formatted as
79
93
  # { :Ruby => 129890, :CoffeeScript => 5970 }
80
94
  def self.get_user_langs(username, github)
@@ -95,6 +109,10 @@ module GHULS
95
109
  langs
96
110
  end
97
111
 
112
+ # Gets the languages and their bytes for the user's organizations.
113
+ # @param username [String] See #user_exists?
114
+ # @param github [Octokit::Client] See #user_exists?
115
+ # @return [Hash] See #get_user_langs
98
116
  def self.get_org_langs(username, github)
99
117
  org_repos = get_org_repos(username, github)
100
118
  langs = {}
@@ -133,6 +151,10 @@ module GHULS
133
151
  end
134
152
  end
135
153
 
154
+ # Gets the percentages for each language in a hash.
155
+ # @param langs [Hash] The language hash obtained by the get_langs methods.
156
+ # @return [Hash] The language percentages formatted as
157
+ # { Ruby: 50%, CoffeeScript: 50% }
136
158
  def self.get_language_percentages(langs)
137
159
  total = 0
138
160
  langs.each { |_, b| total += b }
@@ -144,6 +166,11 @@ module GHULS
144
166
  lang_percents
145
167
  end
146
168
 
169
+ # Performs the main analysis of the user's organizations.
170
+ # @param username [String] See #user_exists?
171
+ # @param github [Octokit::Client] See #user_exists?
172
+ # @return [Hash] See #get_language_percentages
173
+ # @return [Boolean] False if user_exists? returns false.
147
174
  def self.analyze_orgs(username, github)
148
175
  if user_exists?(username, github)
149
176
  langs = get_org_langs(username, github)
@@ -154,6 +181,11 @@ module GHULS
154
181
  end
155
182
  end
156
183
 
184
+ # Performs the main analysis of the user.
185
+ # @param username [String] See #user_exists?
186
+ # @param github [Octokit::Client] See #user_exists?
187
+ # @return [Hash] See #analyze_orgs
188
+ # @return [Boolean] See #analyze_orgs
157
189
  def self.analyze_user(username, github)
158
190
  if user_exists?(username, github)
159
191
  langs = get_user_langs(username, github)
@@ -165,14 +197,22 @@ module GHULS
165
197
  end
166
198
 
167
199
  using StringUtility
200
+ # Gets a random GitHub user that actually has data to analyze.
201
+ # Must always get a user that exists and has repositories, so it will
202
+ # go through a loop infinitely until it gets one. Uses the GitHub Search
203
+ # to find the maximum number of users, which may not be the best way to do
204
+ # it. However, none of the documented GitHub APIs show that we can get the
205
+ # total number of GitHub users.
206
+ # @param github [Octokit::Client] See #user_exists?
207
+ # @return [String] A random username.
168
208
  def self.get_random_user(github)
169
209
  source = open('https://github.com/search?utf8=%E2%9C%93&q=repos%3A%3E-1' \
170
210
  '&type=Users&ref=searchresults').read
171
- has_repos = false
172
- while has_repos == false
211
+ continue = false
212
+ while continue == false
173
213
  userid = rand(source[/Showing (.*?) available users/, 1].to_i_separated)
174
- user = github.user(userid)[:login]
175
- has_repos = true unless get_user_langs(user, github).empty?
214
+ user = get_user_and_check(userid, github)
215
+ continue = true if user != false && !get_user_langs(user, github).empty?
176
216
  end
177
217
  user
178
218
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ghuls-lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eli Foster
@@ -69,3 +69,4 @@ signing_key:
69
69
  specification_version: 4
70
70
  summary: The library used for and by the GHULS applications.
71
71
  test_files: []
72
+ has_rdoc: