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 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