tinybucket2 1.0.0

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.
Files changed (108) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +86 -0
  3. data/Gemfile +32 -0
  4. data/LICENSE +21 -0
  5. data/README.md +387 -0
  6. data/Rakefile +47 -0
  7. data/lib/faraday_middleware/follow_oauth_redirects.rb +71 -0
  8. data/lib/tinybucket.rb +76 -0
  9. data/lib/tinybucket/api.rb +26 -0
  10. data/lib/tinybucket/api/base_api.rb +44 -0
  11. data/lib/tinybucket/api/branch_restrictions_api.rb +51 -0
  12. data/lib/tinybucket/api/branches_api.rb +48 -0
  13. data/lib/tinybucket/api/build_status_api.rb +69 -0
  14. data/lib/tinybucket/api/comments_api.rb +81 -0
  15. data/lib/tinybucket/api/commits_api.rb +97 -0
  16. data/lib/tinybucket/api/diff_api.rb +40 -0
  17. data/lib/tinybucket/api/helper.rb +27 -0
  18. data/lib/tinybucket/api/helper/api_helper.rb +39 -0
  19. data/lib/tinybucket/api/helper/branch_restrictions_helper.rb +29 -0
  20. data/lib/tinybucket/api/helper/branches_helper.rb +29 -0
  21. data/lib/tinybucket/api/helper/build_status_helper.rb +46 -0
  22. data/lib/tinybucket/api/helper/comments_helper.rb +51 -0
  23. data/lib/tinybucket/api/helper/commits_helper.rb +42 -0
  24. data/lib/tinybucket/api/helper/diff_helper.rb +31 -0
  25. data/lib/tinybucket/api/helper/issues_helper.rb +29 -0
  26. data/lib/tinybucket/api/helper/projects_helper.rb +28 -0
  27. data/lib/tinybucket/api/helper/pull_requests_helper.rb +58 -0
  28. data/lib/tinybucket/api/helper/repo_helper.rb +31 -0
  29. data/lib/tinybucket/api/helper/repos_helper.rb +23 -0
  30. data/lib/tinybucket/api/helper/team_helper.rb +45 -0
  31. data/lib/tinybucket/api/helper/user_helper.rb +33 -0
  32. data/lib/tinybucket/api/issues_api.rb +48 -0
  33. data/lib/tinybucket/api/projects_api.rb +26 -0
  34. data/lib/tinybucket/api/pull_requests_api.rb +117 -0
  35. data/lib/tinybucket/api/repo_api.rb +56 -0
  36. data/lib/tinybucket/api/repos_api.rb +28 -0
  37. data/lib/tinybucket/api/team_api.rb +91 -0
  38. data/lib/tinybucket/api/user_api.rb +66 -0
  39. data/lib/tinybucket/api_factory.rb +21 -0
  40. data/lib/tinybucket/client.rb +107 -0
  41. data/lib/tinybucket/config.rb +10 -0
  42. data/lib/tinybucket/connection.rb +84 -0
  43. data/lib/tinybucket/constants.rb +7 -0
  44. data/lib/tinybucket/enumerator.rb +47 -0
  45. data/lib/tinybucket/error.rb +12 -0
  46. data/lib/tinybucket/error/base_error.rb +14 -0
  47. data/lib/tinybucket/error/conflict.rb +8 -0
  48. data/lib/tinybucket/error/not_found.rb +8 -0
  49. data/lib/tinybucket/error/service_error.rb +26 -0
  50. data/lib/tinybucket/iterator.rb +79 -0
  51. data/lib/tinybucket/model.rb +25 -0
  52. data/lib/tinybucket/model/base.rb +45 -0
  53. data/lib/tinybucket/model/branch.rb +48 -0
  54. data/lib/tinybucket/model/branch_restriction.rb +46 -0
  55. data/lib/tinybucket/model/build_status.rb +57 -0
  56. data/lib/tinybucket/model/comment.rb +67 -0
  57. data/lib/tinybucket/model/commit.rb +114 -0
  58. data/lib/tinybucket/model/concerns.rb +19 -0
  59. data/lib/tinybucket/model/concerns/acceptable_attributes.rb +34 -0
  60. data/lib/tinybucket/model/concerns/api_callable.rb +21 -0
  61. data/lib/tinybucket/model/concerns/enumerable.rb +20 -0
  62. data/lib/tinybucket/model/concerns/reloadable.rb +41 -0
  63. data/lib/tinybucket/model/concerns/repository_keys.rb +45 -0
  64. data/lib/tinybucket/model/error_response.rb +24 -0
  65. data/lib/tinybucket/model/issue.rb +48 -0
  66. data/lib/tinybucket/model/page.rb +45 -0
  67. data/lib/tinybucket/model/profile.rb +70 -0
  68. data/lib/tinybucket/model/project.rb +44 -0
  69. data/lib/tinybucket/model/pull_request.rb +160 -0
  70. data/lib/tinybucket/model/repository.rb +219 -0
  71. data/lib/tinybucket/model/team.rb +96 -0
  72. data/lib/tinybucket/null_logger.rb +37 -0
  73. data/lib/tinybucket/parser.rb +15 -0
  74. data/lib/tinybucket/parser/collection_parser.rb +17 -0
  75. data/lib/tinybucket/parser/object_parser.rb +17 -0
  76. data/lib/tinybucket/request.rb +59 -0
  77. data/lib/tinybucket/resource.rb +75 -0
  78. data/lib/tinybucket/resource/base.rb +35 -0
  79. data/lib/tinybucket/resource/branch_restrictions.rb +47 -0
  80. data/lib/tinybucket/resource/branches.rb +35 -0
  81. data/lib/tinybucket/resource/commit/base.rb +14 -0
  82. data/lib/tinybucket/resource/commit/build_statuses.rb +50 -0
  83. data/lib/tinybucket/resource/commit/comments.rb +34 -0
  84. data/lib/tinybucket/resource/commits.rb +46 -0
  85. data/lib/tinybucket/resource/forks.rb +24 -0
  86. data/lib/tinybucket/resource/issues.rb +35 -0
  87. data/lib/tinybucket/resource/projects.rb +49 -0
  88. data/lib/tinybucket/resource/pull_request/base.rb +20 -0
  89. data/lib/tinybucket/resource/pull_request/comments.rb +32 -0
  90. data/lib/tinybucket/resource/pull_request/commits.rb +19 -0
  91. data/lib/tinybucket/resource/pull_requests.rb +50 -0
  92. data/lib/tinybucket/resource/repos.rb +40 -0
  93. data/lib/tinybucket/resource/team/base.rb +24 -0
  94. data/lib/tinybucket/resource/team/followers.rb +15 -0
  95. data/lib/tinybucket/resource/team/following.rb +15 -0
  96. data/lib/tinybucket/resource/team/members.rb +15 -0
  97. data/lib/tinybucket/resource/team/repos.rb +15 -0
  98. data/lib/tinybucket/resource/teams.rb +22 -0
  99. data/lib/tinybucket/resource/user/base.rb +26 -0
  100. data/lib/tinybucket/resource/user/followers.rb +15 -0
  101. data/lib/tinybucket/resource/user/following.rb +15 -0
  102. data/lib/tinybucket/resource/user/repos.rb +15 -0
  103. data/lib/tinybucket/resource/watchers.rb +24 -0
  104. data/lib/tinybucket/response.rb +9 -0
  105. data/lib/tinybucket/response/handler.rb +23 -0
  106. data/lib/tinybucket/version.rb +5 -0
  107. data/tinybucket.gemspec +30 -0
  108. metadata +248 -0
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ class Commits < Base
6
+ def initialize(repo, options)
7
+ @repo = repo
8
+ @args = [options]
9
+ end
10
+
11
+ # Find the commit
12
+ #
13
+ # @param revision [String]
14
+ # @param options [Hash]
15
+ # @return [Tinybucket::Model::Commit]
16
+ def find(revision, options = {})
17
+ commits_api.find(revision, options).tap do |m|
18
+ inject_repo_keys(m, @repo.repo_keys)
19
+ end
20
+ end
21
+
22
+ # Returns the commits for a specific branch
23
+ #
24
+ # @param name [String]
25
+ # @param options [Hash]
26
+ # @return [Tinybucket::Iterator]
27
+ def branch(name, options = {})
28
+ create_enumerator(commits_api, :branch, name, options) do |m|
29
+ inject_repo_keys(m, @repo.repo_keys)
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def commits_api
36
+ create_api('Commits', @repo.repo_keys)
37
+ end
38
+
39
+ def enumerator
40
+ create_enumerator(commits_api, :list, *@args) do |m|
41
+ inject_repo_keys(m, @repo.repo_keys)
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ class Forks < Base
6
+ def initialize(repo, options)
7
+ @repo = repo
8
+ @args = [options]
9
+ end
10
+
11
+ private
12
+
13
+ def repo_api
14
+ create_api('Repo', @repo.repo_keys)
15
+ end
16
+
17
+ def enumerator
18
+ create_enumerator(repo_api, :forks, *@args) do |m|
19
+ inject_repo_keys(m, @repo.repo_keys)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ class Issues < Tinybucket::Resource::Base
6
+ def initialize(repo, options)
7
+ @repo = repo
8
+ @args = [options]
9
+ end
10
+
11
+ # Find the branch
12
+ #
13
+ # @param branch [String]
14
+ # @param options [Hash]
15
+ # @return [Tinybucket::Model::Branch]
16
+ def find(branch, options = {})
17
+ issues_api.find(branch, options).tap do |m|
18
+ inject_repo_keys(m, @repo.repo_keys)
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def issues_api
25
+ create_api('Issues', @repo.repo_keys)
26
+ end
27
+
28
+ def enumerator
29
+ create_enumerator(issues_api, :list, *@args) do |m|
30
+ inject_repo_keys(m, @repo.repo_keys)
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ class Projects < Base
6
+ attr_accessor :owner
7
+
8
+ # Initialize
9
+ #
10
+ # @param owner_name [String]
11
+ # @param options [Hash]
12
+ def initialize(owner_name, options = {})
13
+ @owner = owner_name
14
+ @args = [options]
15
+ end
16
+
17
+ # Find the project
18
+ #
19
+ # @param project_key [String]
20
+ # @param options [Hash]
21
+ # @return [Tinybucket::Model::Project]
22
+ def find(project_key, options = {})
23
+ projects_api.find(project_key, options)
24
+ end
25
+
26
+ # Create a new project
27
+ #
28
+ # NOTE: Not Implemented yet.
29
+ #
30
+ # @param _params [Hash]
31
+ # @raise [NotImplementedError] to be implemented
32
+ def create(_params)
33
+ raise NotImplementedError
34
+ end
35
+
36
+ private
37
+
38
+ def projects_api
39
+ create_api('Projects').tap do |api|
40
+ api.owner = @owner
41
+ end
42
+ end
43
+
44
+ def enumerator
45
+ create_enumerator(projects_api, :list, *@args)
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ module PullRequest
6
+ class Base < Tinybucket::Resource::Base
7
+ def initialize(pull_request, options)
8
+ @pull_request = pull_request
9
+ @args = [options]
10
+ end
11
+
12
+ protected
13
+
14
+ def pull_request_api
15
+ create_api('PullRequests', @pull_request.repo_keys)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ module PullRequest
6
+ class Comments < Tinybucket::Resource::PullRequest::Base
7
+ # Get the specific comment on the pull request.
8
+ #
9
+ # @param comment_id [String]
10
+ # @param options [Hash]
11
+ # @return [Tinybucket::Model::Comment]
12
+ def find(comment_id, options)
13
+ comment_api.find(comment_id, options)
14
+ end
15
+
16
+ private
17
+
18
+ def comment_api
19
+ create_api('Comments', @pull_request.repo_keys).tap do |api|
20
+ api.commented_to = @pull_request
21
+ end
22
+ end
23
+
24
+ def enumerator
25
+ create_enumerator(comment_api, :list, *@args) do |m|
26
+ inject_repo_keys(m, @pull_request.repo_keys)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ module PullRequest
6
+ class Commits < Tinybucket::Resource::PullRequest::Base
7
+ private
8
+
9
+ def enumerator
10
+ params = [@pull_request.id].concat(@args)
11
+
12
+ create_enumerator(pull_request_api, :commits, *params) do |m|
13
+ inject_repo_keys(m, @pull_request.repo_keys)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ class PullRequests < Base
6
+ def initialize(repo, options)
7
+ @repo = repo
8
+ @args = [options]
9
+ end
10
+
11
+ # Create a new pull request.
12
+ #
13
+ # @todo to be implemented.
14
+ # @raise [NotImplementedError] to be implemented.
15
+ def create(_options)
16
+ raise NotImplementedError
17
+ end
18
+
19
+ # Get the specific pull request on the repository.
20
+ #
21
+ # @param pullrequest_id [String]
22
+ # @param options [Hash]
23
+ # @return [Tinybucket::Model::PullRequest]
24
+ def find(pullrequest_id, options = {})
25
+ pull_requests_api.find(pullrequest_id, options).tap do |m|
26
+ inject_repo_keys(m, @repo.repo_keys)
27
+ end
28
+ end
29
+
30
+ # Get activities on the po
31
+ #
32
+ # TODO: To be implemented.
33
+ def activities(_options)
34
+ raise NotImplementedError
35
+ end
36
+
37
+ private
38
+
39
+ def pull_requests_api
40
+ create_api('PullRequests', @repo.repo_keys)
41
+ end
42
+
43
+ def enumerator
44
+ create_enumerator(pull_requests_api, :list, *@args) do |m|
45
+ inject_repo_keys(m, @repo.repo_keys)
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ class Repos < Base
6
+ def initialize(owner, options)
7
+ @owner = owner
8
+ @args = [options]
9
+ end
10
+
11
+ def create(_options)
12
+ raise NotImplementedError
13
+ end
14
+
15
+ def find(_options)
16
+ raise NotImplementedError
17
+ end
18
+
19
+ private
20
+
21
+ def user_api
22
+ create_api('User').tap do |api|
23
+ api.username = @owner
24
+ end
25
+ end
26
+
27
+ def repos_api
28
+ create_api('Repos')
29
+ end
30
+
31
+ def enumerator
32
+ if @owner
33
+ create_enumerator(user_api, :repos, *@args)
34
+ else
35
+ create_enumerator(repos_api, :list, *@args)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ module Team
6
+ class Base < Tinybucket::Resource::Base
7
+ def initialize(team_name, options)
8
+ @team_name = team_name
9
+ @args = [options]
10
+ end
11
+
12
+ protected
13
+
14
+ def team_api
15
+ create_api('Team')
16
+ end
17
+
18
+ def create_team_enumerator(method)
19
+ create_enumerator(team_api, method, @team_name, *@args)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ module Team
6
+ class Followers < Tinybucket::Resource::Team::Base
7
+ private
8
+
9
+ def enumerator
10
+ create_team_enumerator(:followers)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ module Team
6
+ class Following < Tinybucket::Resource::Team::Base
7
+ private
8
+
9
+ def enumerator
10
+ create_team_enumerator(:following)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ module Team
6
+ class Members < Tinybucket::Resource::Team::Base
7
+ private
8
+
9
+ def enumerator
10
+ create_team_enumerator(:members)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ module Team
6
+ class Repos < Tinybucket::Resource::Team::Base
7
+ private
8
+
9
+ def enumerator
10
+ create_team_enumerator(:repos)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tinybucket
4
+ module Resource
5
+ class Teams < Base
6
+ def initialize(role_name, options = {})
7
+ @role_name = role_name
8
+ @args = [options]
9
+ end
10
+
11
+ private
12
+
13
+ def teams_api
14
+ create_api('Team')
15
+ end
16
+
17
+ def enumerator
18
+ create_enumerator(teams_api, :list, @role_name, *@args)
19
+ end
20
+ end
21
+ end
22
+ end