hubba 0.5.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,47 @@
1
+ module Hubba
2
+
3
+ def self.update_stats( hash_or_path='./repos.yml' ) ## move to reposet e.g. Reposet#update_status!!!!
4
+ h = if hash_or_path.is_a?( String ) ## assume it is a file path!!!
5
+ path = hash_or_path
6
+ YAML.load_file( path )
7
+ else
8
+ hash_or_path # assume its a hash / reposet already!!!
9
+ end
10
+
11
+ gh = Github.new
12
+
13
+ h.each do |org_with_counter,names|
14
+
15
+ ## remove optional number from key e.g.
16
+ ## mrhydescripts (3) => mrhydescripts
17
+ ## footballjs (4) => footballjs
18
+ ## etc.
19
+ org = org_with_counter.sub( /\([0-9]+\)/, '' ).strip
20
+
21
+ ## puts " -- #{key_with_counter} [#{key}] --"
22
+
23
+ names.each do |name|
24
+ full_name = "#{org}/#{name}"
25
+
26
+ ## puts " fetching stats #{count+1}/#{repo_count} - >#{full_name}<..."
27
+ stats = Stats.new( full_name )
28
+ stats.read
29
+
30
+ puts "update >#{full_name}< [1/4] - fetching repo..."
31
+ repo = gh.repo( full_name )
32
+ puts "update >#{full_name}< [2/4] - fetching repo commits ..."
33
+ commits = gh.repo_commits( full_name )
34
+ puts "update >#{full_name}< [3/4] - fetching repo topics ..."
35
+ topics = gh.repo_topics( full_name )
36
+ puts "update >#{full_name}< [4/4] - fetching repo languages ..."
37
+ languages = gh.repo_languages( full_name )
38
+
39
+ stats.update( repo,
40
+ commits: commits,
41
+ topics: topics,
42
+ languages: languages )
43
+ stats.write
44
+ end
45
+ end
46
+ end
47
+ end # module Hubba
@@ -0,0 +1,52 @@
1
+ module Hubba
2
+
3
+
4
+ ###
5
+ ## note: keep update traffic separate from update (basic) stats
6
+ ## traffic stats require (personal access) token with push access!!
7
+
8
+ def self.update_traffic( hash_or_path='./repos.yml' ) ## move to reposet e.g. Reposet#update_status!!!!
9
+ h = if hash_or_path.is_a?( String ) ## assume it is a file path!!!
10
+ path = hash_or_path
11
+ YAML.load_file( path )
12
+ else
13
+ hash_or_path # assume its a hash / reposet already!!!
14
+ end
15
+
16
+ gh = Github.new
17
+
18
+ h.each do |org_with_counter,names|
19
+
20
+ ## remove optional number from key e.g.
21
+ ## mrhydescripts (3) => mrhydescripts
22
+ ## footballjs (4) => footballjs
23
+ ## etc.
24
+ org = org_with_counter.sub( /\([0-9]+\)/, '' ).strip
25
+
26
+ ## puts " -- #{key_with_counter} [#{key}] --"
27
+
28
+ names.each do |name|
29
+ full_name = "#{org}/#{name}"
30
+
31
+ ## puts " fetching stats #{count+1}/#{repo_count} - >#{full_name}<..."
32
+ stats = Stats.new( full_name )
33
+ stats.read
34
+
35
+ puts "update >#{full_name}< [1/4] - fetching repo traffic clones..."
36
+ clones = gh.repo_traffic_clones( full_name )
37
+ puts "update >#{full_name}< [2/4] - fetching repo traffic views..."
38
+ views = gh.repo_traffic_views( full_name )
39
+ puts "update >#{full_name}< [3/4] - fetching repo traffic popular paths..."
40
+ paths = gh.repo_traffic_popular_paths( full_name )
41
+ puts "update >#{full_name}< [4/4] - fetching repo traffic popular referrers..."
42
+ referrers = gh.repo_traffic_popular_referrers( full_name )
43
+
44
+ stats.update_traffic( clones: clones,
45
+ views: views,
46
+ paths: paths,
47
+ referrers: referrers )
48
+ stats.write
49
+ end
50
+ end
51
+ end
52
+ end # module Hubba
@@ -1,7 +1,7 @@
1
1
  module Hubba
2
- MAJOR = 0 ## todo: namespace inside version or something - why? why not??
3
- MINOR = 5
4
- PATCH = 2
2
+ MAJOR = 1 ## todo: namespace inside version or something - why? why not??
3
+ MINOR = 0
4
+ PATCH = 0
5
5
  VERSION = [MAJOR,MINOR,PATCH].join('.')
6
6
 
7
7
  def self.version
@@ -12,10 +12,20 @@ class TestConfig < MiniTest::Test
12
12
  Hubba.configure do |config|
13
13
  config.user = 'user1'
14
14
  config.password = 'password1'
15
+ # -or-
16
+ config.token = 'token1'
15
17
  end
16
18
 
17
19
  assert_equal 'user1', Hubba.configuration.user
18
20
  assert_equal 'password1', Hubba.configuration.password
21
+ assert_equal 'token1', Hubba.configuration.token
22
+
23
+ assert_equal 'user1', Hubba.config.user
24
+ assert_equal 'password1', Hubba.config.password
25
+ assert_equal 'token1', Hubba.config.token
26
+
27
+ assert_equal './data', Hubba.configuration.data_dir
28
+ assert_equal './data', Hubba.config.data_dir
19
29
  end
20
30
 
21
31
  end # class TestConfig
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hubba
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-07 00:00:00.000000000 Z
11
+ date: 2020-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: webclient
@@ -72,22 +72,15 @@ files:
72
72
  - README.md
73
73
  - Rakefile
74
74
  - lib/hubba.rb
75
- - lib/hubba/cache.rb
76
- - lib/hubba/client.rb
75
+ - lib/hubba/config.rb
77
76
  - lib/hubba/github.rb
77
+ - lib/hubba/reposet.rb
78
78
  - lib/hubba/stats.rb
79
+ - lib/hubba/update.rb
80
+ - lib/hubba/update_traffic.rb
79
81
  - lib/hubba/version.rb
80
- - test/cache/users~geraldb~orgs.json
81
- - test/cache/users~geraldb~repos.json
82
82
  - test/helper.rb
83
- - test/stats/jekyll~minima.json
84
- - test/stats/openblockchains~awesome-blockchains.json
85
- - test/stats/opendatajson~factbook.json.json
86
- - test/stats/poole~hyde.json
87
- - test/test_cache.rb
88
83
  - test/test_config.rb
89
- - test/test_stats.rb
90
- - test/test_stats_tmp.rb
91
84
  homepage: https://github.com/rubycoco/git
92
85
  licenses:
93
86
  - Public Domain
@@ -1,61 +0,0 @@
1
- module Hubba
2
-
3
- class Cache ## lets you work with GitHub api "offline" using just a local cache of stored json
4
-
5
- def initialize( dir )
6
- @dir = dir
7
- end
8
-
9
- ## fix/todo: cut of query string e.g. ?per_page=100 why? why not?
10
- def get( request_uri )
11
- ## check if request_uri exists in local cache
12
- basename = request_uri_to_basename( request_uri )
13
- path = "#{@dir}/#{basename}.json"
14
- if File.exist?( path )
15
- text = File.open( path, 'r:utf-8') { |f| f.read }
16
- json = JSON.parse( text )
17
- json
18
- else
19
- nil ## todo/fix: raise exception - why? why not??
20
- end
21
- end
22
-
23
- def put( request_uri, obj )
24
- basename = request_uri_to_basename( request_uri )
25
- path = "#{@dir}/#{basename}.json"
26
-
27
- if obj.is_a?( Resource ) ## note: for convenience support Resource obj too
28
- data = obj.data
29
- else
30
- data = obj # assume Hash or Array -- todo: add support for String - why? why not??
31
- end
32
-
33
- File.open( path, 'w:utf-8' ) do |f|
34
- f.write( JSON.pretty_generate( data ))
35
- end
36
- end
37
-
38
-
39
- def request_uri_to_basename( request_uri )
40
- ## 1) cut off leading /
41
- ## 2) convert / to ~
42
- ## 3) remove (optional) query string (for now) - why? why not?
43
- ## e.g. /users/#{name}/orgs?per_page=100 or such
44
- ##
45
- ## e.g.
46
- ## '/users/geraldb' => 'users~geraldb',
47
- ## '/users/geraldb/repos' => 'users~geraldb~repos',
48
- ## '/users/geraldb/orgs' => 'users~geraldb~orgs',
49
- ## '/orgs/wikiscript/repos' => 'orgs~wikiscript~repos',
50
- ## '/orgs/planetjekyll/repos' => 'orgs~planetjekyll~repos',
51
- ## '/orgs/vienna-rb/repos' => 'orgs~vienna~rb.repos',
52
-
53
- basename = request_uri[1..-1]
54
- basename = basename.gsub( '/', '~')
55
- basename = basename.sub( /\?.*\z/, '' ) ## note: must escape ? (use \z for $)
56
- basename
57
- end
58
-
59
- end ## class Cache
60
-
61
- end ## module Hubba
@@ -1,82 +0,0 @@
1
- module Hubba
2
-
3
-
4
- class Client
5
-
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
-
14
- ## add support for basic auth - defaults to no auth (nil/nil)
15
- ## remove - deprecated (use token) - why? why not?
16
- @user = user ## use login like Oktokit - why? why not?
17
- @password = password
18
- end # method initialize
19
-
20
-
21
-
22
- def get( request_uri )
23
- puts "GET #{request_uri}"
24
-
25
- ## note: request_uri ALWAYS starts with leading /, thus use + for now!!!
26
- # e.g. /users/geraldb
27
- # /users/geraldb/repos
28
- url = BASE_URL + request_uri
29
-
30
- headers = {}
31
- headers['User-Agent'] = 'ruby/hubba' ## required by GitHub API
32
- headers['Accept'] = 'application/vnd.github.v3+json' ## recommend by GitHub API
33
-
34
- auth = []
35
- ## check if credentials (user/password) present - if yes, use basic auth
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
42
- puts " using basic auth - user: #{@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)"
49
- end
50
-
51
- res = Webclient.get( url,
52
- headers: headers,
53
- auth: auth )
54
-
55
- # Get specific header
56
- # response["content-type"]
57
- # => "text/html; charset=UTF-8"
58
-
59
- # Iterate all response headers.
60
- puts "HTTP HEADERS:"
61
- res.headers.each do |key, value|
62
- puts " #{key}: >#{value}<"
63
- end
64
- puts
65
-
66
- # => "location => http://www.google.com/"
67
- # => "content-type => text/html; charset=UTF-8"
68
- # ...
69
-
70
- if res.status.ok?
71
- res.json
72
- else
73
- puts "!! HTTP ERROR: #{res.status.code} #{res.status.message}:"
74
- pp res.raw
75
- exit 1
76
- end
77
- end # methdo get
78
-
79
- end ## class Client
80
-
81
-
82
- end # module Hubba
@@ -1,46 +0,0 @@
1
- [
2
- {
3
- "login": "vienna-rb",
4
- "id": 3541331,
5
- "url": "https://api.github.com/orgs/vienna-rb",
6
- "repos_url": "https://api.github.com/orgs/vienna-rb/repos",
7
- "events_url": "https://api.github.com/orgs/vienna-rb/events",
8
- "members_url": "https://api.github.com/orgs/vienna-rb/members{/member}",
9
- "public_members_url": "https://api.github.com/orgs/vienna-rb/public_members{/member}",
10
- "avatar_url": "https://avatars.githubusercontent.com/u/3541331?v=3",
11
- "description": null
12
- },
13
- {
14
- "login": "openbeer",
15
- "id": 4464191,
16
- "url": "https://api.github.com/orgs/openbeer",
17
- "repos_url": "https://api.github.com/orgs/openbeer/repos",
18
- "events_url": "https://api.github.com/orgs/openbeer/events",
19
- "members_url": "https://api.github.com/orgs/openbeer/members{/member}",
20
- "public_members_url": "https://api.github.com/orgs/openbeer/public_members{/member}",
21
- "avatar_url": "https://avatars.githubusercontent.com/u/4464191?v=3",
22
- "description": "Open Public Domain Beer, Brewery n Brewpub Data - Incl. The Free World Beer Book"
23
- },
24
- {
25
- "login": "slideshow-s9",
26
- "id": 4464373,
27
- "url": "https://api.github.com/orgs/slideshow-s9",
28
- "repos_url": "https://api.github.com/orgs/slideshow-s9/repos",
29
- "events_url": "https://api.github.com/orgs/slideshow-s9/events",
30
- "members_url": "https://api.github.com/orgs/slideshow-s9/members{/member}",
31
- "public_members_url": "https://api.github.com/orgs/slideshow-s9/public_members{/member}",
32
- "avatar_url": "https://avatars.githubusercontent.com/u/4464373?v=3",
33
- "description": "Free Web Alternative to PowerPoint and Keynote Using Easy-to-Write and Easy-to-Read Plain Text Wiki-Style Markup"
34
- },
35
- {
36
- "login": "openfootball",
37
- "id": 4477026,
38
- "url": "https://api.github.com/orgs/openfootball",
39
- "repos_url": "https://api.github.com/orgs/openfootball/repos",
40
- "events_url": "https://api.github.com/orgs/openfootball/events",
41
- "members_url": "https://api.github.com/orgs/openfootball/members{/member}",
42
- "public_members_url": "https://api.github.com/orgs/openfootball/public_members{/member}",
43
- "avatar_url": "https://avatars.githubusercontent.com/u/4477026?v=3",
44
- "description": "Open Public Domain Football Data - Incl. The Free World Football Almanac"
45
- }
46
- ]
@@ -1,263 +0,0 @@
1
- [
2
- {
3
- "id": 33192631,
4
- "name": "austria",
5
- "full_name": "geraldb/austria",
6
- "owner": {
7
- "login": "geraldb",
8
- "id": 53281,
9
- "avatar_url": "https://avatars.githubusercontent.com/u/53281?v=3",
10
- "gravatar_id": "",
11
- "url": "https://api.github.com/users/geraldb",
12
- "html_url": "https://github.com/geraldb",
13
- "followers_url": "https://api.github.com/users/geraldb/followers",
14
- "following_url": "https://api.github.com/users/geraldb/following{/other_user}",
15
- "gists_url": "https://api.github.com/users/geraldb/gists{/gist_id}",
16
- "starred_url": "https://api.github.com/users/geraldb/starred{/owner}{/repo}",
17
- "subscriptions_url": "https://api.github.com/users/geraldb/subscriptions",
18
- "organizations_url": "https://api.github.com/users/geraldb/orgs",
19
- "repos_url": "https://api.github.com/users/geraldb/repos",
20
- "events_url": "https://api.github.com/users/geraldb/events{/privacy}",
21
- "received_events_url": "https://api.github.com/users/geraldb/received_events",
22
- "type": "User",
23
- "site_admin": false
24
- },
25
- "private": false,
26
- "html_url": "https://github.com/geraldb/austria",
27
- "description": "open data and scripts for austria (österreich)",
28
- "fork": false,
29
- "url": "https://api.github.com/repos/geraldb/austria",
30
- "forks_url": "https://api.github.com/repos/geraldb/austria/forks",
31
- "keys_url": "https://api.github.com/repos/geraldb/austria/keys{/key_id}",
32
- "collaborators_url": "https://api.github.com/repos/geraldb/austria/collaborators{/collaborator}",
33
- "teams_url": "https://api.github.com/repos/geraldb/austria/teams",
34
- "hooks_url": "https://api.github.com/repos/geraldb/austria/hooks",
35
- "issue_events_url": "https://api.github.com/repos/geraldb/austria/issues/events{/number}",
36
- "events_url": "https://api.github.com/repos/geraldb/austria/events",
37
- "assignees_url": "https://api.github.com/repos/geraldb/austria/assignees{/user}",
38
- "branches_url": "https://api.github.com/repos/geraldb/austria/branches{/branch}",
39
- "tags_url": "https://api.github.com/repos/geraldb/austria/tags",
40
- "blobs_url": "https://api.github.com/repos/geraldb/austria/git/blobs{/sha}",
41
- "git_tags_url": "https://api.github.com/repos/geraldb/austria/git/tags{/sha}",
42
- "git_refs_url": "https://api.github.com/repos/geraldb/austria/git/refs{/sha}",
43
- "trees_url": "https://api.github.com/repos/geraldb/austria/git/trees{/sha}",
44
- "statuses_url": "https://api.github.com/repos/geraldb/austria/statuses/{sha}",
45
- "languages_url": "https://api.github.com/repos/geraldb/austria/languages",
46
- "stargazers_url": "https://api.github.com/repos/geraldb/austria/stargazers",
47
- "contributors_url": "https://api.github.com/repos/geraldb/austria/contributors",
48
- "subscribers_url": "https://api.github.com/repos/geraldb/austria/subscribers",
49
- "subscription_url": "https://api.github.com/repos/geraldb/austria/subscription",
50
- "commits_url": "https://api.github.com/repos/geraldb/austria/commits{/sha}",
51
- "git_commits_url": "https://api.github.com/repos/geraldb/austria/git/commits{/sha}",
52
- "comments_url": "https://api.github.com/repos/geraldb/austria/comments{/number}",
53
- "issue_comment_url": "https://api.github.com/repos/geraldb/austria/issues/comments{/number}",
54
- "contents_url": "https://api.github.com/repos/geraldb/austria/contents/{+path}",
55
- "compare_url": "https://api.github.com/repos/geraldb/austria/compare/{base}...{head}",
56
- "merges_url": "https://api.github.com/repos/geraldb/austria/merges",
57
- "archive_url": "https://api.github.com/repos/geraldb/austria/{archive_format}{/ref}",
58
- "downloads_url": "https://api.github.com/repos/geraldb/austria/downloads",
59
- "issues_url": "https://api.github.com/repos/geraldb/austria/issues{/number}",
60
- "pulls_url": "https://api.github.com/repos/geraldb/austria/pulls{/number}",
61
- "milestones_url": "https://api.github.com/repos/geraldb/austria/milestones{/number}",
62
- "notifications_url": "https://api.github.com/repos/geraldb/austria/notifications{?since,all,participating}",
63
- "labels_url": "https://api.github.com/repos/geraldb/austria/labels{/name}",
64
- "releases_url": "https://api.github.com/repos/geraldb/austria/releases{/id}",
65
- "created_at": "2015-03-31T15:16:05Z",
66
- "updated_at": "2015-03-31T21:03:02Z",
67
- "pushed_at": "2015-03-31T21:03:02Z",
68
- "git_url": "git://github.com/geraldb/austria.git",
69
- "ssh_url": "git@github.com:geraldb/austria.git",
70
- "clone_url": "https://github.com/geraldb/austria.git",
71
- "svn_url": "https://github.com/geraldb/austria",
72
- "homepage": null,
73
- "size": 552,
74
- "stargazers_count": 1,
75
- "watchers_count": 1,
76
- "language": "Ruby",
77
- "has_issues": true,
78
- "has_downloads": true,
79
- "has_wiki": false,
80
- "has_pages": false,
81
- "forks_count": 0,
82
- "mirror_url": null,
83
- "open_issues_count": 0,
84
- "forks": 0,
85
- "open_issues": 0,
86
- "watchers": 1,
87
- "default_branch": "master"
88
- },
89
- {
90
- "id": 31158327,
91
- "name": "auto",
92
- "full_name": "geraldb/auto",
93
- "owner": {
94
- "login": "geraldb",
95
- "id": 53281,
96
- "avatar_url": "https://avatars.githubusercontent.com/u/53281?v=3",
97
- "gravatar_id": "",
98
- "url": "https://api.github.com/users/geraldb",
99
- "html_url": "https://github.com/geraldb",
100
- "followers_url": "https://api.github.com/users/geraldb/followers",
101
- "following_url": "https://api.github.com/users/geraldb/following{/other_user}",
102
- "gists_url": "https://api.github.com/users/geraldb/gists{/gist_id}",
103
- "starred_url": "https://api.github.com/users/geraldb/starred{/owner}{/repo}",
104
- "subscriptions_url": "https://api.github.com/users/geraldb/subscriptions",
105
- "organizations_url": "https://api.github.com/users/geraldb/orgs",
106
- "repos_url": "https://api.github.com/users/geraldb/repos",
107
- "events_url": "https://api.github.com/users/geraldb/events{/privacy}",
108
- "received_events_url": "https://api.github.com/users/geraldb/received_events",
109
- "type": "User",
110
- "site_admin": false
111
- },
112
- "private": false,
113
- "html_url": "https://github.com/geraldb/auto",
114
- "description": "auto - scripts to automate building databases, books, etc.",
115
- "fork": false,
116
- "url": "https://api.github.com/repos/geraldb/auto",
117
- "forks_url": "https://api.github.com/repos/geraldb/auto/forks",
118
- "keys_url": "https://api.github.com/repos/geraldb/auto/keys{/key_id}",
119
- "collaborators_url": "https://api.github.com/repos/geraldb/auto/collaborators{/collaborator}",
120
- "teams_url": "https://api.github.com/repos/geraldb/auto/teams",
121
- "hooks_url": "https://api.github.com/repos/geraldb/auto/hooks",
122
- "issue_events_url": "https://api.github.com/repos/geraldb/auto/issues/events{/number}",
123
- "events_url": "https://api.github.com/repos/geraldb/auto/events",
124
- "assignees_url": "https://api.github.com/repos/geraldb/auto/assignees{/user}",
125
- "branches_url": "https://api.github.com/repos/geraldb/auto/branches{/branch}",
126
- "tags_url": "https://api.github.com/repos/geraldb/auto/tags",
127
- "blobs_url": "https://api.github.com/repos/geraldb/auto/git/blobs{/sha}",
128
- "git_tags_url": "https://api.github.com/repos/geraldb/auto/git/tags{/sha}",
129
- "git_refs_url": "https://api.github.com/repos/geraldb/auto/git/refs{/sha}",
130
- "trees_url": "https://api.github.com/repos/geraldb/auto/git/trees{/sha}",
131
- "statuses_url": "https://api.github.com/repos/geraldb/auto/statuses/{sha}",
132
- "languages_url": "https://api.github.com/repos/geraldb/auto/languages",
133
- "stargazers_url": "https://api.github.com/repos/geraldb/auto/stargazers",
134
- "contributors_url": "https://api.github.com/repos/geraldb/auto/contributors",
135
- "subscribers_url": "https://api.github.com/repos/geraldb/auto/subscribers",
136
- "subscription_url": "https://api.github.com/repos/geraldb/auto/subscription",
137
- "commits_url": "https://api.github.com/repos/geraldb/auto/commits{/sha}",
138
- "git_commits_url": "https://api.github.com/repos/geraldb/auto/git/commits{/sha}",
139
- "comments_url": "https://api.github.com/repos/geraldb/auto/comments{/number}",
140
- "issue_comment_url": "https://api.github.com/repos/geraldb/auto/issues/comments{/number}",
141
- "contents_url": "https://api.github.com/repos/geraldb/auto/contents/{+path}",
142
- "compare_url": "https://api.github.com/repos/geraldb/auto/compare/{base}...{head}",
143
- "merges_url": "https://api.github.com/repos/geraldb/auto/merges",
144
- "archive_url": "https://api.github.com/repos/geraldb/auto/{archive_format}{/ref}",
145
- "downloads_url": "https://api.github.com/repos/geraldb/auto/downloads",
146
- "issues_url": "https://api.github.com/repos/geraldb/auto/issues{/number}",
147
- "pulls_url": "https://api.github.com/repos/geraldb/auto/pulls{/number}",
148
- "milestones_url": "https://api.github.com/repos/geraldb/auto/milestones{/number}",
149
- "notifications_url": "https://api.github.com/repos/geraldb/auto/notifications{?since,all,participating}",
150
- "labels_url": "https://api.github.com/repos/geraldb/auto/labels{/name}",
151
- "releases_url": "https://api.github.com/repos/geraldb/auto/releases{/id}",
152
- "created_at": "2015-02-22T09:27:17Z",
153
- "updated_at": "2015-04-06T14:16:32Z",
154
- "pushed_at": "2015-04-06T14:16:32Z",
155
- "git_url": "git://github.com/geraldb/auto.git",
156
- "ssh_url": "git@github.com:geraldb/auto.git",
157
- "clone_url": "https://github.com/geraldb/auto.git",
158
- "svn_url": "https://github.com/geraldb/auto",
159
- "homepage": null,
160
- "size": 288,
161
- "stargazers_count": 1,
162
- "watchers_count": 1,
163
- "language": "Ruby",
164
- "has_issues": true,
165
- "has_downloads": true,
166
- "has_wiki": false,
167
- "has_pages": false,
168
- "forks_count": 0,
169
- "mirror_url": null,
170
- "open_issues_count": 0,
171
- "forks": 0,
172
- "open_issues": 0,
173
- "watchers": 1,
174
- "default_branch": "master"
175
- },
176
- {
177
- "id": 33404369,
178
- "name": "backup",
179
- "full_name": "geraldb/backup",
180
- "owner": {
181
- "login": "geraldb",
182
- "id": 53281,
183
- "avatar_url": "https://avatars.githubusercontent.com/u/53281?v=3",
184
- "gravatar_id": "",
185
- "url": "https://api.github.com/users/geraldb",
186
- "html_url": "https://github.com/geraldb",
187
- "followers_url": "https://api.github.com/users/geraldb/followers",
188
- "following_url": "https://api.github.com/users/geraldb/following{/other_user}",
189
- "gists_url": "https://api.github.com/users/geraldb/gists{/gist_id}",
190
- "starred_url": "https://api.github.com/users/geraldb/starred{/owner}{/repo}",
191
- "subscriptions_url": "https://api.github.com/users/geraldb/subscriptions",
192
- "organizations_url": "https://api.github.com/users/geraldb/orgs",
193
- "repos_url": "https://api.github.com/users/geraldb/repos",
194
- "events_url": "https://api.github.com/users/geraldb/events{/privacy}",
195
- "received_events_url": "https://api.github.com/users/geraldb/received_events",
196
- "type": "User",
197
- "site_admin": false
198
- },
199
- "private": false,
200
- "html_url": "https://github.com/geraldb/backup",
201
- "description": "backup - scripts to backup repos, etc.",
202
- "fork": false,
203
- "url": "https://api.github.com/repos/geraldb/backup",
204
- "forks_url": "https://api.github.com/repos/geraldb/backup/forks",
205
- "keys_url": "https://api.github.com/repos/geraldb/backup/keys{/key_id}",
206
- "collaborators_url": "https://api.github.com/repos/geraldb/backup/collaborators{/collaborator}",
207
- "teams_url": "https://api.github.com/repos/geraldb/backup/teams",
208
- "hooks_url": "https://api.github.com/repos/geraldb/backup/hooks",
209
- "issue_events_url": "https://api.github.com/repos/geraldb/backup/issues/events{/number}",
210
- "events_url": "https://api.github.com/repos/geraldb/backup/events",
211
- "assignees_url": "https://api.github.com/repos/geraldb/backup/assignees{/user}",
212
- "branches_url": "https://api.github.com/repos/geraldb/backup/branches{/branch}",
213
- "tags_url": "https://api.github.com/repos/geraldb/backup/tags",
214
- "blobs_url": "https://api.github.com/repos/geraldb/backup/git/blobs{/sha}",
215
- "git_tags_url": "https://api.github.com/repos/geraldb/backup/git/tags{/sha}",
216
- "git_refs_url": "https://api.github.com/repos/geraldb/backup/git/refs{/sha}",
217
- "trees_url": "https://api.github.com/repos/geraldb/backup/git/trees{/sha}",
218
- "statuses_url": "https://api.github.com/repos/geraldb/backup/statuses/{sha}",
219
- "languages_url": "https://api.github.com/repos/geraldb/backup/languages",
220
- "stargazers_url": "https://api.github.com/repos/geraldb/backup/stargazers",
221
- "contributors_url": "https://api.github.com/repos/geraldb/backup/contributors",
222
- "subscribers_url": "https://api.github.com/repos/geraldb/backup/subscribers",
223
- "subscription_url": "https://api.github.com/repos/geraldb/backup/subscription",
224
- "commits_url": "https://api.github.com/repos/geraldb/backup/commits{/sha}",
225
- "git_commits_url": "https://api.github.com/repos/geraldb/backup/git/commits{/sha}",
226
- "comments_url": "https://api.github.com/repos/geraldb/backup/comments{/number}",
227
- "issue_comment_url": "https://api.github.com/repos/geraldb/backup/issues/comments{/number}",
228
- "contents_url": "https://api.github.com/repos/geraldb/backup/contents/{+path}",
229
- "compare_url": "https://api.github.com/repos/geraldb/backup/compare/{base}...{head}",
230
- "merges_url": "https://api.github.com/repos/geraldb/backup/merges",
231
- "archive_url": "https://api.github.com/repos/geraldb/backup/{archive_format}{/ref}",
232
- "downloads_url": "https://api.github.com/repos/geraldb/backup/downloads",
233
- "issues_url": "https://api.github.com/repos/geraldb/backup/issues{/number}",
234
- "pulls_url": "https://api.github.com/repos/geraldb/backup/pulls{/number}",
235
- "milestones_url": "https://api.github.com/repos/geraldb/backup/milestones{/number}",
236
- "notifications_url": "https://api.github.com/repos/geraldb/backup/notifications{?since,all,participating}",
237
- "labels_url": "https://api.github.com/repos/geraldb/backup/labels{/name}",
238
- "releases_url": "https://api.github.com/repos/geraldb/backup/releases{/id}",
239
- "created_at": "2015-04-04T12:14:24Z",
240
- "updated_at": "2015-06-28T11:55:10Z",
241
- "pushed_at": "2015-11-10T08:58:28Z",
242
- "git_url": "git://github.com/geraldb/backup.git",
243
- "ssh_url": "git@github.com:geraldb/backup.git",
244
- "clone_url": "https://github.com/geraldb/backup.git",
245
- "svn_url": "https://github.com/geraldb/backup",
246
- "homepage": null,
247
- "size": 184,
248
- "stargazers_count": 1,
249
- "watchers_count": 1,
250
- "language": "Ruby",
251
- "has_issues": true,
252
- "has_downloads": true,
253
- "has_wiki": true,
254
- "has_pages": false,
255
- "forks_count": 0,
256
- "mirror_url": null,
257
- "open_issues_count": 0,
258
- "forks": 0,
259
- "open_issues": 0,
260
- "watchers": 1,
261
- "default_branch": "master"
262
- }
263
- ]