quickblox-rb 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/models.rb +53 -18
- data/lib/quickblox_api.rb +44 -12
- data/quickblox-rb.gemspec +5 -5
- data/test/quickblox_api_test.rb +62 -18
- data/test/quickblox_responses.rb +1 -1
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e377ebc8c37c660d792ca2c9cdf4f79cffbe660
|
4
|
+
data.tar.gz: 3015e3ca62ca96333a72bdfa672f5eb3fd37e160
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0cfaae607b05a0e0eaa23f2192d702b1e8780fe31545e92a3d888caabed7a9eaffbae191dd6a0746779a317abad3a05900df0f9d926ad1c7d7621341fe5c9d08
|
7
|
+
data.tar.gz: 06c41ebc410955294692754dd549715075803fd41697d2ef30b38d41a7f909ba3bec5023ba6e7c7a933912d8dca21b1b7329650f5ba761a7d8c2257303db230c
|
data/lib/models.rb
CHANGED
@@ -1,13 +1,19 @@
|
|
1
1
|
require "silueta"
|
2
2
|
require "silueta/types"
|
3
3
|
|
4
|
+
module Silueta::Types
|
5
|
+
require "date"
|
6
|
+
|
7
|
+
DateTime = ->(value) { value && ::DateTime.parse(value) }
|
8
|
+
end
|
9
|
+
|
4
10
|
module Quickblox::Models
|
5
11
|
class Session
|
6
12
|
include Silueta
|
7
13
|
|
8
14
|
attribute :token
|
9
15
|
attribute :user_id, cast: Types::Integer
|
10
|
-
attribute :expiration, cast:
|
16
|
+
attribute :expiration, cast: Types::DateTime
|
11
17
|
|
12
18
|
def self.build(hash)
|
13
19
|
new(
|
@@ -26,6 +32,7 @@ module Quickblox::Models
|
|
26
32
|
attribute :email
|
27
33
|
attribute :login
|
28
34
|
attribute :phone
|
35
|
+
attribute :tags
|
29
36
|
|
30
37
|
def self.build(hash)
|
31
38
|
email = hash.fetch("email") || JSON.parse(hash.fetch("custom_data")).fetch("email")
|
@@ -34,7 +41,8 @@ module Quickblox::Models
|
|
34
41
|
full_name: hash.fetch("full_name"),
|
35
42
|
email: email,
|
36
43
|
login: hash.fetch("login"),
|
37
|
-
phone: hash.fetch("phone")
|
44
|
+
phone: hash.fetch("phone"),
|
45
|
+
tags: hash.fetch("user_tags")
|
38
46
|
)
|
39
47
|
end
|
40
48
|
end
|
@@ -43,33 +51,60 @@ module Quickblox::Models
|
|
43
51
|
include Silueta
|
44
52
|
|
45
53
|
attribute :messages
|
46
|
-
attribute :
|
47
|
-
attribute :
|
48
|
-
|
49
|
-
def self.build(messages
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
Quickblox::Models::Message.new(
|
54
|
-
created_at: message.fetch("created_at"),
|
55
|
-
text: message.fetch("message"),
|
56
|
-
dialog_id: message.fetch("chat_dialog_id"),
|
57
|
-
sender: (message.fetch("sender_id") == buyer.id ? buyer : seller)
|
58
|
-
)
|
59
|
-
end
|
54
|
+
attribute :occupants
|
55
|
+
attribute :dialog
|
56
|
+
|
57
|
+
def self.build(messages:, occupants:, dialog: nil)
|
58
|
+
messages.each do |message|
|
59
|
+
sender = occupants.find { |occupant| occupant.id == message.sender_id }
|
60
|
+
message.sender = sender
|
60
61
|
end
|
61
62
|
|
62
|
-
new(messages:
|
63
|
+
new(messages: messages, occupants: occupants, dialog: dialog)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
class Dialog
|
68
|
+
include Silueta
|
69
|
+
|
70
|
+
attribute :id
|
71
|
+
attribute :occupants_ids
|
72
|
+
attribute :type, cast: Types::Integer
|
73
|
+
attribute :created_at, cast: Types::DateTime
|
74
|
+
attribute :updated_at, cast: Types::DateTime
|
75
|
+
|
76
|
+
def self.build(hash)
|
77
|
+
new(
|
78
|
+
id: hash.fetch("_id"),
|
79
|
+
occupants_ids: hash.fetch("occupants_ids"),
|
80
|
+
type: hash.fetch("type"),
|
81
|
+
created_at: hash.fetch("created_at"),
|
82
|
+
updated_at: hash.fetch("updated_at")
|
83
|
+
)
|
63
84
|
end
|
64
85
|
end
|
65
86
|
|
66
87
|
class Message
|
67
88
|
include Silueta
|
68
89
|
|
69
|
-
attribute :created_at
|
90
|
+
attribute :created_at, cast: Types::DateTime
|
70
91
|
attribute :text
|
71
92
|
attribute :dialog_id
|
93
|
+
attribute :sender_id
|
72
94
|
attribute :sender
|
95
|
+
|
96
|
+
def self.batch_build(messages)
|
97
|
+
messages.map { |message| build(message) }
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.build(message)
|
101
|
+
new(
|
102
|
+
created_at: message.fetch("created_at"),
|
103
|
+
text: message.fetch("message"),
|
104
|
+
dialog_id: message.fetch("chat_dialog_id"),
|
105
|
+
sender_id: message.fetch("sender_id")
|
106
|
+
)
|
107
|
+
end
|
73
108
|
end
|
74
109
|
end
|
75
110
|
|
data/lib/quickblox_api.rb
CHANGED
@@ -54,9 +54,9 @@ class Quickblox::API
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
-
def
|
57
|
+
def get_user(id:)
|
58
58
|
response = Requests.get(
|
59
|
-
QB_ENDPOINT + "/users/#{
|
59
|
+
QB_ENDPOINT + "/users/#{id}.json",
|
60
60
|
headers: {
|
61
61
|
QB_HEADER_API_VERSION => "0.1.1",
|
62
62
|
QB_HEADER_TOKEN => session_token
|
@@ -71,7 +71,33 @@ class Quickblox::API
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
-
|
74
|
+
# You can only retrieve dialogs where the authenticated user is a participant!
|
75
|
+
# But you can `get_messages` with the admin account, though.
|
76
|
+
def get_dialog(id:)
|
77
|
+
response = Requests.get(
|
78
|
+
QB_ENDPOINT + "/chat/Dialog.json",
|
79
|
+
headers: {
|
80
|
+
QB_HEADER_API_VERSION => "0.1.1",
|
81
|
+
QB_HEADER_TOKEN => session_token
|
82
|
+
},
|
83
|
+
params: {
|
84
|
+
_id: id,
|
85
|
+
type: 3
|
86
|
+
}
|
87
|
+
)
|
88
|
+
|
89
|
+
@last_response = response
|
90
|
+
|
91
|
+
if response.status == 200
|
92
|
+
dialog = response.json.fetch("items").first
|
93
|
+
|
94
|
+
if dialog
|
95
|
+
Quickblox::Models::Dialog.build(dialog)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def get_messages(dialog_id:)
|
75
101
|
response = Requests.get(
|
76
102
|
QB_ENDPOINT + "/chat/Message.json",
|
77
103
|
headers: {
|
@@ -84,25 +110,30 @@ class Quickblox::API
|
|
84
110
|
}
|
85
111
|
)
|
86
112
|
|
113
|
+
@last_response = response
|
114
|
+
|
87
115
|
if response.status == 200
|
88
116
|
messages = response.json.fetch("items")
|
89
117
|
|
90
|
-
|
91
|
-
find_user(user_id: messages.first.fetch("sender_id")),
|
92
|
-
find_user(user_id: messages.first.fetch("recipient_id"))
|
93
|
-
]
|
94
|
-
|
95
|
-
Quickblox::Models::Chat.build(messages, buyer: buyer, seller: seller)
|
118
|
+
Quickblox::Models::Message.batch_build(messages)
|
96
119
|
end
|
97
120
|
end
|
98
121
|
|
122
|
+
def chat_transcript(dialog_id:)
|
123
|
+
messages = get_messages(dialog_id: dialog_id)
|
124
|
+
occupant_ids = messages.map(&:sender_id).uniq
|
125
|
+
occupants = occupant_ids.map { |id| get_user(id: id) }
|
126
|
+
|
127
|
+
Quickblox::Models::Chat.build(messages: messages, occupants: occupants)
|
128
|
+
end
|
129
|
+
|
99
130
|
private
|
100
131
|
|
101
132
|
def sign(data)
|
102
133
|
normalized_string = data.each_key
|
103
|
-
|
104
|
-
|
105
|
-
|
134
|
+
.sort
|
135
|
+
.map { |key| "#{key}=#{data[key]}" }
|
136
|
+
.join("&")
|
106
137
|
|
107
138
|
sha1 = OpenSSL::Digest::SHA1.new
|
108
139
|
OpenSSL::HMAC.hexdigest(sha1, auth_secret, normalized_string)
|
@@ -112,3 +143,4 @@ private
|
|
112
143
|
(@session || create_session).token
|
113
144
|
end
|
114
145
|
end
|
146
|
+
|
data/quickblox-rb.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "quickblox-rb"
|
3
|
-
s.version = "0.1.
|
3
|
+
s.version = "0.1.2"
|
4
4
|
s.summary = "Ruby gem to work with Quickblox API"
|
5
5
|
s.description = s.summary
|
6
6
|
s.authors = ["Lucas Tolchinsky"]
|
@@ -10,10 +10,10 @@ Gem::Specification.new do |s|
|
|
10
10
|
|
11
11
|
s.files = `git ls-files`.split("\n")
|
12
12
|
|
13
|
-
s.add_runtime_dependency "requests"
|
14
|
-
s.add_runtime_dependency "silueta"
|
13
|
+
s.add_runtime_dependency "requests", "~> 0"
|
14
|
+
s.add_runtime_dependency "silueta", "~> 0"
|
15
15
|
|
16
|
-
s.add_development_dependency "cutest"
|
17
|
-
s.add_development_dependency "mocoso"
|
16
|
+
s.add_development_dependency "cutest", "~> 0"
|
17
|
+
s.add_development_dependency "mocoso", "~> 0"
|
18
18
|
end
|
19
19
|
|
data/test/quickblox_api_test.rb
CHANGED
@@ -87,7 +87,7 @@ test "#last_response" do
|
|
87
87
|
assert_equal mock_response, qb.last_response
|
88
88
|
end
|
89
89
|
|
90
|
-
test "#
|
90
|
+
test "#get_user" do
|
91
91
|
qb = Quickblox::API.new(
|
92
92
|
auth_key: "AUTH_KEY",
|
93
93
|
auth_secret: "AUTH_SECRET",
|
@@ -99,7 +99,7 @@ test "#find_user" do
|
|
99
99
|
mock_response = Requests::Response.new(200, {}, QB_RESPONSES.fetch(:user))
|
100
100
|
|
101
101
|
user = stub(Requests, :request, mock_response) do
|
102
|
-
stub(qb, :session_token, "token") { qb.
|
102
|
+
stub(qb, :session_token, "token") { qb.get_user(id: 900) }
|
103
103
|
end
|
104
104
|
|
105
105
|
assert user
|
@@ -111,7 +111,31 @@ test "#find_user" do
|
|
111
111
|
assert_equal "One", user.login
|
112
112
|
end
|
113
113
|
|
114
|
-
test "#
|
114
|
+
test "#get_dialog" do
|
115
|
+
qb = Quickblox::API.new(
|
116
|
+
auth_key: "AUTH_KEY",
|
117
|
+
auth_secret: "AUTH_SECRET",
|
118
|
+
application_id: 1234,
|
119
|
+
email: "account@owner.com",
|
120
|
+
password: "foobarbaz"
|
121
|
+
)
|
122
|
+
|
123
|
+
mock_response = Requests::Response.new(200, {}, QB_RESPONSES.fetch(:user))
|
124
|
+
|
125
|
+
user = stub(Requests, :request, mock_response) do
|
126
|
+
stub(qb, :session_token, "token") { qb.get_user(id: 900) }
|
127
|
+
end
|
128
|
+
|
129
|
+
assert user
|
130
|
+
assert_equal Quickblox::Models::User, user.class
|
131
|
+
assert_equal 900, user.id
|
132
|
+
assert_equal "mister@one.com", user.email
|
133
|
+
assert_equal "Mr One", user.full_name
|
134
|
+
assert_equal "1133445566", user.phone
|
135
|
+
assert_equal "One", user.login
|
136
|
+
end
|
137
|
+
|
138
|
+
test "#get_messages" do
|
115
139
|
qb = Quickblox::API.new(
|
116
140
|
auth_key: "AUTH_KEY",
|
117
141
|
auth_secret: "AUTH_SECRET",
|
@@ -122,27 +146,47 @@ test "#chat_transcript" do
|
|
122
146
|
|
123
147
|
mock_response = Requests::Response.new(200, {}, QB_RESPONSES.fetch(:messages))
|
124
148
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
149
|
+
messages = stub(Requests, :request, mock_response) do
|
150
|
+
stub(qb, :session_token, "token") { qb.get_messages(dialog_id: "571f8230a0eb478939000052") }
|
151
|
+
end
|
152
|
+
|
153
|
+
assert messages
|
154
|
+
assert_equal Array, messages.class
|
155
|
+
assert messages.size > 0
|
156
|
+
|
157
|
+
message = messages.first
|
158
|
+
assert_equal Quickblox::Models::Message, message.class
|
159
|
+
assert_equal DateTime.parse("2016-04-26T14:58:59Z"), message.created_at
|
160
|
+
assert_equal "yo", message.text
|
161
|
+
assert_equal "571f8230a0eb478939000052", message.dialog_id
|
162
|
+
assert_equal 12057184, message.sender_id
|
163
|
+
end
|
164
|
+
|
165
|
+
test "#chat_transcript" do
|
166
|
+
qb = Quickblox::API.new(
|
167
|
+
auth_key: "AUTH_KEY",
|
168
|
+
auth_secret: "AUTH_SECRET",
|
169
|
+
application_id: 1234,
|
170
|
+
email: "account@owner.com",
|
171
|
+
password: "foobarbaz"
|
129
172
|
)
|
130
173
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
174
|
+
mock_messages = [
|
175
|
+
Quickblox::Models::Message.new(created_at: "2016-04-26T14:58:59Z", text: "yo", dialog_id: "le-dialog-id", sender_id: 123),
|
176
|
+
Quickblox::Models::Message.new(created_at: "2016-04-26T14:59:59Z", text: "hey", dialog_id: "le-dialog-id", sender_id: 123)
|
177
|
+
]
|
178
|
+
mock_occupant = Quickblox::Models::User.new(id: 123, full_name: "Me")
|
179
|
+
|
180
|
+
chat = stub(qb, :get_messages, mock_messages) do
|
181
|
+
stub(qb, :get_user, mock_occupant) { qb.chat_transcript(dialog_id: "5727676fa28f9a49") }
|
135
182
|
end
|
136
183
|
|
137
184
|
assert chat
|
138
185
|
assert_equal Quickblox::Models::Chat, chat.class
|
139
|
-
assert_equal
|
140
|
-
assert_equal
|
141
|
-
|
186
|
+
assert_equal mock_messages, chat.messages
|
187
|
+
assert_equal mock_occupant, chat.occupants.first
|
188
|
+
assert chat.dialog.nil?
|
142
189
|
|
143
|
-
|
144
|
-
assert message
|
145
|
-
assert_equal Quickblox::Models::Message, message.class
|
146
|
-
assert_equal mock_user, message.sender
|
190
|
+
assert_equal mock_occupant, chat.messages.first.sender
|
147
191
|
end
|
148
192
|
|
data/test/quickblox_responses.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
QB_RESPONSES = {
|
2
2
|
session: "{\"session\":{\"_id\":\"572793c0a28f9a658800002a\",\"application_id\":35265,\"created_at\":\"2016-05-02T17:52:00Z\",\"device_id\":0,\"nonce\":29601,\"token\":\"le-token-stuff\",\"ts\":1462211496,\"updated_at\":\"2016-05-02T17:52:00Z\",\"user_id\":0,\"id\":18862}}",
|
3
3
|
user: "{\"user\":{\"id\":900,\"owner_id\":45,\"full_name\":\"Mr One\",\"email\":\"mister@one.com\",\"login\":\"One\",\"phone\":\"1133445566\",\"website\":null,\"created_at\":\"2016-02-10T12:07:50Z\",\"updated_at\":\"2016-03-16T17:42:27Z\",\"last_request_at\":\"2016-03-17T12:34:00Z\",\"external_user_id\":null,\"facebook_id\":null,\"twitter_id\":null,\"blob_id\":null,\"custom_data\":null,\"twitter_digits_id\":null,\"user_tags\":\"tag1,tag2\"}}",
|
4
|
-
messages: "{\"skip\":0,\"limit\":100,\"items\":[{\"_id\":\"
|
4
|
+
messages: "{\"skip\":0,\"limit\":100,\"items\":[{\"_id\":\"571f8233e0653c224d000000\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T14:58:59Z\",\"date_sent\":1461682739,\"delivered_ids\":[12057184,10671085],\"message\":\"yo\",\"read_ids\":[12057184,10671085],\"recipient_id\":10671085,\"sender_id\":12057184,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f824ed44ea611350041be\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T14:59:26Z\",\"date_sent\":1461682766,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Hello\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f82f39728c195360041ab\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T15:02:11Z\",\"date_sent\":1461682931,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\":)\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f853ecb5c7027370041ac\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T15:11:58Z\",\"date_sent\":1461683518,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Yo1\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f85c471b992f9370041ad\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T15:14:12Z\",\"date_sent\":1461683652,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Yo2\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f862e884043b7380041ae\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T15:15:58Z\",\"date_sent\":1461683758,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Yo3\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f8686c05feb66390041af\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T15:17:26Z\",\"date_sent\":1461683846,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Yo4\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f86bddca022f4390041b0\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T15:18:21Z\",\"date_sent\":1461683901,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Yo5\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f871d266cda8c3a0041b1\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T15:19:57Z\",\"date_sent\":1461683997,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Yo6\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f880a36ddf6063b0041b2\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T15:23:54Z\",\"date_sent\":1461684234,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Yo7\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f8842db6020d93b0041b3\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T15:24:50Z\",\"date_sent\":1461684290,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Yo8\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f88bced5a6e5f3c0041b4\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T15:26:52Z\",\"date_sent\":1461684412,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Yo9\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f8c724fc3bc3b410041e5\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T15:42:42Z\",\"date_sent\":1461685362,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Helloooo\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f90133163eb4dfd000000\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T15:58:11Z\",\"date_sent\":1461686291,\"delivered_ids\":[12057184,10671085],\"message\":\"hello again\",\"read_ids\":[12057184,10671085],\"recipient_id\":10671085,\"sender_id\":12057184,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f901d4fc3bc3b410041f7\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T15:58:21Z\",\"date_sent\":1461686301,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Yo\\n\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f94be3d27614ce1000000\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T16:18:06Z\",\"date_sent\":1461687486,\"delivered_ids\":[12057184,10671085],\"message\":\"yo\",\"read_ids\":[12057184,10671085],\"recipient_id\":10671085,\"sender_id\":12057184,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f94f45bc052994b0041ba\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T16:19:00Z\",\"date_sent\":1461687540,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Yo\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f95dc5bc052994b0041bc\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T16:22:52Z\",\"date_sent\":1461687772,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Vvv\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"571f9d955b9d2e5a120041bb\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-26T16:55:49Z\",\"date_sent\":1461689749,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"High join\\n\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"5720aa690809bd197a000000\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-27T12:02:49Z\",\"date_sent\":1461758569,\"delivered_ids\":[12057184,10671085],\"message\":\"hey yo\",\"read_ids\":[12057184,10671085],\"recipient_id\":10671085,\"sender_id\":12057184,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"5720aa78933ec3046c0041be\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-27T12:03:04Z\",\"date_sent\":1461758584,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\" Helloooo\\nWhat's up?\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"5720d974f0fe63d77a0041be\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-04-27T15:23:32Z\",\"date_sent\":1461770612,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"OPCIONES DE FINANCIACION, A MEDIDA. 100% EN PESOS, BAJO PORCENTAJE DE INGRESO, 24 CUOTAS AJUSTADAS POR C.A.C. \\n \\n\",\"read_ids\":[10671085,12057184],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":1},{\"_id\":\"5729df7d6ffe68e2b60041c4\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-05-04T11:39:41Z\",\"date_sent\":1462361981,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Yeah\",\"read_ids\":[10671085],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:46:51Z\",\"read\":0},{\"_id\":\"5729e13a1525e76eb80041da\",\"attachments\":[],\"chat_dialog_id\":\"571f8230a0eb478939000052\",\"created_at\":\"2016-05-04T11:47:06Z\",\"date_sent\":1462362426,\"delivered_ids\":[10671085],\"dialog_id\":\"571f8230a0eb478939000052\",\"message\":\"Yo\",\"read_ids\":[10671085],\"recipient_id\":12057184,\"sender_id\":10671085,\"updated_at\":\"2016-05-04T11:47:06Z\",\"read\":0}]}",
|
5
5
|
}
|
metadata
CHANGED
@@ -1,69 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quickblox-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lucas Tolchinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: requests
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: silueta
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: cutest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: mocoso
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
description: Ruby gem to work with Quickblox API
|