redbooth-ruby 0.0.4 → 0.0.5
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 +4 -4
- data/README.md +237 -20
- data/lib/redbooth-ruby.rb +10 -0
- data/lib/redbooth-ruby/base.rb +1 -1
- data/lib/redbooth-ruby/client.rb +9 -2
- data/lib/redbooth-ruby/client_operations/metadata.rb +32 -0
- data/lib/redbooth-ruby/client_operations/search.rb +32 -0
- data/lib/redbooth-ruby/comment.rb +34 -0
- data/lib/redbooth-ruby/file.rb +68 -0
- data/lib/redbooth-ruby/note.rb +25 -0
- data/lib/redbooth-ruby/operations/create.rb +1 -1
- data/lib/redbooth-ruby/operations/index.rb +0 -12
- data/lib/redbooth-ruby/operations/meta.rb +33 -2
- data/lib/redbooth-ruby/operations/show.rb +1 -1
- data/lib/redbooth-ruby/request/collection.rb +37 -5
- data/lib/redbooth-ruby/request/connection.rb +14 -8
- data/lib/redbooth-ruby/request/validator.rb +32 -4
- data/lib/redbooth-ruby/subtask.rb +18 -0
- data/lib/redbooth-ruby/task.rb +1 -1
- data/lib/redbooth-ruby/version.rb +1 -1
- data/redbooth-ruby.gemspec +1 -0
- data/spec/cassettes/RedboothRuby_ClientOperations_Metadata/_metadata/.yml +55 -0
- data/spec/cassettes/RedboothRuby_ClientOperations_Metadata/_metadata/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_notes_collection.yml +55 -0
- data/spec/cassettes/RedboothRuby_ClientOperations_Search/_index/.yml +271 -0
- data/spec/cassettes/RedboothRuby_ClientOperations_Search/_index/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_notes_collection.yml +271 -0
- data/spec/cassettes/RedboothRuby_Comment/_create/.yml +47 -0
- data/spec/cassettes/RedboothRuby_Comment/_create/makes_a_new_POST_request_using_the_correct_API_endpoint_to_create_a_specific_comment.yml +47 -0
- data/spec/cassettes/RedboothRuby_Comment/_delete/makes_a_new_DELETE_request_using_the_correct_API_endpoint_to_delete_a_specific_comment.yml +84 -0
- data/spec/cassettes/RedboothRuby_Comment/_index/.yml +94 -0
- data/spec/cassettes/RedboothRuby_Comment/_index/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_comments_collection.yml +94 -0
- data/spec/cassettes/RedboothRuby_Comment/_initialize/.yml +65 -0
- data/spec/cassettes/RedboothRuby_Comment/_show/.yml +65 -0
- data/spec/cassettes/RedboothRuby_Comment/_show/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_a_specific_comment.yml +65 -0
- data/spec/cassettes/RedboothRuby_Comment/_update/.yml +47 -0
- data/spec/cassettes/RedboothRuby_Comment/_update/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_comment.yml +47 -0
- data/spec/cassettes/RedboothRuby_File/_create/.yml +65 -0
- data/spec/cassettes/RedboothRuby_File/_create/makes_a_new_POST_request_using_the_correct_API_endpoint_to_create_a_specific_file.yml +65 -0
- data/spec/cassettes/RedboothRuby_File/_delete/makes_a_new_DELETE_request_using_the_correct_API_endpoint_to_delete_a_specific_comment.yml +102 -0
- data/spec/cassettes/RedboothRuby_File/_index/.yml +58 -0
- data/spec/cassettes/RedboothRuby_File/_index/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_comments_collection.yml +58 -0
- data/spec/cassettes/RedboothRuby_File/_initialize/.yml +44 -0
- data/spec/cassettes/RedboothRuby_File/_show/.yml +44 -0
- data/spec/cassettes/RedboothRuby_File/_show/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_a_specific_file.yml +44 -0
- data/spec/cassettes/RedboothRuby_File/_update/.yml +46 -0
- data/spec/cassettes/RedboothRuby_File/_update/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_file.yml +46 -0
- data/spec/cassettes/RedboothRuby_Note/_create/.yml +47 -0
- data/spec/cassettes/RedboothRuby_Note/_create/makes_a_new_POST_request_using_the_correct_API_endpoint_to_create_a_specific_note.yml +47 -0
- data/spec/cassettes/RedboothRuby_Note/_delete/makes_a_new_DELETE_request_using_the_correct_API_endpoint_to_delete_a_specific_note.yml +84 -0
- data/spec/cassettes/RedboothRuby_Note/_index/.yml +193 -0
- data/spec/cassettes/RedboothRuby_Note/_index/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_notes_collection.yml +193 -0
- data/spec/cassettes/RedboothRuby_Note/_initialize/.yml +109 -0
- data/spec/cassettes/RedboothRuby_Note/_show/.yml +109 -0
- data/spec/cassettes/RedboothRuby_Note/_show/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_a_specific_note.yml +109 -0
- data/spec/cassettes/RedboothRuby_Note/_update/.yml +73 -0
- data/spec/cassettes/RedboothRuby_Note/_update/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_note.yml +73 -0
- data/spec/cassettes/RedboothRuby_Subtask/_create/.yml +47 -0
- data/spec/cassettes/RedboothRuby_Subtask/_create/makes_a_new_POST_request_using_the_correct_API_endpoint_to_create_a_specific_subtask.yml +47 -0
- data/spec/cassettes/RedboothRuby_Subtask/_delete/makes_a_new_DELETE_request_using_the_correct_API_endpoint_to_delete_a_specific_subtask.yml +84 -0
- data/spec/cassettes/RedboothRuby_Subtask/_index/.yml +99 -0
- data/spec/cassettes/RedboothRuby_Subtask/_index/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_subtasks_collection.yml +99 -0
- data/spec/cassettes/RedboothRuby_Subtask/_initialize/.yml +45 -0
- data/spec/cassettes/RedboothRuby_Subtask/_show/.yml +45 -0
- data/spec/cassettes/RedboothRuby_Subtask/_show/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_a_specific_subtask.yml +45 -0
- data/spec/cassettes/RedboothRuby_Subtask/_update/.yml +47 -0
- data/spec/cassettes/RedboothRuby_Subtask/_update/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_subtask.yml +47 -0
- data/spec/cassettes/RedboothRuby_Task/_medatada/.yml +88 -0
- data/spec/cassettes/RedboothRuby_Task/_medatada/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_task.yml +88 -0
- data/spec/cassettes/RedboothRuby_Task/_medatada_/.yml +90 -0
- data/spec/cassettes/RedboothRuby_Task/_medatada_/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_task.yml +90 -0
- data/spec/cassettes/RedboothRuby_Task/_metadata_merge/.yml +133 -0
- data/spec/cassettes/RedboothRuby_Task/_metadata_merge/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_task.yml +133 -0
- data/spec/redbooth-ruby/client_operations/metadata_spec.rb +24 -0
- data/spec/redbooth-ruby/client_operations/search_spec.rb +24 -0
- data/spec/redbooth-ruby/comment_spec.rb +87 -0
- data/spec/redbooth-ruby/file_spec.rb +89 -0
- data/spec/redbooth-ruby/note_spec.rb +84 -0
- data/spec/redbooth-ruby/subtaks_spec.rb +83 -0
- data/spec/redbooth-ruby/task_spec.rb +41 -0
- data/spec/spec_helper.rb +2 -0
- metadata +134 -2
@@ -0,0 +1,32 @@
|
|
1
|
+
module RedboothRuby
|
2
|
+
module ClientOperations
|
3
|
+
module Search
|
4
|
+
|
5
|
+
# Retrieves all available objects from the Redbooth API by searching for the
|
6
|
+
# given parameters and query
|
7
|
+
#
|
8
|
+
# @param [Hash] options Options to pass to the API
|
9
|
+
# @return [Array] The available objects
|
10
|
+
def search(attributes = {})
|
11
|
+
response = RedboothRuby.request(:get, nil, 'search' , attributes, { session: session })
|
12
|
+
collection_from attributes, response, session
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
# Creates a collection object from the request and response params
|
18
|
+
#
|
19
|
+
# @param params [Hash] given request params
|
20
|
+
# @param response [RedboothRuby::Request::Response] response object
|
21
|
+
# @param session [RedboothRuby::Session] session Object
|
22
|
+
# @return [RedboothRuby::Request::Collection]
|
23
|
+
def collection_from(params, response, session)
|
24
|
+
RedboothRuby::Request::Collection.new(response: response,
|
25
|
+
resource: self,
|
26
|
+
session: session,
|
27
|
+
params: params,
|
28
|
+
method: :search)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module RedboothRuby
|
2
|
+
class Comment < Base
|
3
|
+
include RedboothRuby::Operations::Index
|
4
|
+
include RedboothRuby::Operations::Create
|
5
|
+
include RedboothRuby::Operations::Update
|
6
|
+
include RedboothRuby::Operations::Show
|
7
|
+
include RedboothRuby::Operations::Delete
|
8
|
+
|
9
|
+
attr_accessor :id,
|
10
|
+
:body,
|
11
|
+
:body_html,
|
12
|
+
:project_id,
|
13
|
+
:user_id,
|
14
|
+
:target_id,
|
15
|
+
:target_type,
|
16
|
+
:minutes,
|
17
|
+
:upload_ids,
|
18
|
+
:assigned_id,
|
19
|
+
:previous_assigned_id,
|
20
|
+
:due_on,
|
21
|
+
:previous_due_on,
|
22
|
+
:is_private,
|
23
|
+
:previous_is_private,
|
24
|
+
:urgent,
|
25
|
+
:previous_urgent,
|
26
|
+
:email_id,
|
27
|
+
:time_tracking_on,
|
28
|
+
:status,
|
29
|
+
:previous_status,
|
30
|
+
:created_at,
|
31
|
+
:updated_at
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module RedboothRuby
|
2
|
+
class File < Base
|
3
|
+
include RedboothRuby::Operations::Index
|
4
|
+
include RedboothRuby::Operations::Create
|
5
|
+
include RedboothRuby::Operations::Update
|
6
|
+
include RedboothRuby::Operations::Show
|
7
|
+
include RedboothRuby::Operations::Delete
|
8
|
+
|
9
|
+
attr_accessor :id,
|
10
|
+
:name,
|
11
|
+
:backend,
|
12
|
+
:project_id,
|
13
|
+
:parent_id,
|
14
|
+
:backend_id,
|
15
|
+
:is_dir,
|
16
|
+
:is_downloadable,
|
17
|
+
:is_previewable,
|
18
|
+
:is_private,
|
19
|
+
:mime_type,
|
20
|
+
:public_token,
|
21
|
+
:pinned,
|
22
|
+
:size,
|
23
|
+
:user_id,
|
24
|
+
:created_at,
|
25
|
+
:updated_at
|
26
|
+
|
27
|
+
class << self
|
28
|
+
# Create operation overwrite to parse file first
|
29
|
+
def create(attrs)
|
30
|
+
super(parse_file(attrs))
|
31
|
+
end
|
32
|
+
|
33
|
+
protected
|
34
|
+
|
35
|
+
# Parses the uploaded file to make the correct api request
|
36
|
+
#
|
37
|
+
# @param attributes [Hash] attributes to parse
|
38
|
+
# @return [Hash] parsed attributes hash
|
39
|
+
def parse_file(attrs)
|
40
|
+
return attrs unless attrs[:asset]
|
41
|
+
attrs[:asset_attrs] = {}
|
42
|
+
if attrs[:asset].kind_of?(::File) or attrs[:asset].kind_of?(::Tempfile) then
|
43
|
+
attrs[:asset_attrs][:name] = attrs[:asset].respond_to?(:original_filename) ? attrs[:asset].original_filename : ::File.basename(attrs[:asset].path)
|
44
|
+
attrs[:asset_attrs][:local_path] = attrs[:asset].path
|
45
|
+
elsif attrs[:asset].kind_of?(String) then
|
46
|
+
attrs[:asset_attrs][:local_path] = attrs[:asset]
|
47
|
+
attrs[:asset] = ::File.new(attrs[:file])
|
48
|
+
attrs[:asset_attrs][:name] = ::File.basename(attrs[:asset_attrs][:local_path])
|
49
|
+
elsif attrs[:asset].kind_of?(StringIO) then
|
50
|
+
raise(ArgumentError, "Must specify the :as option when uploading from StringIO") unless attrs[:as]
|
51
|
+
attrs[:asset_attrs][:local_path] = attrs[:as]
|
52
|
+
|
53
|
+
# hack for bug in UploadIO
|
54
|
+
class << file
|
55
|
+
attr_accessor :path
|
56
|
+
end
|
57
|
+
file.path = attrs[:asset]
|
58
|
+
else
|
59
|
+
raise ArgumentError, "local_file must be a File, StringIO, or file path"
|
60
|
+
end
|
61
|
+
|
62
|
+
attrs[:asset_attrs][:name] = ::File.basename(attrs.delete(:as)) if attrs[:as]
|
63
|
+
|
64
|
+
attrs
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module RedboothRuby
|
2
|
+
class Note < Base
|
3
|
+
include RedboothRuby::Operations::Index
|
4
|
+
include RedboothRuby::Operations::Create
|
5
|
+
include RedboothRuby::Operations::Update
|
6
|
+
include RedboothRuby::Operations::Show
|
7
|
+
include RedboothRuby::Operations::Delete
|
8
|
+
|
9
|
+
attr_accessor :id,
|
10
|
+
:name,
|
11
|
+
:project_id,
|
12
|
+
:content,
|
13
|
+
:user_id,
|
14
|
+
:position,
|
15
|
+
:permalink,
|
16
|
+
:is_private,
|
17
|
+
:shared,
|
18
|
+
:token,
|
19
|
+
:updated_by_id,
|
20
|
+
:deleted,
|
21
|
+
:created_at,
|
22
|
+
:updated_at
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -27,18 +27,6 @@ module RedboothRuby
|
|
27
27
|
params: params,
|
28
28
|
method: :index)
|
29
29
|
end
|
30
|
-
|
31
|
-
# Returns the collection object build from the received response
|
32
|
-
#
|
33
|
-
# @param response [Array || Hash] parsed json response
|
34
|
-
# @return [RedboothRuby::Collection]
|
35
|
-
def results_from(response)
|
36
|
-
results = []
|
37
|
-
response.data.each do |obj|
|
38
|
-
results << self.new(obj)
|
39
|
-
end
|
40
|
-
results
|
41
|
-
end
|
42
30
|
end
|
43
31
|
|
44
32
|
def self.included(base)
|
@@ -6,10 +6,41 @@ module RedboothRuby
|
|
6
6
|
# @return [Hash] the object metadata
|
7
7
|
def metadata
|
8
8
|
response = RedboothRuby.request(:get, nil, 'metadata',
|
9
|
-
{ target_id: id, target_type:
|
10
|
-
|
9
|
+
{ target_id: id, target_type: klass_name },
|
10
|
+
{ session: session })
|
11
11
|
response.data
|
12
12
|
end
|
13
|
+
|
14
|
+
# Sets the given hash as the desired metadata
|
15
|
+
#
|
16
|
+
# @return [Hash] the object metadata
|
17
|
+
def metadata=(hash)
|
18
|
+
response = RedboothRuby.request(:post, nil, 'metadata',
|
19
|
+
{ target_id: id, target_type: klass_name, metadata: hash },
|
20
|
+
{ session: session })
|
21
|
+
|
22
|
+
response.data
|
23
|
+
end
|
24
|
+
|
25
|
+
# Merges the given hash with the exiting metadata and set the result
|
26
|
+
#
|
27
|
+
# @return [Hash] the object metadata
|
28
|
+
def metadata_merge(hash)
|
29
|
+
response = RedboothRuby.request(:put, nil, 'metadata',
|
30
|
+
{ target_id: id, target_type: klass_name, metadata: hash },
|
31
|
+
{ session: session })
|
32
|
+
|
33
|
+
response.data
|
34
|
+
end
|
35
|
+
|
36
|
+
protected
|
37
|
+
|
38
|
+
# Return redbooth class name
|
39
|
+
#
|
40
|
+
# @return [String]
|
41
|
+
def klass_name
|
42
|
+
self.class.to_s.split('::').last
|
43
|
+
end
|
13
44
|
end
|
14
45
|
end
|
15
46
|
end
|
@@ -15,11 +15,7 @@ module RedboothRuby
|
|
15
15
|
#
|
16
16
|
# @return [Array(resource)]
|
17
17
|
def all
|
18
|
-
|
19
|
-
response.data.each do |obj|
|
20
|
-
results << resource.new(obj)
|
21
|
-
end
|
22
|
-
results
|
18
|
+
results_from(response)
|
23
19
|
end
|
24
20
|
|
25
21
|
# Returns total pages
|
@@ -75,6 +71,42 @@ module RedboothRuby
|
|
75
71
|
|
76
72
|
protected
|
77
73
|
|
74
|
+
# Returns the collection object build from the received response
|
75
|
+
#
|
76
|
+
# @param response [Array || Hash] parsed json response
|
77
|
+
# @return [RedboothRuby::Collection]
|
78
|
+
def results_from(response)
|
79
|
+
response.data.collect do |obj|
|
80
|
+
case resource
|
81
|
+
when RedboothRuby::Client
|
82
|
+
next unless resource_form_hash(obj.merge(session: session))
|
83
|
+
resource_form_hash(obj.merge(session: session))
|
84
|
+
else
|
85
|
+
resource.new(obj.merge(session: session))
|
86
|
+
end
|
87
|
+
end.compact
|
88
|
+
end
|
89
|
+
|
90
|
+
# Builds a resource ruby object based on the given hash
|
91
|
+
# it need to contain a 'type' key defining the object type
|
92
|
+
#
|
93
|
+
# @return [Redbooth::Base]
|
94
|
+
def resource_form_hash(hash)
|
95
|
+
return unless hash['type']
|
96
|
+
klass_name = hash['type']
|
97
|
+
klass = resource_klass(klass_name)
|
98
|
+
return unless klass
|
99
|
+
klass.new(hash)
|
100
|
+
end
|
101
|
+
|
102
|
+
# Gest the api resource model class by his name
|
103
|
+
#
|
104
|
+
# @param [String||Symbol] name name of the resource
|
105
|
+
# @return [Copy::Base] resource to use the api
|
106
|
+
def resource_klass(name)
|
107
|
+
eval('RedboothRuby::' + name.to_s.capitalize) rescue nil
|
108
|
+
end
|
109
|
+
|
78
110
|
# Whenever the response is paginated or not
|
79
111
|
def paginated?
|
80
112
|
return false unless current_page
|
@@ -18,16 +18,22 @@ module RedboothRuby
|
|
18
18
|
::File.open(body_file_attrs[:local_path]) do |file|
|
19
19
|
req = Net::HTTP::Post::Multipart.new(
|
20
20
|
api_url,
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
body_hash.merge(
|
22
|
+
'asset' => UploadIO.new(file,
|
23
|
+
'application/octet-stream',
|
24
|
+
body_file_attrs[:name]
|
25
|
+
)
|
26
|
+
)
|
25
27
|
)
|
26
|
-
access_token.
|
28
|
+
req['Authorization'] = "Bearer #{access_token.token}"
|
29
|
+
# access_token.sign! req
|
27
30
|
if RedboothRuby.configuration[:use_ssl]
|
28
|
-
http = Net::HTTP.new(
|
31
|
+
http = Net::HTTP.new(RedboothRuby.configuration[:api_base] , Net::HTTP.https_default_port)
|
29
32
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
30
33
|
http.use_ssl = RedboothRuby.configuration[:use_ssl]
|
34
|
+
else
|
35
|
+
domain, port = RedboothRuby.configuration[:api_base].split(':')
|
36
|
+
http = Net::HTTP.new(domain, port || Net::HTTP.http_default_port)
|
31
37
|
end
|
32
38
|
http.start do |inner_http|
|
33
39
|
inner_http.request(req)
|
@@ -66,7 +72,7 @@ module RedboothRuby
|
|
66
72
|
end
|
67
73
|
|
68
74
|
def body_file_attrs
|
69
|
-
body_hash[:
|
75
|
+
body_hash[:asset_attrs] || {}
|
70
76
|
end
|
71
77
|
|
72
78
|
# Body params url encoded
|
@@ -79,7 +85,7 @@ module RedboothRuby
|
|
79
85
|
|
80
86
|
def use_body_file?
|
81
87
|
return false if use_url_params?
|
82
|
-
body_hash.key?(:
|
88
|
+
body_hash.key?(:asset)
|
83
89
|
end
|
84
90
|
|
85
91
|
def use_url_params?
|
@@ -15,9 +15,7 @@ module RedboothRuby
|
|
15
15
|
# return [RedboothRuby::Request::Response]
|
16
16
|
def validated_response_for(incoming_response)
|
17
17
|
self.raw_response = incoming_response
|
18
|
-
@response =
|
19
|
-
body: raw_response.body,
|
20
|
-
status: raw_response.status.to_i)
|
18
|
+
@response = response_from_raw
|
21
19
|
verify_response_code
|
22
20
|
info.data = response.data
|
23
21
|
validate_response_data
|
@@ -30,7 +28,7 @@ module RedboothRuby
|
|
30
28
|
# and message
|
31
29
|
#
|
32
30
|
def verify_response_code
|
33
|
-
status =
|
31
|
+
status = response.status
|
34
32
|
case
|
35
33
|
when status == 401
|
36
34
|
verify_authentication_header
|
@@ -80,6 +78,36 @@ module RedboothRuby
|
|
80
78
|
end
|
81
79
|
fail error
|
82
80
|
end
|
81
|
+
|
82
|
+
# Builds response object from raw received response
|
83
|
+
#
|
84
|
+
# @return [RedboothRuby::Request::Response]
|
85
|
+
def response_from_raw
|
86
|
+
case raw_response
|
87
|
+
when Net::HTTPResponse
|
88
|
+
response_from_http
|
89
|
+
else
|
90
|
+
response_from_rest_client
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# Builds response object form RestClient::Response object
|
95
|
+
#
|
96
|
+
# @return [RedboothRuby::Request::Response]
|
97
|
+
def response_from_rest_client
|
98
|
+
RedboothRuby::Request::Response.new(headers: raw_response.headers,
|
99
|
+
body: raw_response.body,
|
100
|
+
status: raw_response.status.to_i)
|
101
|
+
end
|
102
|
+
|
103
|
+
# Builds response object form Http::Response object
|
104
|
+
#
|
105
|
+
# @return [RedboothRuby::Request::Response]
|
106
|
+
def response_from_http
|
107
|
+
RedboothRuby::Request::Response.new(headers: raw_response.to_hash,
|
108
|
+
body: raw_response.body,
|
109
|
+
status: raw_response.code.to_i)
|
110
|
+
end
|
83
111
|
end
|
84
112
|
end
|
85
113
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module RedboothRuby
|
2
|
+
class Subtask < Base
|
3
|
+
include RedboothRuby::Operations::Index
|
4
|
+
include RedboothRuby::Operations::Create
|
5
|
+
include RedboothRuby::Operations::Update
|
6
|
+
include RedboothRuby::Operations::Show
|
7
|
+
include RedboothRuby::Operations::Delete
|
8
|
+
|
9
|
+
attr_accessor :id,
|
10
|
+
:name,
|
11
|
+
:task_id,
|
12
|
+
:resolved,
|
13
|
+
:position,
|
14
|
+
:created_at,
|
15
|
+
:updated_at
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
data/lib/redbooth-ruby/task.rb
CHANGED
@@ -5,6 +5,7 @@ module RedboothRuby
|
|
5
5
|
include RedboothRuby::Operations::Update
|
6
6
|
include RedboothRuby::Operations::Show
|
7
7
|
include RedboothRuby::Operations::Delete
|
8
|
+
include RedboothRuby::Operations::Meta
|
8
9
|
|
9
10
|
attr_accessor :id,
|
10
11
|
:name,
|
@@ -19,7 +20,6 @@ module RedboothRuby
|
|
19
20
|
:last_activity_id,
|
20
21
|
:record_conversion_type,
|
21
22
|
:record_conversion_id,
|
22
|
-
:metadata,
|
23
23
|
:subtasks_count,
|
24
24
|
:resolved_subtasks_count,
|
25
25
|
:watcher_ids,
|