assembla_api 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +20 -0
- data/Rakefile +22 -0
- data/lib/assembla_api.rb +130 -0
- data/lib/assembla_api/api.rb +373 -0
- data/lib/assembla_api/api/actions.rb +58 -0
- data/lib/assembla_api/api/arguments.rb +248 -0
- data/lib/assembla_api/api/config.rb +107 -0
- data/lib/assembla_api/api/config/property.rb +30 -0
- data/lib/assembla_api/api/config/property_set.rb +119 -0
- data/lib/assembla_api/api/factory.rb +33 -0
- data/lib/assembla_api/authorization.rb +76 -0
- data/lib/assembla_api/client.rb +21 -0
- data/lib/assembla_api/client/activity.rb +30 -0
- data/lib/assembla_api/client/authorizations.rb +143 -0
- data/lib/assembla_api/client/authorizations/app.rb +98 -0
- data/lib/assembla_api/client/portfolio.rb +19 -0
- data/lib/assembla_api/client/portfolio/invitations.rb +30 -0
- data/lib/assembla_api/client/portfolio/spaces.rb +13 -0
- data/lib/assembla_api/client/portfolio/standup_reports.rb +34 -0
- data/lib/assembla_api/client/portfolio/tasks.rb +13 -0
- data/lib/assembla_api/client/portfolio/ticket_reports.rb +13 -0
- data/lib/assembla_api/client/portfolio/tickets.rb +13 -0
- data/lib/assembla_api/client/portfolio/users.rb +13 -0
- data/lib/assembla_api/client/spaces.rb +140 -0
- data/lib/assembla_api/client/spaces/documents.rb +87 -0
- data/lib/assembla_api/client/spaces/milestones.rb +102 -0
- data/lib/assembla_api/client/spaces/space_tools.rb +65 -0
- data/lib/assembla_api/client/spaces/space_tools/merge_requests.rb +105 -0
- data/lib/assembla_api/client/spaces/space_tools/merge_requests/versions.rb +41 -0
- data/lib/assembla_api/client/spaces/space_tools/merge_requests/versions/comments.rb +34 -0
- data/lib/assembla_api/client/spaces/space_tools/merge_requests/versions/votes.rb +46 -0
- data/lib/assembla_api/client/spaces/ssh.rb +14 -0
- data/lib/assembla_api/client/spaces/ssh/actions.rb +76 -0
- data/lib/assembla_api/client/spaces/ssh/actions/launches.rb +14 -0
- data/lib/assembla_api/client/spaces/ssh/keys.rb +18 -0
- data/lib/assembla_api/client/spaces/ssh/launches.rb +29 -0
- data/lib/assembla_api/client/spaces/ssh/servers.rb +63 -0
- data/lib/assembla_api/client/spaces/standup_away_reports.rb +41 -0
- data/lib/assembla_api/client/spaces/standup_reports.rb +41 -0
- data/lib/assembla_api/client/spaces/tags.rb +96 -0
- data/lib/assembla_api/client/spaces/tickets.rb +154 -0
- data/lib/assembla_api/client/spaces/tickets/associations.rb +57 -0
- data/lib/assembla_api/client/spaces/tickets/comments.rb +45 -0
- data/lib/assembla_api/client/spaces/tickets/custom_fields.rb +57 -0
- data/lib/assembla_api/client/spaces/tickets/statuses.rb +55 -0
- data/lib/assembla_api/client/spaces/user_roles.rb +61 -0
- data/lib/assembla_api/client/spaces/users.rb +11 -0
- data/lib/assembla_api/client/spaces/webhooks.rb +63 -0
- data/lib/assembla_api/client/spaces/wiki_pages.rb +78 -0
- data/lib/assembla_api/client/spaces/wiki_pages/versions.rb +20 -0
- data/lib/assembla_api/client/tasks.rb +72 -0
- data/lib/assembla_api/client/users.rb +49 -0
- data/lib/assembla_api/client/users/keys.rb +97 -0
- data/lib/assembla_api/configuration.rb +71 -0
- data/lib/assembla_api/connection.rb +66 -0
- data/lib/assembla_api/constants.rb +74 -0
- data/lib/assembla_api/core_ext/array.rb +25 -0
- data/lib/assembla_api/core_ext/hash.rb +92 -0
- data/lib/assembla_api/core_ext/ordered_hash.rb +107 -0
- data/lib/assembla_api/deprecation.rb +39 -0
- data/lib/assembla_api/error.rb +37 -0
- data/lib/assembla_api/error/bad_request.rb +14 -0
- data/lib/assembla_api/error/client_error.rb +20 -0
- data/lib/assembla_api/error/forbidden.rb +14 -0
- data/lib/assembla_api/error/internal_server_error.rb +15 -0
- data/lib/assembla_api/error/invalid_options.rb +18 -0
- data/lib/assembla_api/error/not_acceptable.rb +15 -0
- data/lib/assembla_api/error/not_found.rb +14 -0
- data/lib/assembla_api/error/required_params.rb +18 -0
- data/lib/assembla_api/error/service_error.rb +68 -0
- data/lib/assembla_api/error/service_unavailable.rb +15 -0
- data/lib/assembla_api/error/unauthorized.rb +15 -0
- data/lib/assembla_api/error/unknown_media.rb +18 -0
- data/lib/assembla_api/error/unknown_value.rb +18 -0
- data/lib/assembla_api/error/unprocessable_entity.rb +14 -0
- data/lib/assembla_api/error/validations.rb +18 -0
- data/lib/assembla_api/ext/faraday.rb +38 -0
- data/lib/assembla_api/jsonable.rb +18 -0
- data/lib/assembla_api/middleware.rb +31 -0
- data/lib/assembla_api/mime_type.rb +33 -0
- data/lib/assembla_api/normalizer.rb +25 -0
- data/lib/assembla_api/null_encoder.rb +25 -0
- data/lib/assembla_api/page_iterator.rb +142 -0
- data/lib/assembla_api/page_links.rb +45 -0
- data/lib/assembla_api/paged_request.rb +40 -0
- data/lib/assembla_api/pagination.rb +102 -0
- data/lib/assembla_api/parameter_filter.rb +32 -0
- data/lib/assembla_api/params_hash.rb +101 -0
- data/lib/assembla_api/rate_limit.rb +25 -0
- data/lib/assembla_api/request.rb +85 -0
- data/lib/assembla_api/request/basic_auth.rb +33 -0
- data/lib/assembla_api/request/jsonize.rb +53 -0
- data/lib/assembla_api/request/key_auth.rb +31 -0
- data/lib/assembla_api/request/oauth2.rb +42 -0
- data/lib/assembla_api/request/verbs.rb +60 -0
- data/lib/assembla_api/response.rb +28 -0
- data/lib/assembla_api/response/header.rb +76 -0
- data/lib/assembla_api/response/jsonize.rb +29 -0
- data/lib/assembla_api/response/mashify.rb +24 -0
- data/lib/assembla_api/response/raise_error.rb +18 -0
- data/lib/assembla_api/response/xmlize.rb +26 -0
- data/lib/assembla_api/response_wrapper.rb +157 -0
- data/lib/assembla_api/ssl_certs/cacerts.pem +2183 -0
- data/lib/assembla_api/utils/url.rb +59 -0
- data/lib/assembla_api/validations.rb +25 -0
- data/lib/assembla_api/validations/format.rb +24 -0
- data/lib/assembla_api/validations/presence.rb +30 -0
- data/lib/assembla_api/validations/required.rb +24 -0
- data/lib/assembla_api/validations/token.rb +41 -0
- data/lib/assembla_api/version.rb +12 -0
- metadata +347 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
module Assembla
|
2
|
+
class Client::Portfolio::Spaces < API
|
3
|
+
|
4
|
+
# @example
|
5
|
+
# api.portfolio.spaces.list
|
6
|
+
def list(*args)
|
7
|
+
arguments(args)
|
8
|
+
response = get_request("/spaces", arguments.params)
|
9
|
+
return response unless block_given?
|
10
|
+
response.each { |el| yield el }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Assembla
|
2
|
+
class Client::Portfolio::StandupReports < API
|
3
|
+
|
4
|
+
# @example
|
5
|
+
# api.portfolio.standup_reports.list
|
6
|
+
def list(*args)
|
7
|
+
arguments(args)
|
8
|
+
response = get_request("/standup_reports", arguments.params)
|
9
|
+
return response unless block_given?
|
10
|
+
response.each { |el| yield el }
|
11
|
+
end
|
12
|
+
|
13
|
+
# @example
|
14
|
+
# api.portfolio.standup_reports.away
|
15
|
+
def away(*args)
|
16
|
+
arguments(args) do
|
17
|
+
permit %w{ from to }
|
18
|
+
end
|
19
|
+
|
20
|
+
response = get_request("/standup_reports/away", arguments.params)
|
21
|
+
return response unless block_given?
|
22
|
+
response.each { |el| yield el }
|
23
|
+
end
|
24
|
+
|
25
|
+
# @example
|
26
|
+
# api.portfolio.standup_reports.with_needs
|
27
|
+
def with_needs(*args)
|
28
|
+
arguments(args)
|
29
|
+
response = get_request("/standup_reports/with_needs", arguments.params)
|
30
|
+
return response unless block_given?
|
31
|
+
response.each { |el| yield el }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Assembla
|
2
|
+
class Client::Portfolio::Tasks < API
|
3
|
+
|
4
|
+
# @example
|
5
|
+
# api.portfolio.tasks.list
|
6
|
+
def list(*args)
|
7
|
+
arguments(args)
|
8
|
+
response = get_request("/tasks", arguments.params)
|
9
|
+
return response unless block_given?
|
10
|
+
response.each { |el| yield el }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Assembla
|
2
|
+
class Client::Portfolio::TicketReports < API
|
3
|
+
|
4
|
+
# @example
|
5
|
+
# api.portfolio.ticket_reports.list
|
6
|
+
def list(*args)
|
7
|
+
arguments(args)
|
8
|
+
response = get_request("/ticket_reports", arguments.params)
|
9
|
+
return response unless block_given?
|
10
|
+
response.each { |el| yield el }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Assembla
|
2
|
+
class Client::Portfolio::Tickets < API
|
3
|
+
|
4
|
+
# @example
|
5
|
+
# api.portfolio.tickets.list
|
6
|
+
def list(*args)
|
7
|
+
arguments(args)
|
8
|
+
response = get_request("/tickets", arguments.params)
|
9
|
+
return response unless block_given?
|
10
|
+
response.each { |el| yield el }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Assembla
|
2
|
+
class Client::Portfolio::Users < API
|
3
|
+
|
4
|
+
# @example
|
5
|
+
# api.portfolio.tasks.list
|
6
|
+
def list(*args)
|
7
|
+
arguments(args)
|
8
|
+
response = get_request("/users", arguments.params)
|
9
|
+
return response unless block_given?
|
10
|
+
response.each { |el| yield el }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Assembla
|
4
|
+
class Client::Spaces < API
|
5
|
+
require_all 'assembla_api/client/spaces',
|
6
|
+
'space_tools',
|
7
|
+
'tickets',
|
8
|
+
'tags',
|
9
|
+
'milestones',
|
10
|
+
'documents',
|
11
|
+
'wiki_pages',
|
12
|
+
'webhooks',
|
13
|
+
'ssh',
|
14
|
+
'standup_reports',
|
15
|
+
'standup_away_reports',
|
16
|
+
'user_roles',
|
17
|
+
'users'
|
18
|
+
|
19
|
+
VALID_PARAMS_NAMES = %w[
|
20
|
+
name
|
21
|
+
wiki_name
|
22
|
+
description
|
23
|
+
public_permissions
|
24
|
+
team_permissions
|
25
|
+
watcher_permissions
|
26
|
+
share_permissions
|
27
|
+
status
|
28
|
+
team_tab_role
|
29
|
+
default_showpage
|
30
|
+
tabs_order
|
31
|
+
banner
|
32
|
+
banner_height
|
33
|
+
banner_text
|
34
|
+
banner_link
|
35
|
+
style
|
36
|
+
approved
|
37
|
+
can_join
|
38
|
+
wiki_format
|
39
|
+
].freeze
|
40
|
+
|
41
|
+
VALID_REQUEST_PARAM_VALUES = {
|
42
|
+
'status' => [0, 1, 2, 3, 4],
|
43
|
+
'team_tab_role' => [0, 10, 50, 90],
|
44
|
+
'public_permissions' => [0, 1],
|
45
|
+
'team_permissions' => [1, 2, 3],
|
46
|
+
'watcher_permissions' => [0, 1],
|
47
|
+
}
|
48
|
+
|
49
|
+
# Access to Spaces::Users API
|
50
|
+
namespace :users
|
51
|
+
|
52
|
+
# Access to Spaces::UserRoles API
|
53
|
+
namespace :user_roles
|
54
|
+
|
55
|
+
# Access to Spaces::Tickets API
|
56
|
+
namespace :tickets
|
57
|
+
namespace :tags
|
58
|
+
namespace :milestones
|
59
|
+
namespace :documents
|
60
|
+
namespace :wiki_pages
|
61
|
+
namespace :webhooks
|
62
|
+
namespace :ssh
|
63
|
+
namespace :space_tools
|
64
|
+
namespace :standup_reports
|
65
|
+
namespace :standup_away_reports
|
66
|
+
|
67
|
+
#
|
68
|
+
def my(*args)
|
69
|
+
arguments(args)
|
70
|
+
response = get_request("/spaces", arguments.params)
|
71
|
+
return response unless block_given?
|
72
|
+
response.each { |el| yield el }
|
73
|
+
end
|
74
|
+
|
75
|
+
# api.spaces.get space: 'breakout'
|
76
|
+
def get(*args)
|
77
|
+
arguments(args, required: [:space])
|
78
|
+
get_request("/spaces/#{arguments.space}", arguments.params)
|
79
|
+
end
|
80
|
+
alias :find :get
|
81
|
+
|
82
|
+
def create(*args)
|
83
|
+
arguments(args) do
|
84
|
+
permit VALID_PARAMS_NAMES
|
85
|
+
assert_required %w[ name ]
|
86
|
+
assert_values VALID_REQUEST_PARAM_VALUES
|
87
|
+
end
|
88
|
+
|
89
|
+
post_request("/spaces", arguments.params)
|
90
|
+
end
|
91
|
+
|
92
|
+
def copy(*args)
|
93
|
+
arguments(args, required: [:space]) do
|
94
|
+
permit VALID_PARAMS_NAMES
|
95
|
+
assert_required %w[ name ]
|
96
|
+
assert_values VALID_REQUEST_PARAM_VALUES
|
97
|
+
end
|
98
|
+
|
99
|
+
post_request("/spaces/#{arguments.space}/copy", arguments.params)
|
100
|
+
end
|
101
|
+
|
102
|
+
# Delete a space
|
103
|
+
#
|
104
|
+
# Deleting a space requires owner access.
|
105
|
+
#
|
106
|
+
# @example
|
107
|
+
# assembla = Assembla.new oauth_token: '...'
|
108
|
+
# assembla.repos.delete 'space-name'
|
109
|
+
#
|
110
|
+
# @api public
|
111
|
+
def delete(*args)
|
112
|
+
arguments(args, required: [:space])
|
113
|
+
delete_request("/spaces/#{arguments.space}", arguments.params)
|
114
|
+
end
|
115
|
+
alias :remove :delete
|
116
|
+
|
117
|
+
# Edit a space
|
118
|
+
#
|
119
|
+
# @param [Hash] params
|
120
|
+
# @option params [String] :name
|
121
|
+
# Required string
|
122
|
+
# @option params [String] :description
|
123
|
+
# Optional string
|
124
|
+
#
|
125
|
+
# @example
|
126
|
+
# assembla = Assembla.new
|
127
|
+
# assembla.spaces.edit 'space-name',
|
128
|
+
# name: 'hello-world',
|
129
|
+
# description: 'This is your first space'
|
130
|
+
#
|
131
|
+
def edit(*args)
|
132
|
+
arguments(args,required: [:space]) do
|
133
|
+
permit VALID_PARAMS_NAMES
|
134
|
+
assert_values VALID_REQUEST_PARAM_VALUES
|
135
|
+
end
|
136
|
+
|
137
|
+
put_request("/spaces/#{arguments.space}", arguments.params)
|
138
|
+
end
|
139
|
+
end # Spaces
|
140
|
+
end # Assembla
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require "mime/types"
|
2
|
+
|
3
|
+
module Assembla
|
4
|
+
class Client::Spaces::Documents < API
|
5
|
+
|
6
|
+
VALID_PARAMS_NAMES = %w[
|
7
|
+
file
|
8
|
+
filename
|
9
|
+
name
|
10
|
+
description
|
11
|
+
position
|
12
|
+
cached_tag_list
|
13
|
+
attachable_type
|
14
|
+
attachable_guid
|
15
|
+
attachable_id
|
16
|
+
].freeze
|
17
|
+
|
18
|
+
VALID_REQUEST_PARAM_VALUES = {
|
19
|
+
'attachable_type' => /^(Ticket|Flow|Milestone)$/
|
20
|
+
}
|
21
|
+
|
22
|
+
# @example
|
23
|
+
# api.spaces.documents.create 'project1', document: { file: '/path/to/file' }
|
24
|
+
def create(*args)
|
25
|
+
arguments(args, required: [:space]) do
|
26
|
+
permit VALID_PARAMS_NAMES, recursive: true
|
27
|
+
assert_required %w[ file ]
|
28
|
+
assert_values VALID_REQUEST_PARAM_VALUES
|
29
|
+
end
|
30
|
+
|
31
|
+
doc = arguments.params.delete 'document'
|
32
|
+
path = doc['file']
|
33
|
+
name = File.basename(path)
|
34
|
+
mime = MIME::Types.of(name).first
|
35
|
+
file = Faraday::UploadIO.new(path, mime ? mime.content_type : 'application/octet-stream')
|
36
|
+
doc['name'] ||= name
|
37
|
+
doc['file'] = file
|
38
|
+
arguments.params['data'] = { 'document' => doc }
|
39
|
+
arguments.params['options'] = { headers: { content_type: 'multipart/form-data' }}
|
40
|
+
|
41
|
+
post_request("/spaces/#{arguments.space}/documents", arguments.params)
|
42
|
+
end
|
43
|
+
|
44
|
+
# @example
|
45
|
+
# api.spaces.documents.get 'project1', 'guid'
|
46
|
+
def get(*args)
|
47
|
+
arguments(args, required: [:space, :id])
|
48
|
+
get_request("/spaces/#{arguments.space}/documents/#{arguments.id}", arguments.params)
|
49
|
+
end
|
50
|
+
|
51
|
+
# @example
|
52
|
+
# api.spaces.documents.download 'project1', 'guid'
|
53
|
+
def download(*args)
|
54
|
+
arguments(args, required: [:space, :id])
|
55
|
+
arguments.params['raw'] = true
|
56
|
+
get_request("/spaces/#{arguments.space}/documents/#{arguments.id}/download", arguments.params)
|
57
|
+
end
|
58
|
+
|
59
|
+
# @example
|
60
|
+
# api.spaces.documents.edit 'project1', 'guid', document: { description: "Confidential" }
|
61
|
+
def edit(*args)
|
62
|
+
arguments(args, required: [:space, :id]) do
|
63
|
+
permit VALID_PARAMS_NAMES , recursive: true
|
64
|
+
assert_values VALID_REQUEST_PARAM_VALUES
|
65
|
+
end
|
66
|
+
|
67
|
+
put_request("/spaces/#{arguments.space}/documents/#{arguments.id}", arguments.params)
|
68
|
+
end
|
69
|
+
|
70
|
+
# Delete document by ID
|
71
|
+
# @example
|
72
|
+
# api.spaces.documents.delete 'project1', 'guid'
|
73
|
+
def delete(*args)
|
74
|
+
arguments(args, required: [:space, :id])
|
75
|
+
delete_request("/spaces/#{arguments.space}/documents/#{arguments.id}", arguments.params)
|
76
|
+
end
|
77
|
+
|
78
|
+
# @example
|
79
|
+
# api.spaces.documents.list 'project1'
|
80
|
+
def list(*args)
|
81
|
+
arguments(args, required: [:space])
|
82
|
+
response = get_request("/spaces/#{arguments.space}/documents", arguments.params)
|
83
|
+
return response unless block_given?
|
84
|
+
response.each { |el| yield el }
|
85
|
+
end
|
86
|
+
end # documents
|
87
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
module Assembla
|
2
|
+
class Client::Spaces::Milestones < API
|
3
|
+
|
4
|
+
VALID_PARAMS_NAMES = %w[
|
5
|
+
title
|
6
|
+
user_id
|
7
|
+
is_completed
|
8
|
+
release_level
|
9
|
+
release_notes
|
10
|
+
planner_type
|
11
|
+
].freeze
|
12
|
+
|
13
|
+
VALID_REQUEST_PARAM_VALUES = {
|
14
|
+
'release_level' => [ 1, 2, 3 ], # Alpha, Beta, Stable
|
15
|
+
'planner_type' => [ 0, 1, 2 ], # None, Backlog, Current
|
16
|
+
'is_completed' => [ true, false ],
|
17
|
+
}
|
18
|
+
|
19
|
+
# @example
|
20
|
+
# api.spaces.milestones.create 'project1', milestone: { title: 'Mobile App V2' }
|
21
|
+
def create(*args)
|
22
|
+
arguments(args, required: [:space]) do
|
23
|
+
permit VALID_PARAMS_NAMES, recursive: true
|
24
|
+
assert_required %w[ title ]
|
25
|
+
assert_values VALID_REQUEST_PARAM_VALUES
|
26
|
+
end
|
27
|
+
|
28
|
+
post_request("/spaces/#{arguments.space}/milestones", arguments.params)
|
29
|
+
end
|
30
|
+
|
31
|
+
# @example
|
32
|
+
# api.spaces.milestones.get 'project1', 7
|
33
|
+
def get(*args)
|
34
|
+
arguments(args, required: [:space, :id])
|
35
|
+
get_request("/spaces/#{arguments.space}/milestones/#{arguments.id}", arguments.params)
|
36
|
+
end
|
37
|
+
|
38
|
+
# @example
|
39
|
+
# api.spaces.milestones.edit 'project1', 7, milestone: { is_completed: true }
|
40
|
+
def edit(*args)
|
41
|
+
arguments(args, required: [:space, :id]) do
|
42
|
+
permit VALID_PARAMS_NAMES , recursive: true
|
43
|
+
assert_values VALID_REQUEST_PARAM_VALUES
|
44
|
+
end
|
45
|
+
|
46
|
+
put_request("/spaces/#{arguments.space}/milestones/#{arguments.id}", arguments.params)
|
47
|
+
end
|
48
|
+
|
49
|
+
# Delete milestone by ID
|
50
|
+
# @example
|
51
|
+
# api.spaces.milestones.delete 'project1', 7
|
52
|
+
def delete(*args)
|
53
|
+
arguments(args, required: [:space, :id])
|
54
|
+
delete_request("/spaces/#{arguments.space}/milestones/#{arguments.id}", arguments.params)
|
55
|
+
end
|
56
|
+
|
57
|
+
# @example
|
58
|
+
# api.spaces.milestones.list 'project1'
|
59
|
+
def list(*args)
|
60
|
+
arguments(args, required: [:space])
|
61
|
+
response = get_request("/spaces/#{arguments.space}/milestones", arguments.params)
|
62
|
+
return response unless block_given?
|
63
|
+
response.each { |el| yield el }
|
64
|
+
end
|
65
|
+
|
66
|
+
# @example
|
67
|
+
# api.spaces.milestones.all 'project1'
|
68
|
+
def all(*args)
|
69
|
+
arguments(args, required: [:space])
|
70
|
+
response = get_request("/spaces/#{arguments.space}/milestones/all", arguments.params)
|
71
|
+
return response unless block_given?
|
72
|
+
response.each { |el| yield el }
|
73
|
+
end
|
74
|
+
|
75
|
+
# @example
|
76
|
+
# api.spaces.milestones.completed 'project1'
|
77
|
+
def completed(*args)
|
78
|
+
arguments(args, required: [:space])
|
79
|
+
response = get_request("/spaces/#{arguments.space}/milestones/completed", arguments.params)
|
80
|
+
return response unless block_given?
|
81
|
+
response.each { |el| yield el }
|
82
|
+
end
|
83
|
+
|
84
|
+
# @example
|
85
|
+
# api.spaces.milestones.upcoming 'project1'
|
86
|
+
def upcoming(*args)
|
87
|
+
arguments(args, required: [:space])
|
88
|
+
response = get_request("/spaces/#{arguments.space}/milestones/upcoming", arguments.params)
|
89
|
+
return response unless block_given?
|
90
|
+
response.each { |el| yield el }
|
91
|
+
end
|
92
|
+
|
93
|
+
# @example
|
94
|
+
# api.spaces.milestones.release_notes 'project1'
|
95
|
+
def release_notes(*args)
|
96
|
+
arguments(args, required: [:space])
|
97
|
+
response = get_request("/spaces/#{arguments.space}/milestones/release_notes", arguments.params)
|
98
|
+
return response unless block_given?
|
99
|
+
response.each { |el| yield el }
|
100
|
+
end
|
101
|
+
end # milestones
|
102
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Assembla
|
2
|
+
class Client::Spaces::SpaceTools < API
|
3
|
+
require_all 'assembla_api/client/spaces/space_tools',
|
4
|
+
'merge_requests'
|
5
|
+
|
6
|
+
namespace :merge_requests
|
7
|
+
|
8
|
+
VALID_PARAMS_NAMES = %w{
|
9
|
+
team_permissions
|
10
|
+
watcher_permissions
|
11
|
+
public_permissions
|
12
|
+
}
|
13
|
+
|
14
|
+
# @example
|
15
|
+
# api.spaces.space_tools.create 'project1', 21,
|
16
|
+
def create(*args)
|
17
|
+
arguments(args, required: [:space, :tool_id])
|
18
|
+
post_request("/spaces/#{arguments.space}/space_tools/#{arguments.tool_id}/add")
|
19
|
+
end
|
20
|
+
|
21
|
+
# @example
|
22
|
+
# api.spaces.space_tools.edit 'project1', 'tool_guid', space_tool: {watcher_permissions: 1}
|
23
|
+
def edit(*args)
|
24
|
+
arguments(args, required: [:space, :space_tool_id]) do
|
25
|
+
permit VALID_PARAMS_NAMES, recursive: true
|
26
|
+
end
|
27
|
+
|
28
|
+
put_request("/spaces/#{arguments.space}/space_tools/#{arguments.space_tool_id}", arguments.params)
|
29
|
+
end
|
30
|
+
|
31
|
+
# @example
|
32
|
+
# api.spaces.space_tools.get 'project1', 'tool_guid'
|
33
|
+
def get(*args)
|
34
|
+
arguments(args, required: [:space, :space_tool_id])
|
35
|
+
get_request("/spaces/#{arguments.space}/space_tools/#{arguments.space_tool_id}")
|
36
|
+
end
|
37
|
+
|
38
|
+
# @example
|
39
|
+
# api.spaces.space_tools.delete 'project1', 'tool_guid'
|
40
|
+
def delete(*args)
|
41
|
+
arguments(args, required: [:space, :space_tool_id])
|
42
|
+
delete_request("/spaces/#{arguments.space}/space_tools/#{arguments.space_tool_id}")
|
43
|
+
end
|
44
|
+
|
45
|
+
# @example
|
46
|
+
# api.spaces.space_tools.list 'project1'
|
47
|
+
# api.spaces.space_tools.all 'project1'
|
48
|
+
def list(*args)
|
49
|
+
arguments(args, required: [:space])
|
50
|
+
response = get_request("/spaces/#{arguments.space}/space_tools", arguments.params)
|
51
|
+
return response unless block_given?
|
52
|
+
response.each { |el| yield el }
|
53
|
+
end
|
54
|
+
alias :all :list
|
55
|
+
|
56
|
+
# @example
|
57
|
+
# api.spaces.space_tools.repo_list 'project1'
|
58
|
+
def repo_list(*args)
|
59
|
+
arguments(args, required: [:space])
|
60
|
+
response = get_request("/spaces/#{arguments.space}/space_tools/repo", arguments.params)
|
61
|
+
return response unless block_given?
|
62
|
+
response.each { |el| yield el }
|
63
|
+
end
|
64
|
+
end # SpaceTools
|
65
|
+
end # Assembla
|