ribose 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +539 -970
- data/.sample.pryrc +4 -0
- data/CHANGELOG.md +5 -0
- data/README.md +539 -3
- data/bin/console +2 -5
- data/lib/ribose.rb +31 -1
- data/lib/ribose/actions.rb +10 -0
- data/lib/ribose/actions/all.rb +43 -0
- data/lib/ribose/actions/base.rb +11 -0
- data/lib/ribose/actions/create.rb +44 -0
- data/lib/ribose/actions/delete.rb +32 -0
- data/lib/ribose/actions/fetch.rb +44 -0
- data/lib/ribose/actions/update.rb +35 -0
- data/lib/ribose/app_data.rb +15 -0
- data/lib/ribose/app_relation.rb +12 -0
- data/lib/ribose/base.rb +48 -0
- data/lib/ribose/calendar.rb +22 -0
- data/lib/ribose/client.rb +31 -0
- data/lib/ribose/config.rb +21 -0
- data/lib/ribose/configuration.rb +25 -0
- data/lib/ribose/connection.rb +39 -0
- data/lib/ribose/connection_invitation.rb +51 -0
- data/lib/ribose/conversation.rb +87 -0
- data/lib/ribose/error.rb +30 -0
- data/lib/ribose/feed.rb +11 -0
- data/lib/ribose/file_uploader.rb +93 -0
- data/lib/ribose/join_space_request.rb +41 -0
- data/lib/ribose/leaderboard.rb +19 -0
- data/lib/ribose/member.rb +34 -0
- data/lib/ribose/message.rb +94 -0
- data/lib/ribose/profile.rb +56 -0
- data/lib/ribose/request.rb +122 -0
- data/lib/ribose/resource_helper.rb +81 -0
- data/lib/ribose/response/raise_error.rb +15 -0
- data/lib/ribose/rspec.rb +19 -0
- data/lib/ribose/session.rb +48 -0
- data/lib/ribose/setting.rb +16 -0
- data/lib/ribose/space.rb +30 -0
- data/lib/ribose/space_file.rb +49 -0
- data/lib/ribose/space_invitation.rb +70 -0
- data/lib/ribose/stream.rb +15 -0
- data/lib/ribose/user.rb +42 -0
- data/lib/ribose/version.rb +1 -1
- data/lib/ribose/widget.rb +11 -0
- data/lib/ribose/wiki.rb +80 -0
- data/ribose.gemspec +6 -0
- data/spec/fixtures/app_data.json +188 -0
- data/spec/fixtures/app_relation.json +19 -0
- data/spec/fixtures/app_relations.json +89 -0
- data/spec/fixtures/calendar.json +12 -0
- data/spec/fixtures/calendars.json +34 -0
- data/spec/fixtures/connection_invitation.json +26 -0
- data/spec/fixtures/connection_invitation_accepted.json +26 -0
- data/spec/fixtures/connection_invitations.json +28 -0
- data/spec/fixtures/connection_invitations_created.json +37 -0
- data/spec/fixtures/connection_suggestion.json +22 -0
- data/spec/fixtures/connections.json +28 -0
- data/spec/fixtures/conversation.json +26 -0
- data/spec/fixtures/conversation_created.json +31 -0
- data/spec/fixtures/conversations.json +34 -0
- data/spec/fixtures/empty.json +1 -0
- data/spec/fixtures/feeds.json +84 -0
- data/spec/fixtures/file_upload_prepared.json +17 -0
- data/spec/fixtures/file_uploaded.json +38 -0
- data/spec/fixtures/general_information.json +16 -0
- data/spec/fixtures/join_space_request_created.json +26 -0
- data/spec/fixtures/join_space_request_updated.json +25 -0
- data/spec/fixtures/join_space_requests.json +34 -0
- data/spec/fixtures/leaderboard.json +21 -0
- data/spec/fixtures/login.html +323 -0
- data/spec/fixtures/members.json +20 -0
- data/spec/fixtures/message.json +22 -0
- data/spec/fixtures/messages.json +24 -0
- data/spec/fixtures/ping.json +3 -0
- data/spec/fixtures/profile.json +10 -0
- data/spec/fixtures/sample.png +0 -0
- data/spec/fixtures/setting.json +16 -0
- data/spec/fixtures/settings.json +18 -0
- data/spec/fixtures/space.json +59 -0
- data/spec/fixtures/space_created.json +59 -0
- data/spec/fixtures/space_file.json +58 -0
- data/spec/fixtures/space_invitation.json +32 -0
- data/spec/fixtures/space_invitation_updated.json +35 -0
- data/spec/fixtures/space_invitations.json +34 -0
- data/spec/fixtures/space_mass_invitations.json +46 -0
- data/spec/fixtures/spaces.json +61 -0
- data/spec/fixtures/stream.json +176 -0
- data/spec/fixtures/user_activated.json +6 -0
- data/spec/fixtures/widgets.json +50 -0
- data/spec/fixtures/wiki.json +79 -0
- data/spec/fixtures/wikis.json +197 -0
- data/spec/ribose/actions/create_spec.rb +40 -0
- data/spec/ribose/actions/delete_spec.rb +24 -0
- data/spec/ribose/actions/fetch_spec.rb +32 -0
- data/spec/ribose/actions/update_spec.rb +36 -0
- data/spec/ribose/app_data_spec.rb +15 -0
- data/spec/ribose/app_relation_spec.rb +27 -0
- data/spec/ribose/calendar_spec.rb +50 -0
- data/spec/ribose/client_spec.rb +48 -0
- data/spec/ribose/config_spec.rb +41 -0
- data/spec/ribose/connection_invitation_spec.rb +79 -0
- data/spec/ribose/connection_spec.rb +26 -0
- data/spec/ribose/conversation_spec.rb +84 -0
- data/spec/ribose/error_spec.rb +67 -0
- data/spec/ribose/feed_spec.rb +14 -0
- data/spec/ribose/file_uploader_spec.rb +30 -0
- data/spec/ribose/join_space_request_spec.rb +70 -0
- data/spec/ribose/leaderboard_spec.rb +13 -0
- data/spec/ribose/member_spec.rb +16 -0
- data/spec/ribose/message_spec.rb +69 -0
- data/spec/ribose/profile_spec.rb +40 -0
- data/spec/ribose/request_spec.rb +66 -0
- data/spec/ribose/resource_helper_spec.rb +58 -0
- data/spec/ribose/session_spec.rb +46 -0
- data/spec/ribose/setting_spec.rb +40 -0
- data/spec/ribose/space_file_spec.rb +41 -0
- data/spec/ribose/space_invitation_spec.rb +117 -0
- data/spec/ribose/space_spec.rb +70 -0
- data/spec/ribose/stream_spec.rb +14 -0
- data/spec/ribose/user_spec.rb +48 -0
- data/spec/ribose/widget_spec.rb +14 -0
- data/spec/ribose/wiki_spec.rb +67 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/support/fake_ribose_api.rb +431 -0
- data/spec/support/file_upload_stub.rb +76 -0
- metadata +190 -3
- data/spec/ribose_spec.rb +0 -4
@@ -0,0 +1,39 @@
|
|
1
|
+
module Ribose
|
2
|
+
class Connection < Ribose::Base
|
3
|
+
include Ribose::Actions::All
|
4
|
+
|
5
|
+
# List Connections
|
6
|
+
#
|
7
|
+
# Note: Currently, There are some chaching in place for this endpoint
|
8
|
+
# which requires us to pass the `s` query params otherwise we might
|
9
|
+
# have some unexpected behavior sometime. That's why we are adding
|
10
|
+
# the `s` incase that's not present with the query options.
|
11
|
+
#
|
12
|
+
# @param options [Hash] Query parameters as a Hash
|
13
|
+
# @return [Sawyer::Resource]
|
14
|
+
#
|
15
|
+
def self.all(options = {})
|
16
|
+
new(options.merge(query: { s: "" })).all
|
17
|
+
end
|
18
|
+
|
19
|
+
# List connection suggestions
|
20
|
+
#
|
21
|
+
# @param options [Hash] Query parameters as a Hash
|
22
|
+
# @return [Array <Sawyer::Resource>]
|
23
|
+
#
|
24
|
+
def self.suggestions(client: nil, **options)
|
25
|
+
Request.get("people_finding", client: client, query: options).
|
26
|
+
suggested_connection
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def resource
|
32
|
+
"connection"
|
33
|
+
end
|
34
|
+
|
35
|
+
def resources_path
|
36
|
+
"people/connections"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Ribose
|
2
|
+
class ConnectionInvitation < Ribose::Base
|
3
|
+
include Ribose::Actions::All
|
4
|
+
include Ribose::Actions::Fetch
|
5
|
+
include Ribose::Actions::Update
|
6
|
+
include Ribose::Actions::Delete
|
7
|
+
|
8
|
+
def create
|
9
|
+
create_invitations[:invitations]
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.create(body:, emails:, **attributes)
|
13
|
+
new(attributes.merge(body: body, emails: emails)).create
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.accept(invitation_id, attributes = {})
|
17
|
+
new(attributes.merge(resource_id: invitation_id, state: 1)).update
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.reject(invitation_id, attributes = {})
|
21
|
+
new(attributes.merge(resource_id: invitation_id, state: 2)).update
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def resource
|
27
|
+
"to_connection"
|
28
|
+
end
|
29
|
+
|
30
|
+
def resource_key
|
31
|
+
"invitation"
|
32
|
+
end
|
33
|
+
|
34
|
+
def resources_path
|
35
|
+
"invitations/to_connection"
|
36
|
+
end
|
37
|
+
|
38
|
+
def extract_local_attributes
|
39
|
+
@invitation_id = attributes.delete(:invitation_id)
|
40
|
+
end
|
41
|
+
|
42
|
+
def create_invitations
|
43
|
+
Ribose::Request.post(
|
44
|
+
[resources_path, "mass_create"].join("/"),
|
45
|
+
custom_option.merge(
|
46
|
+
invitation: { body: attributes[:body], emails: attributes[:emails] }
|
47
|
+
)
|
48
|
+
)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module Ribose
|
2
|
+
class Conversation < Ribose::Base
|
3
|
+
include Ribose::Actions::All
|
4
|
+
include Ribose::Actions::Fetch
|
5
|
+
include Ribose::Actions::Create
|
6
|
+
include Ribose::Actions::Update
|
7
|
+
include Ribose::Actions::Delete
|
8
|
+
|
9
|
+
# Listing Space Conversations
|
10
|
+
#
|
11
|
+
# @param space_id [String] The Space UUID
|
12
|
+
# @param options [Hash] Query parameters as a Hash
|
13
|
+
# @return [Array <Sawyer::Resource>]
|
14
|
+
#
|
15
|
+
def self.all(space_id, options = {})
|
16
|
+
new(space_id: space_id, **options).all
|
17
|
+
end
|
18
|
+
|
19
|
+
# Fetch a conversation
|
20
|
+
#
|
21
|
+
# @param space_id [String] The Space UUID
|
22
|
+
# @param conversation_id [String] Conversation UUID
|
23
|
+
# @param options [Hash] Query parameters as a Hash
|
24
|
+
# @return [Sawyer::Resource] The conversation
|
25
|
+
#
|
26
|
+
def self.fetch(space_id, conversation_id, options = {})
|
27
|
+
new(space_id: space_id, conversation_id: conversation_id, **options).fetch
|
28
|
+
end
|
29
|
+
|
30
|
+
# Create A New Conversation
|
31
|
+
#
|
32
|
+
# @param space_id [String] The Space UUID
|
33
|
+
# @param attributes [Hash] The conversation attributes
|
34
|
+
# @return [Sawyer::Resource]
|
35
|
+
#
|
36
|
+
def self.create(space_id, attributes)
|
37
|
+
new(attributes.merge(space_id: space_id)).create
|
38
|
+
end
|
39
|
+
|
40
|
+
# Update a conversation
|
41
|
+
#
|
42
|
+
# @param space_id [String] The Space UUID
|
43
|
+
# @param conversation_id [String] Conversation UUID
|
44
|
+
# @param attributes [Hash] Query parameters as a Hash
|
45
|
+
# @return [Sawyer::Resource] The updated conversation
|
46
|
+
#
|
47
|
+
def self.update(space_id, conversation_id, attributes = {})
|
48
|
+
new(
|
49
|
+
space_id: space_id,
|
50
|
+
conversation_id: conversation_id,
|
51
|
+
**attributes,
|
52
|
+
).update
|
53
|
+
end
|
54
|
+
|
55
|
+
# Remove a conversation
|
56
|
+
#
|
57
|
+
# @param space_id [String] The Space UUID
|
58
|
+
# @param conversation_id [String] Conversation UUID
|
59
|
+
# @param options [Hash] Query parameters as a Hash
|
60
|
+
#
|
61
|
+
def self.destroy(space_id:, conversation_id:, **opts)
|
62
|
+
new(space_id: space_id, conversation_id: conversation_id, **opts).delete
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
attr_reader :space_id, :conversation_id
|
68
|
+
alias_method :resource_id, :conversation_id
|
69
|
+
|
70
|
+
def extract_local_attributes
|
71
|
+
@space_id = attributes.delete(:space_id)
|
72
|
+
@conversation_id = attributes.delete(:conversation_id)
|
73
|
+
end
|
74
|
+
|
75
|
+
def resource
|
76
|
+
"conversation"
|
77
|
+
end
|
78
|
+
|
79
|
+
def resources_path
|
80
|
+
["spaces", space_id, "conversation", "conversations"].join("/")
|
81
|
+
end
|
82
|
+
|
83
|
+
def validate(attributes)
|
84
|
+
attributes.merge(space_id: space_id)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
data/lib/ribose/error.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
module Ribose
|
2
|
+
class Error < StandardError
|
3
|
+
def initialize(response = nil)
|
4
|
+
@response = response
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.from_response(response)
|
9
|
+
status = response[:status].to_i
|
10
|
+
if klass = case status
|
11
|
+
when 400 then Ribose::BadRequest
|
12
|
+
when 401 then Ribose::Unauthorized
|
13
|
+
when 403 then Ribose::Forbidden
|
14
|
+
when 404 then Ribose::NotFound
|
15
|
+
when 422 then Ribose::UnprocessableEntity
|
16
|
+
when 500..599 then Ribose::ServerError
|
17
|
+
end
|
18
|
+
|
19
|
+
klass.new(response)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class BadRequest < Error; end
|
25
|
+
class Unauthorized < Error; end
|
26
|
+
class Forbidden < Error; end
|
27
|
+
class NotFound < Error; end
|
28
|
+
class UnprocessableEntity < Error; end
|
29
|
+
class ServerError < Error; end
|
30
|
+
end
|
data/lib/ribose/feed.rb
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
require "faraday"
|
2
|
+
|
3
|
+
module Ribose
|
4
|
+
class FileUploader
|
5
|
+
# Initialize the file uploader
|
6
|
+
#
|
7
|
+
# @param space_id [String] The Space UUID
|
8
|
+
# @param file [File] The complete path for file
|
9
|
+
# @param attributes [Hash] Attributes as a Hash
|
10
|
+
def initialize(space_id, file:, **attributes)
|
11
|
+
@space_id = space_id
|
12
|
+
@file = File.new(file)
|
13
|
+
@attributes = attributes
|
14
|
+
end
|
15
|
+
|
16
|
+
# Create a file upload
|
17
|
+
#
|
18
|
+
# @return [Sawyer::Resource] File upload response.
|
19
|
+
def create
|
20
|
+
upload_meta = prepare_to_upload
|
21
|
+
response = upload_to_aws_s3(upload_meta)
|
22
|
+
notify_ribose_file_upload_endpoint(response, upload_meta.fields.key)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Create a new upload
|
26
|
+
#
|
27
|
+
# @param space_id [String] The Space UUID
|
28
|
+
# @param file [File] The complete path for file
|
29
|
+
# @param attributes [Hash] Attributes as a Hash
|
30
|
+
# @return [Sawyer::Resource] File upload response.
|
31
|
+
def self.upload(space_id, file:, **attributes)
|
32
|
+
new(space_id, attributes.merge(file: file)).create
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
attr_reader :file, :space_id, :attributes
|
38
|
+
|
39
|
+
def prepare_to_upload
|
40
|
+
file_upload_path = [space_file_path, "prepare"].join("/")
|
41
|
+
Ribose::Request.get(file_upload_path, query: file_attributes)
|
42
|
+
end
|
43
|
+
|
44
|
+
def upload_to_aws_s3(meta)
|
45
|
+
aws_connection(meta.url).post do |request|
|
46
|
+
request.body = meta.fields.attrs.merge(file: faraday_file_io)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def notify_ribose_file_upload_endpoint(response, key)
|
51
|
+
if response.status.to_i == 200
|
52
|
+
Ribose::Request.post(space_file_path, file_attributes.merge(key: key))
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def faraday_file_io
|
57
|
+
Faraday::UploadIO.new(file.path, file_attributes[:filetype])
|
58
|
+
end
|
59
|
+
|
60
|
+
def space_file_path
|
61
|
+
["spaces", space_id, "file", "files"].join("/")
|
62
|
+
end
|
63
|
+
|
64
|
+
def file_content_type
|
65
|
+
@file_content_type ||= content_type_form_file
|
66
|
+
end
|
67
|
+
|
68
|
+
def content_type_form_file
|
69
|
+
require "mime/types"
|
70
|
+
MIME::Types.type_for(file.path).first.content_type
|
71
|
+
end
|
72
|
+
|
73
|
+
def file_attributes
|
74
|
+
@file_attributes ||= {
|
75
|
+
filesize: file.size,
|
76
|
+
filetype: file_content_type,
|
77
|
+
filename: File.basename(file),
|
78
|
+
file_info: {
|
79
|
+
tag_list: attributes[:tag_list] || "",
|
80
|
+
description: attributes[:description] || "",
|
81
|
+
},
|
82
|
+
}
|
83
|
+
end
|
84
|
+
|
85
|
+
def aws_connection(upload_url)
|
86
|
+
Faraday.new(upload_url) do |builder|
|
87
|
+
builder.request :multipart
|
88
|
+
builder.request :url_encoded
|
89
|
+
Ribose.configuration.add_default_middleware(builder)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Ribose
|
2
|
+
class JoinSpaceRequest < Ribose::Base
|
3
|
+
include Ribose::Actions::All
|
4
|
+
include Ribose::Actions::Create
|
5
|
+
include Ribose::Actions::Update
|
6
|
+
|
7
|
+
def self.accept(invitation_id, options = {})
|
8
|
+
new(resource_id: invitation_id, state: 1, **options).update
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.reject(invitation_id, options = {})
|
12
|
+
new(resource_id: invitation_id, state: 2, **options).update
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.update(invitation_id, attributes)
|
16
|
+
new(attributes.merge(resource_id: invitation_id)).update
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def resource
|
22
|
+
"join_space_request"
|
23
|
+
end
|
24
|
+
|
25
|
+
def resource_key
|
26
|
+
"invitation"
|
27
|
+
end
|
28
|
+
|
29
|
+
def resources_path
|
30
|
+
"invitations/join_space_request"
|
31
|
+
end
|
32
|
+
|
33
|
+
def validate(space_id:, **attributes)
|
34
|
+
attributes.merge(space_id: space_id)
|
35
|
+
end
|
36
|
+
|
37
|
+
def extract_local_attributes
|
38
|
+
@invitation_id = attributes.delete(:invitation_id)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Ribose
|
2
|
+
class Leaderboard < Ribose::Base
|
3
|
+
include Ribose::Actions::All
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
def resource
|
8
|
+
"leaderboard"
|
9
|
+
end
|
10
|
+
|
11
|
+
def resources
|
12
|
+
resource
|
13
|
+
end
|
14
|
+
|
15
|
+
def resources_path
|
16
|
+
"activity_point/leaderboard"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Ribose
|
2
|
+
class Member < Ribose::Base
|
3
|
+
include Ribose::Actions::All
|
4
|
+
|
5
|
+
# List A Space Members
|
6
|
+
#
|
7
|
+
# This interface retrieves the list of members for any speicfic
|
8
|
+
# user spaces and then will return those as `Sawyer::Resource`
|
9
|
+
#
|
10
|
+
# @param space_id [String] The Space Id
|
11
|
+
# @param options [Hash] Query parameters as a Hash
|
12
|
+
# @return [Array<Sawyer::Resource>]
|
13
|
+
#
|
14
|
+
def self.all(space_id, options = {})
|
15
|
+
new(space_id: space_id, **options).all
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
attr_reader :space_id
|
21
|
+
|
22
|
+
def resource
|
23
|
+
"spaces_user"
|
24
|
+
end
|
25
|
+
|
26
|
+
def resources_path
|
27
|
+
["spaces", space_id, "members"].join("/")
|
28
|
+
end
|
29
|
+
|
30
|
+
def extract_local_attributes
|
31
|
+
@space_id = attributes.delete(:space_id)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
module Ribose
|
2
|
+
class Message
|
3
|
+
include Ribose::ResourceHelper
|
4
|
+
|
5
|
+
include Ribose::Actions::All
|
6
|
+
include Ribose::Actions::Create
|
7
|
+
include Ribose::Actions::Update
|
8
|
+
include Ribose::Actions::Delete
|
9
|
+
|
10
|
+
# Message initilaiztion
|
11
|
+
#
|
12
|
+
# @param space_id [String] The Space UUID
|
13
|
+
# @param conversation_id [String] The Conversation UUID
|
14
|
+
# @param attributes [Hash] The Message related attributes
|
15
|
+
# @return [Ribose::Message] The `Ribose::Message` Instance
|
16
|
+
#
|
17
|
+
def initialize(space_id, conversation_id, attributes = {})
|
18
|
+
@space_id = space_id
|
19
|
+
@attributes = attributes
|
20
|
+
@conversation_id = conversation_id
|
21
|
+
@message_id = attributes.delete(:message_id)
|
22
|
+
end
|
23
|
+
|
24
|
+
# Listing Conversation Messages
|
25
|
+
#
|
26
|
+
# @param space_id [String] The Space UUID
|
27
|
+
# @param conversation_id [String] The Conversation UUID
|
28
|
+
# @param options [Hash] The Query parameters as a Hash
|
29
|
+
# @return [Array<Sawyer::Resource>]
|
30
|
+
#
|
31
|
+
def self.all(space_id:, conversation_id:, **options)
|
32
|
+
new(space_id, conversation_id, **options).all
|
33
|
+
end
|
34
|
+
|
35
|
+
# Create A New Message
|
36
|
+
#
|
37
|
+
# @param space_id [String] The Space UUID
|
38
|
+
# @param conversation_id [String] The Conversation UUID
|
39
|
+
# @param attributes [Hash] The message attributes
|
40
|
+
# @return [Sawyer::Resource]
|
41
|
+
#
|
42
|
+
def self.create(space_id:, conversation_id:, **attributes)
|
43
|
+
new(space_id, conversation_id, attributes).create
|
44
|
+
end
|
45
|
+
|
46
|
+
# Update A Messsage
|
47
|
+
#
|
48
|
+
# @param space_id [String] The Space UUID
|
49
|
+
# @param message_id [String] The Message UUID
|
50
|
+
# @param conversation_id [String] The Conversation UUID
|
51
|
+
# @param attributes [Hash] The message attributes
|
52
|
+
# @return [Sawyer::Resource]
|
53
|
+
#
|
54
|
+
def self.update(space_id:, message_id:, conversation_id:, **attrs)
|
55
|
+
new(space_id, conversation_id, attrs.merge(message_id: message_id)).update
|
56
|
+
end
|
57
|
+
|
58
|
+
# Remove A Message
|
59
|
+
#
|
60
|
+
# @param space_id [String] The Space UUID
|
61
|
+
# @param message_id [String] The Message UUID
|
62
|
+
# @param conversation_id [String] The Conversation UUID
|
63
|
+
# @return [Sawyer::Resource]
|
64
|
+
#
|
65
|
+
def self.remove(space_id:, message_id:, conversation_id:, **options)
|
66
|
+
new(space_id, conversation_id, message_id: message_id, **options).delete
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
attr_reader :space_id, :conversation_id, :message_id, :attributes
|
72
|
+
alias_method :resource_id, :message_id
|
73
|
+
|
74
|
+
def resource
|
75
|
+
"message"
|
76
|
+
end
|
77
|
+
|
78
|
+
def custom_option
|
79
|
+
{}
|
80
|
+
end
|
81
|
+
|
82
|
+
def validate(attributes)
|
83
|
+
attributes.merge(conversation_id: conversation_id)
|
84
|
+
end
|
85
|
+
|
86
|
+
def resources_path
|
87
|
+
[conversations_path, conversation_id, "messages"].join("/")
|
88
|
+
end
|
89
|
+
|
90
|
+
def conversations_path
|
91
|
+
["spaces", space_id, "conversation/conversations"].join("/")
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|