Skip to content

Commit 0f1ba2f

Browse files
author
=
committed
Add Forking
1 parent e0f70ce commit 0f1ba2f

File tree

2 files changed

+57
-2
lines changed

2 files changed

+57
-2
lines changed

lib/bitbucket_rest_api/repos.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ class Repos < API
1010
:Keys => 'keys',
1111
:Services => 'services',
1212
:Following => 'following',
13-
:Sources => 'sources'
13+
:Sources => 'sources',
14+
:Forks => 'forks'
1415

1516
DEFAULT_REPO_OPTIONS = {
1617
"website" => "",
@@ -63,7 +64,9 @@ def sources
6364
def services
6465
@services ||= ApiFactory.new 'Repos::Services'
6566
end
66-
67+
def forks
68+
@services ||= ApiFactory.new 'Repos::Forks'
69+
end
6770
# List branches
6871
#
6972
# = Examples
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# encoding: utf-8
2+
3+
module BitBucket
4+
class Repos::Forks < API
5+
6+
REQUIRED_KEY_PARAM_NAMES = %w[ name ].freeze
7+
DEFAULT_REPO_OPTIONS = {
8+
"website" => "",
9+
"is_private" => false,
10+
"has_issues" => false,
11+
"has_wiki" => false,
12+
"scm" => "git",
13+
"no_public_forks" => false
14+
}.freeze
15+
16+
VALID_REPO_OPTIONS = %w[
17+
owner
18+
name
19+
description
20+
website
21+
is_private
22+
has_issues
23+
has_wiki
24+
no_public_forks
25+
language
26+
scm
27+
].freeze
28+
29+
30+
# Create a fork
31+
#
32+
# = Inputs
33+
# * <tt>:type</tt> - One of the supported services. The type is a case-insensitive value.
34+
#
35+
# = Examples
36+
# bitbucket = BitBucket.new
37+
# bitbucket.repos.forks.create 'user-name', 'repo-name',
38+
# "name" => "Basecamp",
39+
#
40+
def create(user_name, repo_name, params={})
41+
_update_user_repo_params(user_name, repo_name)
42+
_validate_user_repo_params(user, repo) unless user? && repo?
43+
normalize! params
44+
assert_required_keys(REQUIRED_KEY_PARAM_NAMES, params)
45+
filter! VALID_REPO_OPTIONS, params
46+
47+
post_request("/repositories/#{user}/#{repo.downcase}/fork", params)
48+
end
49+
50+
51+
end # Repos::Keys
52+
end # BitBucket

0 commit comments

Comments
 (0)