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 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