hubba 0.5.0 → 0.5.1

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
2
  SHA1:
3
- metadata.gz: 319b35fe1bf80f076adbd6a784a85e6e688aa8a4
4
- data.tar.gz: 1382ba38baefab59976acd68e5e1f1d3dec6de17
3
+ metadata.gz: 84577f7d76ee6b6e2b0c1dd2c747536bede539fe
4
+ data.tar.gz: 9f42b72e4402d148eaccbfd635f316161a50a857
5
5
  SHA512:
6
- metadata.gz: 791b9e53b4f3efcc0f866e76cbcf18e253be680c1656eaa358343e5f39fad7002a4a0e4a07103f395f6741e3e36f27117c2de199d3d6f3eb35ef584a5ddfe099
7
- data.tar.gz: 6ef11031170d0300efd81c5213a996ec09a65b458328ab178825062c4ce07cf8e9a9b594ec58bc8d0078e748e4208bb98793b3e67e75456acdc8d2af7caa99e3
6
+ metadata.gz: 94e26559d4d814411a5537f879f58132c906ef7a3b2f7a61cc8f83d0e5f282b143d68f37a5462e5aef5e25daa86072b40e94c1b5177ab57023b80260f503b054
7
+ data.tar.gz: b9f03dba1f8861edbec94fb3411b2383dc1e12744387b9c6480b43a75ee6fa7331b57d81199a084cec742f0b35abf09167409d0328fd00a7da4fe3f15343a167
File without changes
@@ -1,4 +1,4 @@
1
- HISTORY.md
1
+ CHANGELOG.md
2
2
  Manifest.txt
3
3
  README.md
4
4
  Rakefile
data/README.md CHANGED
@@ -1,20 +1,20 @@
1
- # hubba
2
-
3
- hubba gem - (yet) another (lite) GitHub HTTP API client / library
4
-
5
- * home :: [github.com/gittiscripts/hubba](https://github.com/gittiscripts/hubba)
6
- * bugs :: [github.com/gittiscripts/hubba/issues](https://github.com/gittiscripts/hubba/issues)
7
- * gem :: [rubygems.org/gems/hubba](https://rubygems.org/gems/hubba)
8
- * rdoc :: [rubydoc.info/gems/hubba](http://rubydoc.info/gems/hubba)
9
-
10
-
11
- ## Usage
12
-
13
- TBD
14
-
15
-
16
-
17
- ## License
18
-
19
- The `hubba` scripts are dedicated to the public domain.
20
- Use it as you please with no restrictions whatsoever.
1
+ # hubba
2
+
3
+ hubba gem - (yet) another (lite) GitHub HTTP API client / library
4
+
5
+ * home :: [github.com/rubycoco/git](https://github.com/rubycoco/git)
6
+ * bugs :: [github.com/rubycoco/git/issues](https://github.com/rubycoco/git/issues)
7
+ * gem :: [rubygems.org/gems/hubba](https://rubygems.org/gems/hubba)
8
+ * rdoc :: [rubydoc.info/gems/hubba](http://rubydoc.info/gems/hubba)
9
+
10
+
11
+ ## Usage
12
+
13
+ TBD
14
+
15
+
16
+
17
+ ## License
18
+
19
+ The `hubba` scripts are dedicated to the public domain.
20
+ Use it as you please with no restrictions whatsoever.
data/Rakefile CHANGED
@@ -8,23 +8,23 @@ Hoe.spec 'hubba' do
8
8
  self.summary = 'hubba - (yet) another (lite) GitHub HTTP API client / library'
9
9
  self.description = summary
10
10
 
11
- self.urls = ['https://github.com/gittiscripts/hubba']
11
+ self.urls = { home: 'https://github.com/rubycoco/git' }
12
12
 
13
13
  self.author = 'Gerald Bauer'
14
14
  self.email = 'ruby-talk@ruby-lang.org'
15
15
 
16
16
  # switch extension to .markdown for gihub formatting
17
17
  self.readme_file = 'README.md'
18
- self.history_file = 'HISTORY.md'
18
+ self.history_file = 'CHANGELOG.md'
19
19
 
20
20
  self.extra_deps = [
21
- ['logutils' ],
21
+ ['webclient', '>= 0.1.1']
22
22
  ]
23
23
 
24
24
  self.licenses = ['Public Domain']
25
25
 
26
26
  self.spec_extras = {
27
- required_ruby_version: '>= 2.3'
27
+ required_ruby_version: '>= 2.2.2'
28
28
  }
29
29
 
30
30
  end
@@ -1,17 +1,5 @@
1
- # encoding: utf-8
2
-
3
- require 'net/http'
4
- require "net/https"
5
- require 'uri'
6
-
7
- require 'pp'
8
- require 'json'
9
- require 'yaml'
10
- require 'time'
11
-
12
-
13
- # 3rd party gems/libs
14
- require 'logutils'
1
+ # 3rd party (our own)
2
+ require 'webclient'
15
3
 
16
4
  # our own code
17
5
  require 'hubba/version' # note: let version always go first
@@ -22,4 +10,4 @@ require 'hubba/stats'
22
10
 
23
11
 
24
12
  # say hello
25
- puts Hubba.banner if defined?($RUBYLIBS_DEBUG)
13
+ puts Hubba.banner if defined?($RUBYCOCO_DEBUG)
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Hubba
4
2
 
5
3
  class Cache ## lets you work with GitHub api "offline" using just a local cache of stored json
@@ -14,7 +12,7 @@ class Cache ## lets you work with GitHub api "offline" using just a local ca
14
12
  basename = request_uri_to_basename( request_uri )
15
13
  path = "#{@dir}/#{basename}.json"
16
14
  if File.exist?( path )
17
- text = File.read( path ) ## todo/fix: use File.read_utf8
15
+ text = File.open( path, 'r:utf-8') { |f| f.read }
18
16
  json = JSON.parse( text )
19
17
  json
20
18
  else
@@ -32,8 +30,8 @@ class Cache ## lets you work with GitHub api "offline" using just a local ca
32
30
  data = obj # assume Hash or Array -- todo: add support for String - why? why not??
33
31
  end
34
32
 
35
- File.open( path, 'w' ) do |f|
36
- f.write JSON.pretty_generate( data )
33
+ File.open( path, 'w:utf-8' ) do |f|
34
+ f.write( JSON.pretty_generate( data ))
37
35
  end
38
36
  end
39
37
 
@@ -42,6 +40,7 @@ class Cache ## lets you work with GitHub api "offline" using just a local ca
42
40
  ## 1) cut off leading /
43
41
  ## 2) convert / to ~
44
42
  ## 3) remove (optional) query string (for now) - why? why not?
43
+ ## e.g. /users/#{name}/orgs?per_page=100 or such
45
44
  ##
46
45
  ## e.g.
47
46
  ## '/users/geraldb' => 'users~geraldb',
@@ -1,53 +1,76 @@
1
- # encoding: utf-8
2
-
3
1
  module Hubba
4
2
 
5
3
 
6
4
  class Client
7
5
 
8
- def initialize( user: nil, password: nil )
9
- uri = URI.parse( "https://api.github.com" )
10
- @http = Net::HTTP.new(uri.host, uri.port)
11
- @http.use_ssl = true
12
- @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
6
+ BASE_URL = 'https://api.github.com'
7
+
8
+
9
+ def initialize( token: nil,
10
+ user: nil, password: nil )
11
+ ## add support for (personal access) token
12
+ @token = token
13
13
 
14
14
  ## add support for basic auth - defaults to no auth (nil/nil)
15
+ ## remove - deprecated (use token) - why? why not?
15
16
  @user = user ## use login like Oktokit - why? why not?
16
17
  @password = password
17
18
  end # method initialize
18
19
 
20
+
21
+
19
22
  def get( request_uri )
23
+ ###
24
+ # e.g. /users/geraldb
25
+ # /users/geraldb/repos
26
+
20
27
  puts "GET #{request_uri}"
28
+ url = "#{BASE_URL}/#{request_uri}"
21
29
 
22
- req = Net::HTTP::Get.new( request_uri )
23
- ## req = Net::HTTP::Get.new( "/users/geraldb" )
24
- ## req = Net::HTTP::Get.new( "/users/geraldb/repos" )
25
- req["User-Agent"] = "ruby/hubba" ## required by GitHub API
26
- req["Accept" ] = "application/vnd.github.v3+json" ## recommend by GitHub API
30
+ headers = {}
31
+ headers['User-Agent'] = 'ruby/hubba' ## required by GitHub API
32
+ headers['Accept'] = 'application/vnd.github.v3+json' ## recommend by GitHub API
27
33
 
34
+ auth = []
28
35
  ## check if credentials (user/password) present - if yes, use basic auth
29
- if @user && @password
36
+ if @token
37
+ puts " using (personal access) token - starting with: #{@token[0..6]}**********"
38
+ headers['Authorization'] = "token #{@token}"
39
+ ## token works like:
40
+ ## curl -H 'Authorization: token my_access_token' https://api.github.com/user/repos
41
+ elsif @user && @password
30
42
  puts " using basic auth - user: #{@user}, password: ***"
31
- req.basic_auth( @user, @password )
43
+ ## use credential auth "tuple" (that is, array with two string items) for now
44
+ ## or use Webclient::HttpBasicAuth or something - why? why not?
45
+ auth = [@user, @password]
46
+ # req.basic_auth( @user, @password )
47
+ else
48
+ puts " using no credentials (no token, no user/password)"
32
49
  end
33
50
 
34
- res = @http.request(req)
51
+ res = Webclient.get( url,
52
+ headers: headers,
53
+ auth: auth )
35
54
 
36
55
  # Get specific header
37
56
  # response["content-type"]
38
57
  # => "text/html; charset=UTF-8"
39
58
 
40
59
  # Iterate all response headers.
41
- res.each_header do |key, value|
42
- p "#{key} => #{value}"
60
+ res.headers.each do |key, value|
61
+ puts "#{key} => #{value}"
43
62
  end
44
63
  # => "location => http://www.google.com/"
45
64
  # => "content-type => text/html; charset=UTF-8"
46
65
  # ...
47
66
 
48
- json = JSON.parse( res.body )
49
- ## pp json
50
- json
67
+ if res.status.ok?
68
+ res.json
69
+ else
70
+ puts "!! HTTP ERROR: #{res.status.code} #{res.status.message}:"
71
+ pp res.raw
72
+ exit 1
73
+ end
51
74
  end # methdo get
52
75
 
53
76
  end ## class Client
@@ -1,13 +1,15 @@
1
- # encoding: utf-8
2
-
3
1
  module Hubba
4
2
 
5
3
  class Configuration
4
+ attr_accessor :token
5
+
6
6
  attr_accessor :user
7
7
  attr_accessor :password
8
8
 
9
9
  def initialize
10
10
  # try default setup via ENV variables
11
+ @token = ENV[ 'HUBBA_TOKEN' ]
12
+
11
13
  @user = ENV[ 'HUBBA_USER' ] ## use HUBBA_LOGIN - why? why not?
12
14
  @password = ENV[ 'HUBBA_PASSWORD' ]
13
15
  end
@@ -15,6 +17,8 @@ end
15
17
 
16
18
  ## lets you use
17
19
  ## Hubba.configure do |config|
20
+ ## config.token = 'secret'
21
+ ## #-or-
18
22
  ## config.user = 'testdada'
19
23
  ## config.password = 'secret'
20
24
  ## end
@@ -61,8 +65,16 @@ class Github
61
65
 
62
66
  def initialize( cache_dir: './cache' )
63
67
  @cache = Cache.new( cache_dir )
64
- @client = Client.new( user: Hubba.configuration.user,
65
- password: Hubba.configuration.password )
68
+
69
+ @client = if Hubba.configuration.token
70
+ Client.new( token: Hubba.configuration.token )
71
+ elsif Hubba.configuration.user &&
72
+ Hubba.configuration.password
73
+ Client.new( user: Hubba.configuration.user,
74
+ password: Hubba.configuration.password )
75
+ else
76
+ Client.new
77
+ end
66
78
 
67
79
  @offline = false
68
80
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Hubba
4
2
 
5
3
  ####
@@ -1,9 +1,7 @@
1
- # encoding: utf-8
2
-
3
1
  module Hubba
4
2
  MAJOR = 0 ## todo: namespace inside version or something - why? why not??
5
3
  MINOR = 5
6
- PATCH = 0
4
+ PATCH = 1
7
5
  VERSION = [MAJOR,MINOR,PATCH].join('.')
8
6
 
9
7
  def self.version
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  # minitest setup
4
2
  require 'minitest/autorun'
5
3
 
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  ###
4
2
  # to run use
5
3
  # ruby -I ./lib -I ./test test/test_cache.rb
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  ###
4
2
  # to run use
5
3
  # ruby -I ./lib -I ./test test/test_config.rb
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  ###
4
2
  # to run use
5
3
  # ruby -I ./lib -I ./test test/test_stats.rb
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  ###
4
2
  # to run use
5
3
  # ruby -I ./lib -I ./test test/test_stats_tmp.rb
@@ -16,14 +14,14 @@ class TestStatsTmp < MiniTest::Test
16
14
 
17
15
  def test_stats
18
16
  repos = [
19
- 'henrythemes/jekyll-starter-theme',
20
17
  'poole/hyde',
21
18
  'jekyll/minima'
22
19
  ]
23
20
 
24
21
  repos.each do |repo|
25
22
  stats = Hubba::Stats.new( repo )
26
- stats.read( data_dir: './tmp' )
23
+ # stats.read( data_dir: './tmp' )
24
+ stats.read( data_dir: "#{Hubba.root}/test/stats" )
27
25
 
28
26
  puts "stars before fetch: #{stats.stars}"
29
27
  puts "size before fetch: #{stats.size} kb"
metadata CHANGED
@@ -1,67 +1,73 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hubba
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-24 00:00:00.000000000 Z
11
+ date: 2020-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: logutils
14
+ name: webclient
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.1.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 0.1.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rdoc
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '4.0'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '7'
34
37
  type: :development
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - "~>"
41
+ - - ">="
39
42
  - !ruby/object:Gem::Version
40
43
  version: '4.0'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '7'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: hoe
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '3.16'
53
+ version: '3.22'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: '3.16'
60
+ version: '3.22'
55
61
  description: hubba - (yet) another (lite) GitHub HTTP API client / library
56
62
  email: ruby-talk@ruby-lang.org
57
63
  executables: []
58
64
  extensions: []
59
65
  extra_rdoc_files:
60
- - HISTORY.md
66
+ - CHANGELOG.md
61
67
  - Manifest.txt
62
68
  - README.md
63
69
  files:
64
- - HISTORY.md
70
+ - CHANGELOG.md
65
71
  - Manifest.txt
66
72
  - README.md
67
73
  - Rakefile
@@ -82,7 +88,7 @@ files:
82
88
  - test/test_config.rb
83
89
  - test/test_stats.rb
84
90
  - test/test_stats_tmp.rb
85
- homepage: https://github.com/gittiscripts/hubba
91
+ homepage: https://github.com/rubycoco/git
86
92
  licenses:
87
93
  - Public Domain
88
94
  metadata: {}
@@ -96,7 +102,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
96
102
  requirements:
97
103
  - - ">="
98
104
  - !ruby/object:Gem::Version
99
- version: '2.3'
105
+ version: 2.2.2
100
106
  required_rubygems_version: !ruby/object:Gem::Requirement
101
107
  requirements:
102
108
  - - ">="