quickblox-rb 0.1.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a62c994036f7f4e4ffb461e24a664b029c9101b1
4
- data.tar.gz: 30e791e6285a85be06c4d5b97e533370db23797c
3
+ metadata.gz: 8e377ebc8c37c660d792ca2c9cdf4f79cffbe660
4
+ data.tar.gz: 3015e3ca62ca96333a72bdfa672f5eb3fd37e160
5
5
  SHA512:
6
- metadata.gz: 6c0de68e336198bef5a9fdcb31fad0a118e10e4c6cc0fa60f2c45e5e7b68e7e759724b32c8f3f33d0828c074fe88f361cb2ab9243d175e7ef9975ca2f781ff79
7
- data.tar.gz: 643788c04e8816b483de330ea719a65a29053e00899696f5c04c117c77b93107bc2bedd5c1bc13a89faf358ac98decb542a1e377ca904cf222f7799ec83b10f9
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: ->(value) { value && DateTime.parse(value) }
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 :buyer
47
- attribute :seller
48
-
49
- def self.build(messages, buyer: nil, seller: nil)
50
- message_models = []
51
- if buyer && seller
52
- message_models = messages.map do |message|
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: message_models, buyer: buyer, seller: seller)
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 find_user(user_id:)
57
+ def get_user(id:)
58
58
  response = Requests.get(
59
- QB_ENDPOINT + "/users/#{user_id}.json",
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
- def chat_transcript(dialog_id:)
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
- buyer, seller = [
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
- .sort
104
- .map { |key| "#{key}=#{data[key]}" }
105
- .join("&")
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.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
 
@@ -87,7 +87,7 @@ test "#last_response" do
87
87
  assert_equal mock_response, qb.last_response
88
88
  end
89
89
 
90
- test "#find_user" do
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.find_user(user_id: 900) }
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 "#chat_transcript" do
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
- mock_user = Quickblox::Models::User.new(
126
- id: 12243767,
127
- email: "bar@foo.com",
128
- full_name: "User",
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
- chat = stub(Requests, :request, mock_response) do
132
- stub(qb, :find_user, mock_user) do
133
- stub(qb, :session_token, "token") { qb.chat_transcript(dialog_id: "5727676fa28f9a49") }
134
- end
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 mock_user, chat.buyer
140
- assert_equal mock_user, chat.seller
141
- assert_equal 1, chat.messages.size
186
+ assert_equal mock_messages, chat.messages
187
+ assert_equal mock_occupant, chat.occupants.first
188
+ assert chat.dialog.nil?
142
189
 
143
- message = chat.messages.first
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
 
@@ -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\":\"5727677a28fee63e74000000\",\"attachments\":[],\"chat_dialog_id\":\"5727676fa28f9a49\",\"created_at\":\"2016-05-02T14:43:07Z\",\"date_sent\":1462200187,\"delivered_ids\":[12243767,11716786],\"message\":\"Hola buen d\xC3\xADa\",\"read_ids\":[12243767,11716786],\"recipient_id\":100,\"sender_id\":100,\"updated_at\":\"2016-05-02T15:01:48Z\",\"read\":1}]}",
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.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-03 00:00:00.000000000 Z
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