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,41 @@
|
|
|
1
|
+
module Assembla
|
|
2
|
+
class Client::Spaces::StandupAwayReports < API
|
|
3
|
+
|
|
4
|
+
VALID_PARAMS_NAMES = %w[
|
|
5
|
+
what_i_did
|
|
6
|
+
what_i_will_do
|
|
7
|
+
roadblocks
|
|
8
|
+
filled_for
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
# @example
|
|
12
|
+
# api.spaces.standup_away_reports.create 'project1', standup_report: { what_i_will_do: 'Work on #400' }
|
|
13
|
+
def create(*args)
|
|
14
|
+
arguments(args, required: [:space]) do
|
|
15
|
+
permit VALID_PARAMS_NAMES, recursive: true
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
post_request("/spaces/#{arguments.space}/away_standup_report", arguments.params)
|
|
19
|
+
end
|
|
20
|
+
alias :edit :create
|
|
21
|
+
|
|
22
|
+
# @example
|
|
23
|
+
# api.spaces.standup_away_reports.my 'project1', date: '2014-09-09'
|
|
24
|
+
def my(*args)
|
|
25
|
+
arguments(args, required: [:space]) do
|
|
26
|
+
permit VALID_PARAMS_NAMES + ['date'], recursive: true
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
get_request("/spaces/#{arguments.space}/away_standup_report", arguments.params)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# @example
|
|
33
|
+
# api.spaces.standup_away_reports.list 'project1'
|
|
34
|
+
def list(*args)
|
|
35
|
+
arguments(args, required: [:space])
|
|
36
|
+
response = get_request("/spaces/#{arguments.space}/away_standup_reports", arguments.params)
|
|
37
|
+
return response unless block_given?
|
|
38
|
+
response.each { |el| yield el }
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module Assembla
|
|
2
|
+
class Client::Spaces::StandupReports < API
|
|
3
|
+
|
|
4
|
+
VALID_PARAMS_NAMES = %w[
|
|
5
|
+
what_i_did
|
|
6
|
+
what_i_will_do
|
|
7
|
+
roadblocks
|
|
8
|
+
filled_for
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
# @example
|
|
12
|
+
# api.spaces.standup_reports.create 'project1', standup_report: { what_i_will_do: 'Work on #400' }
|
|
13
|
+
def create(*args)
|
|
14
|
+
arguments(args, required: [:space]) do
|
|
15
|
+
permit VALID_PARAMS_NAMES, recursive: true
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
post_request("/spaces/#{arguments.space}/standup_report", arguments.params)
|
|
19
|
+
end
|
|
20
|
+
alias :edit :create
|
|
21
|
+
|
|
22
|
+
# @example
|
|
23
|
+
# api.spaces.standup_reports.my 'project1'
|
|
24
|
+
def my(*args)
|
|
25
|
+
arguments(args, required: [:space]) do
|
|
26
|
+
permit VALID_PARAMS_NAMES, recursive: true
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
get_request("/spaces/#{arguments.space}/standup_report", arguments.params)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# @example
|
|
33
|
+
# api.spaces.standup_reports.list 'project1'
|
|
34
|
+
def list(*args)
|
|
35
|
+
arguments(args, required: [:space])
|
|
36
|
+
response = get_request("/spaces/#{arguments.space}/standup_reports", arguments.params)
|
|
37
|
+
return response unless block_given?
|
|
38
|
+
response.each { |el| yield el }
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
module Assembla
|
|
2
|
+
class Client::Spaces::Tags < API
|
|
3
|
+
|
|
4
|
+
VALID_PARAMS_NAMES = %w[
|
|
5
|
+
name
|
|
6
|
+
state
|
|
7
|
+
].freeze
|
|
8
|
+
|
|
9
|
+
VALID_REQUEST_PARAM_VALUES = {
|
|
10
|
+
'state' => [ 1, 2, 4 ]
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
# @example
|
|
14
|
+
# api.spaces.tags.create 'project1', tag: { name: 'Backend' }
|
|
15
|
+
def create(*args)
|
|
16
|
+
arguments(args, required: [:space]) do
|
|
17
|
+
permit VALID_PARAMS_NAMES, recursive: true
|
|
18
|
+
assert_required %w[ name ]
|
|
19
|
+
assert_values VALID_REQUEST_PARAM_VALUES
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
post_request("/spaces/#{arguments.space}/tags", arguments.params)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# @example
|
|
26
|
+
# api.spaces.tags.get 'project1', 'tag-id'
|
|
27
|
+
def get(*args)
|
|
28
|
+
arguments(args, required: [:space, :id])
|
|
29
|
+
get_request("/spaces/#{arguments.space}/tags/#{arguments.id}", arguments.params)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# @example
|
|
33
|
+
# api.spaces.tags.edit 'project1', 'tag-id', tag: { state: 4 }
|
|
34
|
+
def edit(*args)
|
|
35
|
+
arguments(args, required: [:space, :id]) do
|
|
36
|
+
permit VALID_PARAMS_NAMES , recursive: true
|
|
37
|
+
assert_values VALID_REQUEST_PARAM_VALUES
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
put_request("/spaces/#{arguments.space}/tags/#{arguments.id}", arguments.params)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Delete tag by ID
|
|
44
|
+
# @example
|
|
45
|
+
# api.spaces.tags.delete 'project1', 'tag-id'
|
|
46
|
+
def delete(*args)
|
|
47
|
+
arguments(args, required: [:space, :id])
|
|
48
|
+
delete_request("/spaces/#{arguments.space}/tags/#{arguments.id}", arguments.params)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# @example
|
|
52
|
+
# api.spaces.tags.list 'project1'
|
|
53
|
+
def list(*args)
|
|
54
|
+
arguments(args, required: [:space])
|
|
55
|
+
response = get_request("/spaces/#{arguments.space}/tags", arguments.params)
|
|
56
|
+
return response unless block_given?
|
|
57
|
+
response.each { |el| yield el }
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# @example
|
|
61
|
+
# api.spaces.tags.active 'project1'
|
|
62
|
+
def active(*args)
|
|
63
|
+
arguments(args, required: [:space])
|
|
64
|
+
response = get_request("/spaces/#{arguments.space}/tags/active", arguments.params)
|
|
65
|
+
return response unless block_given?
|
|
66
|
+
response.each { |el| yield el }
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# @example
|
|
70
|
+
# api.spaces.tags.proposed 'project1'
|
|
71
|
+
def proposed(*args)
|
|
72
|
+
arguments(args, required: [:space])
|
|
73
|
+
response = get_request("/spaces/#{arguments.space}/tags/proposed", arguments.params)
|
|
74
|
+
return response unless block_given?
|
|
75
|
+
response.each { |el| yield el }
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# @example
|
|
79
|
+
# api.spaces.tags.hidden 'project1'
|
|
80
|
+
def hidden(*args)
|
|
81
|
+
arguments(args, required: [:space])
|
|
82
|
+
response = get_request("/spaces/#{arguments.space}/tags/hidden", arguments.params)
|
|
83
|
+
return response unless block_given?
|
|
84
|
+
response.each { |el| yield el }
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# @example
|
|
88
|
+
# api.spaces.tags.tickets 'project1', 'tag-id'
|
|
89
|
+
def tickets(*args)
|
|
90
|
+
arguments(args, required: [:space, :id])
|
|
91
|
+
response = get_request("/spaces/#{arguments.space}/tags/#{arguments.id}/tickets", arguments.params)
|
|
92
|
+
return response unless block_given?
|
|
93
|
+
response.each { |el| yield el }
|
|
94
|
+
end
|
|
95
|
+
end # tags
|
|
96
|
+
end
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
module Assembla
|
|
2
|
+
class Client::Spaces::Tickets < API
|
|
3
|
+
require_all 'assembla_api/client/spaces/tickets',
|
|
4
|
+
'custom_fields',
|
|
5
|
+
'associations',
|
|
6
|
+
'comments',
|
|
7
|
+
'statuses'
|
|
8
|
+
|
|
9
|
+
# Access to Spaces::Tickets::Statuses API
|
|
10
|
+
namespace :statuses
|
|
11
|
+
namespace :custom_fields
|
|
12
|
+
namespace :associations
|
|
13
|
+
namespace :comments
|
|
14
|
+
|
|
15
|
+
VALID_PARAMS_NAMES = %w[
|
|
16
|
+
summary
|
|
17
|
+
description
|
|
18
|
+
priority
|
|
19
|
+
component_id
|
|
20
|
+
created_on
|
|
21
|
+
permission_type
|
|
22
|
+
is_story
|
|
23
|
+
milestone_id
|
|
24
|
+
tags
|
|
25
|
+
followers
|
|
26
|
+
notification_list
|
|
27
|
+
status
|
|
28
|
+
story_importance
|
|
29
|
+
working_hours
|
|
30
|
+
estimate
|
|
31
|
+
assigned_to_id
|
|
32
|
+
custom_fields
|
|
33
|
+
hierarchy_type
|
|
34
|
+
is_support
|
|
35
|
+
].freeze
|
|
36
|
+
|
|
37
|
+
# @example
|
|
38
|
+
# api.spaces.tickets.create 'project1', ticket: { summary: 'First ticket' }
|
|
39
|
+
def create(*args)
|
|
40
|
+
arguments(args, required: [:space]) do
|
|
41
|
+
permit VALID_PARAMS_NAMES, recursive: true
|
|
42
|
+
assert_required %w[ summary ]
|
|
43
|
+
# TODO assert_values VALID_REQUEST_PARAM_VALUES
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
post_request("/spaces/#{arguments.space}/tickets", arguments.params)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# @example
|
|
50
|
+
# api.spaces.tickets.get 'project1', 7
|
|
51
|
+
def get(*args)
|
|
52
|
+
arguments(args, required: [:space, :number])
|
|
53
|
+
get_request("/spaces/#{arguments.space}/tickets/#{arguments.number}", arguments.params)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# @example
|
|
57
|
+
# api.spaces.tickets.get_by_id 'project1', 1710
|
|
58
|
+
def get_by_id(*args)
|
|
59
|
+
arguments(args, required: [:space, :ticket_id])
|
|
60
|
+
get_request("/spaces/#{arguments.space}/tickets/id/#{arguments.ticket_id}", arguments.params)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# @example
|
|
64
|
+
# api.spaces.tickets.edit 'project1', 7, ticket: {description: 'REQ changed...'}
|
|
65
|
+
def edit(*args)
|
|
66
|
+
arguments(args, required: [:space, :number]) do
|
|
67
|
+
permit VALID_PARAMS_NAMES , recursive: true
|
|
68
|
+
# TODO assert_values VALID_REQUEST_PARAM_VALUES
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
put_request("/spaces/#{arguments.space}/tickets/#{arguments.number}", arguments.params)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Delete ticket by number
|
|
75
|
+
# @example
|
|
76
|
+
# api.spaces.tickets.delete 'project1', 7
|
|
77
|
+
def delete(*args)
|
|
78
|
+
arguments(args, required: [:space, :number])
|
|
79
|
+
delete_request("/spaces/#{arguments.space}/tickets/#{arguments.number}", arguments.params)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# @example
|
|
83
|
+
# api.spaces.tickets.list 'project1'
|
|
84
|
+
def list(*args)
|
|
85
|
+
arguments(args, required: [:space])
|
|
86
|
+
response = get_request("/spaces/#{arguments.space}/tickets", arguments.params)
|
|
87
|
+
return response unless block_given?
|
|
88
|
+
response.each { |el| yield el }
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# @example
|
|
92
|
+
# api.spaces.tickets.my 'project1'
|
|
93
|
+
def my(*args)
|
|
94
|
+
arguments(args, required: [:space])
|
|
95
|
+
response = get_request("/spaces/#{arguments.space}/tickets/my_active", arguments.params)
|
|
96
|
+
return response unless block_given?
|
|
97
|
+
response.each { |el| yield el }
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# @example
|
|
101
|
+
# api.spaces.tickets.followed 'project1'
|
|
102
|
+
def followed(*args)
|
|
103
|
+
arguments(args, required: [:space])
|
|
104
|
+
response = get_request("/spaces/#{arguments.space}/tickets/my_followed", arguments.params)
|
|
105
|
+
return response unless block_given?
|
|
106
|
+
response.each { |el| yield el }
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# @example
|
|
110
|
+
# api.spaces.tickets.by_milestone_id 'project1', 49
|
|
111
|
+
def by_milestone_id(*args)
|
|
112
|
+
arguments(args, required: [:space, :milestone_id])
|
|
113
|
+
response = get_request("/spaces/#{arguments.space}/tickets/milestone/#{arguments.milestone_id}", arguments.params)
|
|
114
|
+
return response unless block_given?
|
|
115
|
+
response.each { |el| yield el }
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# @example
|
|
119
|
+
# api.spaces.tickets.by_milestone_id 'project1'
|
|
120
|
+
def without_milestone(*args)
|
|
121
|
+
arguments(args, required: [:space])
|
|
122
|
+
response = get_request("/spaces/#{arguments.space}/tickets/no_milestone", arguments.params)
|
|
123
|
+
return response unless block_given?
|
|
124
|
+
response.each { |el| yield el }
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# @example
|
|
128
|
+
# api.spaces.tickets.attachments 'project1', 14
|
|
129
|
+
def attachments(*args)
|
|
130
|
+
arguments(args, required: [:space, :number])
|
|
131
|
+
response = get_request("/spaces/#{arguments.space}/tickets/#{arguments.number}/attachments", arguments.params)
|
|
132
|
+
return response unless block_given?
|
|
133
|
+
response.each { |el| yield el }
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# @example
|
|
137
|
+
# api.spaces.tickets.tags 'project1', 14
|
|
138
|
+
def tags(*args)
|
|
139
|
+
arguments(args, required: [:space, :number])
|
|
140
|
+
response = get_request("/spaces/#{arguments.space}/tickets/#{arguments.number}/tags", arguments.params)
|
|
141
|
+
return response unless block_given?
|
|
142
|
+
response.each { |el| yield el }
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# @example
|
|
146
|
+
# api.spaces.tickets.custom_reports 'project1'
|
|
147
|
+
def custom_reports(*args)
|
|
148
|
+
arguments(args, required: [:space])
|
|
149
|
+
response = get_request("/spaces/#{arguments.space}/tickets/custom_reports", arguments.params)
|
|
150
|
+
return response unless block_given?
|
|
151
|
+
response.each { |el| yield el }
|
|
152
|
+
end
|
|
153
|
+
end # Tickets
|
|
154
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
module Assembla
|
|
2
|
+
class Client::Spaces::Tickets::Associations < API
|
|
3
|
+
VALID_PARAMS_NAMES = %w{ ticket2_id relationship }
|
|
4
|
+
VALID_REQUEST_PARAM_VALUES = {
|
|
5
|
+
'relationship' => 0..8,
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
# @example
|
|
9
|
+
# api.spaces.tickets.associations.create 'project1', 500,
|
|
10
|
+
# ticket_association: { ticket2_id: 125, relationship: 6 }
|
|
11
|
+
def create(*args)
|
|
12
|
+
arguments(args, required: [:space, :number]) do
|
|
13
|
+
permit VALID_PARAMS_NAMES, recursive: true
|
|
14
|
+
assert_required %w[ ticket2_id ]
|
|
15
|
+
assert_values VALID_REQUEST_PARAM_VALUES
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
post_request("/spaces/#{arguments.space}/tickets/#{arguments.number}/ticket_associations", arguments.params)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @example
|
|
22
|
+
# api.spaces.tickets.associations.get 'project1', 500, 123
|
|
23
|
+
def get(*args)
|
|
24
|
+
arguments(args, required: [:space, :number, :id])
|
|
25
|
+
get_request("/spaces/#{arguments.space}/tickets/#{arguments.number}/ticket_associations/#{arguments.id}", arguments.params)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @example
|
|
29
|
+
# api.spaces.tickets.associations.edit 'project1', 500, 123, ticket_association: {relationship: 3}
|
|
30
|
+
def edit(*args)
|
|
31
|
+
arguments(args, required: [:space, :number, :id]) do
|
|
32
|
+
permit VALID_PARAMS_NAMES - ['ticket2_id'] , recursive: true
|
|
33
|
+
assert_required %w[ relationship ]
|
|
34
|
+
assert_values VALID_REQUEST_PARAM_VALUES
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
put_request("/spaces/#{arguments.space}/tickets/#{arguments.number}/ticket_associations/#{arguments.id}", arguments.params)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Delete ticket association by ID
|
|
41
|
+
# @example
|
|
42
|
+
# api.spaces.tickets.associations.delete 'project1', 500, 123
|
|
43
|
+
def delete(*args)
|
|
44
|
+
arguments(args, required: [:space, :number, :id])
|
|
45
|
+
delete_request("/spaces/#{arguments.space}/tickets/#{arguments.number}/ticket_associations/#{arguments.id}", arguments.params)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# @example
|
|
49
|
+
# api.spaces.tickets.associations.list 'project1', 500
|
|
50
|
+
def list(*args)
|
|
51
|
+
arguments(args, required: [:space, :number])
|
|
52
|
+
response = get_request("/spaces/#{arguments.space}/tickets/#{arguments.number}/ticket_associations", arguments.params)
|
|
53
|
+
return response unless block_given?
|
|
54
|
+
response.each { |el| yield el }
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
module Assembla
|
|
2
|
+
class Client::Spaces::Tickets::Comments < API
|
|
3
|
+
VALID_PARAMS_NAMES = %w{ user_id comment created_on }
|
|
4
|
+
|
|
5
|
+
# @example
|
|
6
|
+
# api.spaces.tickets.comments.create 'project1', 500,
|
|
7
|
+
# ticket_comment: { comment: 'I will do it now' }
|
|
8
|
+
def create(*args)
|
|
9
|
+
arguments(args, required: [:space, :number]) do
|
|
10
|
+
permit VALID_PARAMS_NAMES, recursive: true
|
|
11
|
+
assert_required %w[ comment ]
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
post_request("/spaces/#{arguments.space}/tickets/#{arguments.number}/ticket_comments", arguments.params)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# @example
|
|
18
|
+
# api.spaces.tickets.comments.get 'project1', 500, 142857
|
|
19
|
+
def get(*args)
|
|
20
|
+
arguments(args, required: [:space, :number, :id])
|
|
21
|
+
get_request("/spaces/#{arguments.space}/tickets/#{arguments.number}/ticket_comments/#{arguments.id}", arguments.params)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @example
|
|
25
|
+
# api.spaces.tickets.comments.edit 'project1', 500, 142857,
|
|
26
|
+
# ticket_comment: { comment: 'Ops, I made a typo' }
|
|
27
|
+
def edit(*args)
|
|
28
|
+
arguments(args, required: [:space, :number, :id]) do
|
|
29
|
+
permit ['comment'] , recursive: true
|
|
30
|
+
assert_required %w[ comment ]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
put_request("/spaces/#{arguments.space}/tickets/#{arguments.number}/ticket_comments/#{arguments.id}", arguments.params)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# @example
|
|
37
|
+
# api.spaces.tickets.comments.list 'project1', 500
|
|
38
|
+
def list(*args)
|
|
39
|
+
arguments(args, required: [:space, :number])
|
|
40
|
+
response = get_request("/spaces/#{arguments.space}/tickets/#{arguments.number}/ticket_comments", arguments.params)
|
|
41
|
+
return response unless block_given?
|
|
42
|
+
response.each { |el| yield el }
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
module Assembla
|
|
2
|
+
class Client::Spaces::Tickets::CustomFields < API
|
|
3
|
+
VALID_PARAMS_NAMES = %w{type title order required hide default_value list_options}
|
|
4
|
+
VALID_REQUEST_PARAM_VALUES = {
|
|
5
|
+
'type' => %w{text numeric team\ list list date},
|
|
6
|
+
'required' => [true, false],
|
|
7
|
+
'hide' => [true, false]
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
# @example
|
|
11
|
+
# api.spaces.tickets.custom_fields.create 'project1', custom_field: { title: 'Build' }
|
|
12
|
+
def create(*args)
|
|
13
|
+
arguments(args, required: [:space]) do
|
|
14
|
+
permit VALID_PARAMS_NAMES, recursive: true
|
|
15
|
+
assert_required %w[ title ]
|
|
16
|
+
assert_values VALID_REQUEST_PARAM_VALUES
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
post_request("/spaces/#{arguments.space}/tickets/custom_fields", arguments.params)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# @example
|
|
23
|
+
# api.spaces.tickets.custom_fields.get 'project1', 34
|
|
24
|
+
def get(*args)
|
|
25
|
+
arguments(args, required: [:space, :id])
|
|
26
|
+
get_request("/spaces/#{arguments.space}/tickets/custom_fields/#{arguments.id}", arguments.params)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# @example
|
|
30
|
+
# api.spaces.tickets.custom_fields.edit 'project1', 34, custom_field: {title: 'Build Number', type: 'numeric'}
|
|
31
|
+
def edit(*args)
|
|
32
|
+
arguments(args, required: [:space, :id]) do
|
|
33
|
+
permit VALID_PARAMS_NAMES , recursive: true
|
|
34
|
+
assert_values VALID_REQUEST_PARAM_VALUES
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
put_request("/spaces/#{arguments.space}/tickets/custom_fields/#{arguments.id}", arguments.params)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Delete ticket status by ID
|
|
41
|
+
# @example
|
|
42
|
+
# api.spaces.tickets.custom_fields.delete 'project1', 34
|
|
43
|
+
def delete(*args)
|
|
44
|
+
arguments(args, required: [:space, :id])
|
|
45
|
+
delete_request("/spaces/#{arguments.space}/tickets/custom_fields/#{arguments.id}", arguments.params)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# @example
|
|
49
|
+
# api.spaces.tickets.custom_fields.list 'project1'
|
|
50
|
+
def list(*args)
|
|
51
|
+
arguments(args, required: [:space])
|
|
52
|
+
response = get_request("/spaces/#{arguments.space}/tickets/custom_fields", arguments.params)
|
|
53
|
+
return response unless block_given?
|
|
54
|
+
response.each { |el| yield el }
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|