org_lang_stats 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/lib/org_lang_stats.rb +2 -2
- data/lib/org_lang_stats/github_api.rb +9 -8
- data/lib/org_lang_stats/logging.rb +1 -3
- data/lib/org_lang_stats/version.rb +1 -1
- data/org_lang_stats.gemspec +1 -1
- data/rakefile +1 -0
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 53fe4157474401426ba89356318342f53e79c52fb78c60b14ba6357ec13ad9c2
|
4
|
+
data.tar.gz: e8284f96bfa94a47ed3f92e797831f2c405c7971be411304a0dd41b2cff221b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c8401b3738100f34c0b3f71342121198a3c14807fae511f4c5788db084ec197049b4707ec3f8131327fc46c42855376075b3f69c1af6048728d05b6bbc43638
|
7
|
+
data.tar.gz: cced09b97ec6759c0cc007b843b942248eb52bc42347724353845dec481e9724532a48e5dc42b7d8a2e8739f548d358758dcabdd601747550a235b2c2ff4429b
|
data/lib/org_lang_stats.rb
CHANGED
@@ -2,8 +2,8 @@ require 'org_lang_stats/github_api'
|
|
2
2
|
require 'org_lang_stats/thread_pool'
|
3
3
|
|
4
4
|
# This class contains the business logic of the project.
|
5
|
-
# It utilizes components such as the
|
6
|
-
#
|
5
|
+
# It utilizes components such as the Threadpool and the
|
6
|
+
# GithubAPI to put everything together...fast
|
7
7
|
class OrgLangStats
|
8
8
|
def self.proccess(api, org, threads, percent)
|
9
9
|
OrgLangStats.new(api, org).proccess(percent, threads)
|
@@ -3,18 +3,19 @@ require 'rest-client'
|
|
3
3
|
require 'base64'
|
4
4
|
require 'json'
|
5
5
|
|
6
|
+
DEFAULT_SLEEP = 10
|
7
|
+
DEFAULT_PARAMS = { per_page: 100 }
|
8
|
+
MAX_RETRIES = 6
|
9
|
+
|
6
10
|
# This class is a basic GitHub API client library.
|
7
11
|
# The only function that is exposed publically, get_all_pages, will auto-paginate
|
8
12
|
# when needed and if not needeed will just return the hash payload.
|
9
|
-
# Most failures that could happen while calling an
|
13
|
+
# Most failures that could happen while calling an API are also handled here.
|
10
14
|
class GithubApi
|
11
15
|
include Logging
|
12
16
|
|
13
17
|
def initialize(token = nil)
|
14
18
|
@token = token
|
15
|
-
@params = { per_page: 100 }
|
16
|
-
@default_sleep = 10
|
17
|
-
@max_retries = 6
|
18
19
|
end
|
19
20
|
|
20
21
|
def auth_string
|
@@ -42,8 +43,8 @@ class GithubApi
|
|
42
43
|
|
43
44
|
def get_page(url, params = {})
|
44
45
|
begin
|
45
|
-
tries ||=
|
46
|
-
RestClient.get(url, params:
|
46
|
+
tries ||= MAX_RETRIES
|
47
|
+
RestClient.get(url, params: DEFAULT_PARAMS.merge(params), Authorization: auth_string)
|
47
48
|
# Soft error codes
|
48
49
|
rescue RestClient::Forbidden, RestClient::Exceptions::OpenTimeout, Errno::ECONNRESET, SocketError => ex
|
49
50
|
|
@@ -65,8 +66,8 @@ class GithubApi
|
|
65
66
|
|
66
67
|
def sleep_with_msg(ex)
|
67
68
|
logger.debug "An error of type #{ex.class} happened, message is #{ex.message}"
|
68
|
-
logger.debug "Request will be retried in #{
|
69
|
-
sleep
|
69
|
+
logger.debug "Request will be retried in #{DEFAULT_SLEEP} seconds\n"
|
70
|
+
sleep DEFAULT_SLEEP
|
70
71
|
end
|
71
72
|
|
72
73
|
def rate_lim_reached(ex)
|
@@ -5,9 +5,7 @@ module Logging
|
|
5
5
|
def self.logger
|
6
6
|
@logger ||= begin
|
7
7
|
maybe_logger = Logger.new(STDOUT)
|
8
|
-
maybe_logger.formatter = proc
|
9
|
-
"#{severity} - #{datetime.strftime('%H:%M:%S')} - #{msg}\n"
|
10
|
-
end
|
8
|
+
maybe_logger.formatter = proc { |severity, datetime, msg| "#{severity} - #{datetime.strftime('%H:%M:%S')} - #{msg}\n" }
|
11
9
|
maybe_logger.level = Logger::ERROR
|
12
10
|
maybe_logger
|
13
11
|
end
|
data/org_lang_stats.gemspec
CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
|
31
31
|
spec.required_ruby_version = '>= 2.1'
|
32
32
|
spec.add_dependency "rest-client", "~> 2.0"
|
33
|
-
spec.add_development_dependency "rake", "~>
|
33
|
+
spec.add_development_dependency "rake", "~> 12.0"
|
34
34
|
spec.add_development_dependency "minitest", "~> 5.11"
|
35
35
|
spec.add_development_dependency "webmock", "~> 3.3"
|
36
36
|
spec.add_development_dependency "simplecov", "~> 0.15"
|
data/rakefile
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: org_lang_stats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitris Ilias
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '12.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '12.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
140
|
version: '0'
|
141
141
|
requirements: []
|
142
142
|
rubyforge_project:
|
143
|
-
rubygems_version: 2.6
|
143
|
+
rubygems_version: 2.7.6
|
144
144
|
signing_key:
|
145
145
|
specification_version: 4
|
146
146
|
summary: Retrieves language stats from GitHub, for public repositories of an organization
|