assembla_api 0.1.2
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 +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
|