org_lang_stats 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5a4cf6bd27b43b55926c9329267482e7ba1d2632
4
- data.tar.gz: 52f1d991751eac4c4201d2fed5424d768d94bceb
2
+ SHA256:
3
+ metadata.gz: 53fe4157474401426ba89356318342f53e79c52fb78c60b14ba6357ec13ad9c2
4
+ data.tar.gz: e8284f96bfa94a47ed3f92e797831f2c405c7971be411304a0dd41b2cff221b3
5
5
  SHA512:
6
- metadata.gz: f2efcd994f0717c49d2ab027be27851bb7f2422ecba0da97393389dfd3612881470d35af077f6bd10055d7588452e4b4d28fff1932b2c9d6e013a02c8203a5bd
7
- data.tar.gz: e4a5fe7e20f732c026d04f5eb4bc7953f4317ea65d479109d06f073c31b50df99f16f97755fdcc1e4010067cb12fed68023acf563050f7c3823a400299a38f36
6
+ metadata.gz: 5c8401b3738100f34c0b3f71342121198a3c14807fae511f4c5788db084ec197049b4707ec3f8131327fc46c42855376075b3f69c1af6048728d05b6bbc43638
7
+ data.tar.gz: cced09b97ec6759c0cc007b843b942248eb52bc42347724353845dec481e9724532a48e5dc42b7d8a2e8739f548d358758dcabdd601747550a235b2c2ff4429b
@@ -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 Logger, the Threadpool
6
- # and the api wrapper to put everything together
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 api are also handled here.
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 ||= @max_retries
46
- RestClient.get(url, params: @params.merge(params), Authorization: auth_string)
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 #{@default_sleep} seconds\n"
69
- sleep @default_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 do |severity, datetime, _, msg|
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
@@ -1,3 +1,3 @@
1
1
  class OrgLangStats
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -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", "~> 10.0"
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
@@ -5,6 +5,7 @@ Rake::TestTask.new(:test) do |t|
5
5
  t.libs << "test"
6
6
  t.libs << "lib"
7
7
  t.test_files = FileList["test/**/*_test.rb"]
8
+ t.ruby_opts = ['-r "./test/test_helper.rb"']
8
9
  end
9
10
 
10
11
  task :default => :test
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.0
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-07 00:00:00.000000000 Z
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: '10.0'
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: '10.0'
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.14
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