pubnub 4.2.4 → 4.4.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of pubnub might be problematic. Click here for more details.

Files changed (296) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -0
  3. data/.pubnub.yml +160 -118
  4. data/.travis.yml +9 -20
  5. data/CHANGELOG.md +29 -5
  6. data/Gemfile.lock +62 -68
  7. data/README.md +1 -1
  8. data/VERSION +1 -1
  9. data/fixtures/vcr_cassettes/examples/grant/1913.yml +1 -1
  10. data/fixtures/vcr_cassettes/examples/grant/1944.yml +8 -9
  11. data/fixtures/vcr_cassettes/examples/grant/1945.yml +359 -9
  12. data/fixtures/vcr_cassettes/examples/history/100.yml +46 -0
  13. data/fixtures/vcr_cassettes/examples/history/include_meta__encrypted.yml +46 -0
  14. data/fixtures/vcr_cassettes/examples/history/include_token__encrypted.yml +45 -0
  15. data/fixtures/vcr_cassettes/examples/history/no_includes__encrypted.yml +45 -0
  16. data/fixtures/vcr_cassettes/examples/subscribe/0.yml +2 -2
  17. data/fixtures/vcr_cassettes/examples/subscribe/1.yml +2 -2
  18. data/fixtures/vcr_cassettes/examples/subscribe/10.yml +2 -2
  19. data/fixtures/vcr_cassettes/examples/subscribe/100.yml +2 -2
  20. data/fixtures/vcr_cassettes/examples/subscribe/101.yml +2 -2
  21. data/fixtures/vcr_cassettes/examples/subscribe/102.yml +2 -2
  22. data/fixtures/vcr_cassettes/examples/subscribe/103.yml +2 -2
  23. data/fixtures/vcr_cassettes/examples/subscribe/104.yml +2 -2
  24. data/fixtures/vcr_cassettes/examples/subscribe/105.yml +2 -2
  25. data/fixtures/vcr_cassettes/examples/subscribe/106.yml +2 -2
  26. data/fixtures/vcr_cassettes/examples/subscribe/107.yml +2 -2
  27. data/fixtures/vcr_cassettes/examples/subscribe/11.yml +2 -2
  28. data/fixtures/vcr_cassettes/examples/subscribe/12.yml +2 -2
  29. data/fixtures/vcr_cassettes/examples/subscribe/13.yml +2 -2
  30. data/fixtures/vcr_cassettes/examples/subscribe/14.yml +2 -2
  31. data/fixtures/vcr_cassettes/examples/subscribe/15.yml +2 -2
  32. data/fixtures/vcr_cassettes/examples/subscribe/16.yml +2 -2
  33. data/fixtures/vcr_cassettes/examples/subscribe/17.yml +2 -2
  34. data/fixtures/vcr_cassettes/examples/subscribe/18.yml +2 -2
  35. data/fixtures/vcr_cassettes/examples/subscribe/180.yml +2 -2
  36. data/fixtures/vcr_cassettes/examples/subscribe/181.yml +2 -2
  37. data/fixtures/vcr_cassettes/examples/subscribe/182.yml +2 -2
  38. data/fixtures/vcr_cassettes/examples/subscribe/183.yml +2 -2
  39. data/fixtures/vcr_cassettes/examples/subscribe/184.yml +2 -2
  40. data/fixtures/vcr_cassettes/examples/subscribe/185.yml +2 -2
  41. data/fixtures/vcr_cassettes/examples/subscribe/186.yml +2 -2
  42. data/fixtures/vcr_cassettes/examples/subscribe/187.yml +2 -2
  43. data/fixtures/vcr_cassettes/examples/subscribe/188.yml +2 -2
  44. data/fixtures/vcr_cassettes/examples/subscribe/189.yml +2 -2
  45. data/fixtures/vcr_cassettes/examples/subscribe/19.yml +2 -2
  46. data/fixtures/vcr_cassettes/examples/subscribe/190.yml +2 -2
  47. data/fixtures/vcr_cassettes/examples/subscribe/191.yml +2 -2
  48. data/fixtures/vcr_cassettes/examples/subscribe/192.yml +2 -2
  49. data/fixtures/vcr_cassettes/examples/subscribe/193.yml +2 -2
  50. data/fixtures/vcr_cassettes/examples/subscribe/194.yml +2 -2
  51. data/fixtures/vcr_cassettes/examples/subscribe/195.yml +2 -2
  52. data/fixtures/vcr_cassettes/examples/subscribe/196.yml +2 -2
  53. data/fixtures/vcr_cassettes/examples/subscribe/197.yml +2 -2
  54. data/fixtures/vcr_cassettes/examples/subscribe/2.yml +2 -2
  55. data/fixtures/vcr_cassettes/examples/subscribe/20.yml +2 -2
  56. data/fixtures/vcr_cassettes/examples/subscribe/21.yml +2 -2
  57. data/fixtures/vcr_cassettes/examples/subscribe/22.yml +2 -2
  58. data/fixtures/vcr_cassettes/examples/subscribe/23.yml +2 -2
  59. data/fixtures/vcr_cassettes/examples/subscribe/24.yml +2 -2
  60. data/fixtures/vcr_cassettes/examples/subscribe/25.yml +2 -2
  61. data/fixtures/vcr_cassettes/examples/subscribe/26.yml +2 -2
  62. data/fixtures/vcr_cassettes/examples/subscribe/27.yml +2 -2
  63. data/fixtures/vcr_cassettes/examples/subscribe/270.yml +2 -2
  64. data/fixtures/vcr_cassettes/examples/subscribe/271.yml +2 -2
  65. data/fixtures/vcr_cassettes/examples/subscribe/272.yml +2 -2
  66. data/fixtures/vcr_cassettes/examples/subscribe/273.yml +2 -2
  67. data/fixtures/vcr_cassettes/examples/subscribe/274.yml +2 -2
  68. data/fixtures/vcr_cassettes/examples/subscribe/275.yml +2 -2
  69. data/fixtures/vcr_cassettes/examples/subscribe/276.yml +2 -2
  70. data/fixtures/vcr_cassettes/examples/subscribe/277.yml +2 -2
  71. data/fixtures/vcr_cassettes/examples/subscribe/278.yml +2 -2
  72. data/fixtures/vcr_cassettes/examples/subscribe/279.yml +2 -2
  73. data/fixtures/vcr_cassettes/examples/subscribe/28.yml +2 -2
  74. data/fixtures/vcr_cassettes/examples/subscribe/280.yml +2 -2
  75. data/fixtures/vcr_cassettes/examples/subscribe/281.yml +2 -2
  76. data/fixtures/vcr_cassettes/examples/subscribe/282.yml +2 -2
  77. data/fixtures/vcr_cassettes/examples/subscribe/283.yml +2 -2
  78. data/fixtures/vcr_cassettes/examples/subscribe/284.yml +2 -2
  79. data/fixtures/vcr_cassettes/examples/subscribe/285.yml +2 -2
  80. data/fixtures/vcr_cassettes/examples/subscribe/286.yml +2 -2
  81. data/fixtures/vcr_cassettes/examples/subscribe/287.yml +2 -2
  82. data/fixtures/vcr_cassettes/examples/subscribe/29.yml +2 -2
  83. data/fixtures/vcr_cassettes/examples/subscribe/3.yml +2 -2
  84. data/fixtures/vcr_cassettes/examples/subscribe/30.yml +2 -2
  85. data/fixtures/vcr_cassettes/examples/subscribe/31.yml +2 -2
  86. data/fixtures/vcr_cassettes/examples/subscribe/32.yml +2 -2
  87. data/fixtures/vcr_cassettes/examples/subscribe/33.yml +2 -2
  88. data/fixtures/vcr_cassettes/examples/subscribe/34.yml +2 -2
  89. data/fixtures/vcr_cassettes/examples/subscribe/35.yml +2 -2
  90. data/fixtures/vcr_cassettes/examples/subscribe/36.yml +2 -2
  91. data/fixtures/vcr_cassettes/examples/subscribe/360.yml +2 -2
  92. data/fixtures/vcr_cassettes/examples/subscribe/361.yml +2 -2
  93. data/fixtures/vcr_cassettes/examples/subscribe/362.yml +2 -2
  94. data/fixtures/vcr_cassettes/examples/subscribe/363.yml +2 -2
  95. data/fixtures/vcr_cassettes/examples/subscribe/364.yml +2 -2
  96. data/fixtures/vcr_cassettes/examples/subscribe/365.yml +2 -2
  97. data/fixtures/vcr_cassettes/examples/subscribe/366.yml +2 -2
  98. data/fixtures/vcr_cassettes/examples/subscribe/367.yml +2 -2
  99. data/fixtures/vcr_cassettes/examples/subscribe/368.yml +2 -2
  100. data/fixtures/vcr_cassettes/examples/subscribe/369.yml +2 -2
  101. data/fixtures/vcr_cassettes/examples/subscribe/37.yml +2 -2
  102. data/fixtures/vcr_cassettes/examples/subscribe/370.yml +2 -2
  103. data/fixtures/vcr_cassettes/examples/subscribe/371.yml +2 -2
  104. data/fixtures/vcr_cassettes/examples/subscribe/372.yml +2 -2
  105. data/fixtures/vcr_cassettes/examples/subscribe/373.yml +2 -2
  106. data/fixtures/vcr_cassettes/examples/subscribe/374.yml +2 -2
  107. data/fixtures/vcr_cassettes/examples/subscribe/375.yml +2 -2
  108. data/fixtures/vcr_cassettes/examples/subscribe/376.yml +2 -2
  109. data/fixtures/vcr_cassettes/examples/subscribe/377.yml +2 -2
  110. data/fixtures/vcr_cassettes/examples/subscribe/38.yml +2 -2
  111. data/fixtures/vcr_cassettes/examples/subscribe/39.yml +2 -2
  112. data/fixtures/vcr_cassettes/examples/subscribe/4.yml +2 -2
  113. data/fixtures/vcr_cassettes/examples/subscribe/40.yml +2 -2
  114. data/fixtures/vcr_cassettes/examples/subscribe/41.yml +2 -2
  115. data/fixtures/vcr_cassettes/examples/subscribe/42.yml +2 -2
  116. data/fixtures/vcr_cassettes/examples/subscribe/43.yml +2 -2
  117. data/fixtures/vcr_cassettes/examples/subscribe/44.yml +2 -2
  118. data/fixtures/vcr_cassettes/examples/subscribe/45.yml +2 -2
  119. data/fixtures/vcr_cassettes/examples/subscribe/46.yml +2 -2
  120. data/fixtures/vcr_cassettes/examples/subscribe/47.yml +2 -2
  121. data/fixtures/vcr_cassettes/examples/subscribe/48.yml +2 -2
  122. data/fixtures/vcr_cassettes/examples/subscribe/49.yml +2 -2
  123. data/fixtures/vcr_cassettes/examples/subscribe/5.yml +2 -2
  124. data/fixtures/vcr_cassettes/examples/subscribe/50.yml +2 -2
  125. data/fixtures/vcr_cassettes/examples/subscribe/51.yml +2 -2
  126. data/fixtures/vcr_cassettes/examples/subscribe/52.yml +2 -2
  127. data/fixtures/vcr_cassettes/examples/subscribe/53.yml +2 -2
  128. data/fixtures/vcr_cassettes/examples/subscribe/54.yml +2 -2
  129. data/fixtures/vcr_cassettes/examples/subscribe/55.yml +2 -2
  130. data/fixtures/vcr_cassettes/examples/subscribe/56.yml +2 -2
  131. data/fixtures/vcr_cassettes/examples/subscribe/57.yml +2 -2
  132. data/fixtures/vcr_cassettes/examples/subscribe/58.yml +2 -2
  133. data/fixtures/vcr_cassettes/examples/subscribe/59.yml +2 -2
  134. data/fixtures/vcr_cassettes/examples/subscribe/6.yml +2 -2
  135. data/fixtures/vcr_cassettes/examples/subscribe/60.yml +2 -2
  136. data/fixtures/vcr_cassettes/examples/subscribe/61.yml +2 -2
  137. data/fixtures/vcr_cassettes/examples/subscribe/62.yml +2 -2
  138. data/fixtures/vcr_cassettes/examples/subscribe/63.yml +2 -2
  139. data/fixtures/vcr_cassettes/examples/subscribe/64.yml +2 -2
  140. data/fixtures/vcr_cassettes/examples/subscribe/65.yml +2 -2
  141. data/fixtures/vcr_cassettes/examples/subscribe/66.yml +2 -2
  142. data/fixtures/vcr_cassettes/examples/subscribe/67.yml +2 -2
  143. data/fixtures/vcr_cassettes/examples/subscribe/68.yml +2 -2
  144. data/fixtures/vcr_cassettes/examples/subscribe/69.yml +2 -2
  145. data/fixtures/vcr_cassettes/examples/subscribe/7.yml +2 -2
  146. data/fixtures/vcr_cassettes/examples/subscribe/70.yml +2 -2
  147. data/fixtures/vcr_cassettes/examples/subscribe/71.yml +2 -2
  148. data/fixtures/vcr_cassettes/examples/subscribe/72.yml +2 -2
  149. data/fixtures/vcr_cassettes/examples/subscribe/73.yml +2 -2
  150. data/fixtures/vcr_cassettes/examples/subscribe/74.yml +2 -2
  151. data/fixtures/vcr_cassettes/examples/subscribe/75.yml +2 -2
  152. data/fixtures/vcr_cassettes/examples/subscribe/76.yml +2 -2
  153. data/fixtures/vcr_cassettes/examples/subscribe/77.yml +2 -2
  154. data/fixtures/vcr_cassettes/examples/subscribe/78.yml +2 -2
  155. data/fixtures/vcr_cassettes/examples/subscribe/79.yml +2 -2
  156. data/fixtures/vcr_cassettes/examples/subscribe/8.yml +2 -2
  157. data/fixtures/vcr_cassettes/examples/subscribe/80.yml +2 -2
  158. data/fixtures/vcr_cassettes/examples/subscribe/81.yml +2 -2
  159. data/fixtures/vcr_cassettes/examples/subscribe/82.yml +2 -2
  160. data/fixtures/vcr_cassettes/examples/subscribe/83.yml +2 -2
  161. data/fixtures/vcr_cassettes/examples/subscribe/84.yml +2 -2
  162. data/fixtures/vcr_cassettes/examples/subscribe/85.yml +2 -2
  163. data/fixtures/vcr_cassettes/examples/subscribe/86.yml +2 -2
  164. data/fixtures/vcr_cassettes/examples/subscribe/87.yml +2 -2
  165. data/fixtures/vcr_cassettes/examples/subscribe/88.yml +2 -2
  166. data/fixtures/vcr_cassettes/examples/subscribe/89.yml +2 -2
  167. data/fixtures/vcr_cassettes/examples/subscribe/9.yml +2 -2
  168. data/fixtures/vcr_cassettes/examples/subscribe/90.yml +2 -2
  169. data/fixtures/vcr_cassettes/examples/subscribe/91.yml +2 -2
  170. data/fixtures/vcr_cassettes/examples/subscribe/92.yml +2 -2
  171. data/fixtures/vcr_cassettes/examples/subscribe/93.yml +2 -2
  172. data/fixtures/vcr_cassettes/examples/subscribe/94.yml +2 -2
  173. data/fixtures/vcr_cassettes/examples/subscribe/95.yml +2 -2
  174. data/fixtures/vcr_cassettes/examples/subscribe/96.yml +2 -2
  175. data/fixtures/vcr_cassettes/examples/subscribe/97.yml +2 -2
  176. data/fixtures/vcr_cassettes/examples/subscribe/98.yml +2 -2
  177. data/fixtures/vcr_cassettes/examples/subscribe/99.yml +2 -2
  178. data/fixtures/vcr_cassettes/lib/events/get_all_channels_metadata.yml +39 -0
  179. data/fixtures/vcr_cassettes/lib/events/get_all_uuid_metadata.yml +76 -0
  180. data/fixtures/vcr_cassettes/lib/events/{get_space_memberships.yml → get_channel_members.yml} +5 -6
  181. data/fixtures/vcr_cassettes/lib/events/get_channel_metadata.yml +37 -0
  182. data/fixtures/vcr_cassettes/lib/events/{get_members.yml → get_memberships.yml} +10 -11
  183. data/fixtures/vcr_cassettes/lib/events/get_uuid_metadata.yml +76 -0
  184. data/fixtures/vcr_cassettes/lib/events/grant-error.yml +2 -2
  185. data/fixtures/vcr_cassettes/lib/events/grant.yml +10 -11
  186. data/fixtures/vcr_cassettes/lib/events/remove_channel_members.yml +78 -0
  187. data/fixtures/vcr_cassettes/lib/events/{delete_space.yml → remove_channel_metadata.yml} +5 -6
  188. data/fixtures/vcr_cassettes/lib/events/{manage_memberships_remove.yml → remove_memberships.yml} +8 -9
  189. data/fixtures/vcr_cassettes/lib/events/remove_uuid_metadata.yml +76 -0
  190. data/fixtures/vcr_cassettes/lib/events/set_channel_members.yml +39 -0
  191. data/fixtures/vcr_cassettes/lib/events/set_channel_metadata.yml +39 -0
  192. data/fixtures/vcr_cassettes/lib/events/{manage_members_add.yml → set_memberships.yml} +8 -9
  193. data/fixtures/vcr_cassettes/lib/events/set_uuid_metadata.yml +78 -0
  194. data/fixtures/vcr_cassettes/lib/events/{subscribe-space-delete-async.yml → subscribe-channel-metadata-remove-sync.yml} +12 -14
  195. data/fixtures/vcr_cassettes/lib/events/subscribe-channel-metadata-set-async.yml +75 -0
  196. data/fixtures/vcr_cassettes/lib/events/{subscribe-member-remove-async.yml → subscribe-member-remove-sync.yml} +12 -14
  197. data/fixtures/vcr_cassettes/lib/events/subscribe-member-set-async.yml +75 -0
  198. data/fixtures/vcr_cassettes/lib/events/subscribe-membership-remove-async.yml +12 -14
  199. data/fixtures/vcr_cassettes/lib/events/{subscribe-user-update-async.yml → subscribe-membership-set-async.yml} +12 -14
  200. data/fixtures/vcr_cassettes/lib/events/{subscribe-user-delete-async.yml → subscribe-uuid-metadata-remove-sync.yml} +12 -14
  201. data/fixtures/vcr_cassettes/lib/events/subscribe-uuid-metadata-set-async.yml +75 -0
  202. data/fixtures/vcr_cassettes/lib/events/subscribe-with-presence.yml +2 -2
  203. data/lib/pubnub/client.rb +14 -14
  204. data/lib/pubnub/client/events.rb +4 -2
  205. data/lib/pubnub/client/paged_history.rb +1 -1
  206. data/lib/pubnub/constants.rb +19 -18
  207. data/lib/pubnub/event.rb +30 -16
  208. data/lib/pubnub/event/formatter.rb +4 -0
  209. data/lib/pubnub/event/signature.rb +22 -7
  210. data/lib/pubnub/events/get_all_channels_metadata.rb +92 -0
  211. data/lib/pubnub/events/get_all_uuid_metadata.rb +92 -0
  212. data/lib/pubnub/events/get_channel_members.rb +100 -0
  213. data/lib/pubnub/events/{get_user.rb → get_channel_metadata.rb} +22 -15
  214. data/lib/pubnub/events/get_memberships.rb +100 -0
  215. data/lib/pubnub/events/{get_space.rb → get_uuid_metadata.rb} +22 -15
  216. data/lib/pubnub/events/grant.rb +10 -1
  217. data/lib/pubnub/events/history.rb +17 -2
  218. data/lib/pubnub/events/remove_channel_members.rb +117 -0
  219. data/lib/pubnub/events/{delete_space.rb → remove_channel_metadata.rb} +12 -12
  220. data/lib/pubnub/events/remove_memberships.rb +117 -0
  221. data/lib/pubnub/events/{delete_user.rb → remove_uuid_metadata.rb} +12 -12
  222. data/lib/pubnub/events/set_channel_members.rb +120 -0
  223. data/lib/pubnub/events/{create_space.rb → set_channel_metadata.rb} +26 -16
  224. data/lib/pubnub/events/set_memberships.rb +120 -0
  225. data/lib/pubnub/events/{update_space.rb → set_uuid_metadata.rb} +27 -18
  226. data/lib/pubnub/formatter.rb +3 -3
  227. data/lib/pubnub/pam.rb +2 -11
  228. data/lib/pubnub/subscribe_callback.rb +1 -3
  229. data/lib/pubnub/subscribe_event/formatter.rb +26 -17
  230. data/lib/pubnub/subscriber.rb +5 -6
  231. data/lib/pubnub/validators/get_all_channels_metadata.rb +29 -0
  232. data/lib/pubnub/validators/get_all_uuid_metadata.rb +29 -0
  233. data/lib/pubnub/validators/get_channel_members.rb +39 -0
  234. data/lib/pubnub/validators/get_channel_metadata.rb +39 -0
  235. data/lib/pubnub/validators/get_memberships.rb +39 -0
  236. data/lib/pubnub/validators/get_uuid_metadata.rb +39 -0
  237. data/lib/pubnub/validators/grant.rb +37 -2
  238. data/lib/pubnub/validators/remove_channel_members.rb +52 -0
  239. data/lib/pubnub/validators/remove_channel_metadata.rb +39 -0
  240. data/lib/pubnub/validators/remove_memberships.rb +52 -0
  241. data/lib/pubnub/validators/remove_uuid_metadata.rb +39 -0
  242. data/lib/pubnub/validators/set_channel_members.rb +78 -0
  243. data/lib/pubnub/validators/set_channel_metadata.rb +62 -0
  244. data/lib/pubnub/validators/set_memberships.rb +78 -0
  245. data/lib/pubnub/validators/set_uuid_metadata.rb +62 -0
  246. data/lib/pubnub/version.rb +1 -1
  247. data/pubnub.gemspec +1 -1
  248. data/spec/examples/grant_examples_spec.rb +36 -0
  249. data/spec/examples/history_examples_spec.rb +85 -0
  250. data/spec/lib/event/formatter_spec.rb +22 -0
  251. data/spec/lib/events/channel_metadata_spec.rb +58 -0
  252. data/spec/lib/events/grant_spec.rb +3 -2
  253. data/spec/lib/events/membership_spec.rb +25 -22
  254. data/spec/lib/events/subscribe_spec.rb +58 -45
  255. data/spec/lib/events/uuid_metadata_spec.rb +56 -0
  256. data/spec/lib/subscribe_event/formatter_spec.rb +22 -0
  257. data/spec/spec_helper.rb +1 -1
  258. metadata +79 -72
  259. data/fixtures/vcr_cassettes/lib/events/create_space.yml +0 -40
  260. data/fixtures/vcr_cassettes/lib/events/create_user.yml +0 -40
  261. data/fixtures/vcr_cassettes/lib/events/delete_user.yml +0 -38
  262. data/fixtures/vcr_cassettes/lib/events/get_space.yml +0 -38
  263. data/fixtures/vcr_cassettes/lib/events/get_spaces.yml +0 -40
  264. data/fixtures/vcr_cassettes/lib/events/get_user.yml +0 -38
  265. data/fixtures/vcr_cassettes/lib/events/get_users.yml +0 -40
  266. data/fixtures/vcr_cassettes/lib/events/manage_members_remove.yml +0 -83
  267. data/fixtures/vcr_cassettes/lib/events/manage_memberships_add.yml +0 -40
  268. data/fixtures/vcr_cassettes/lib/events/subscribe-member-add-async.yml +0 -77
  269. data/fixtures/vcr_cassettes/lib/events/subscribe-membership-add-async.yml +0 -77
  270. data/fixtures/vcr_cassettes/lib/events/subscribe-space-update-async.yml +0 -77
  271. data/fixtures/vcr_cassettes/lib/events/update_space.yml +0 -40
  272. data/fixtures/vcr_cassettes/lib/events/update_user.yml +0 -40
  273. data/lib/pubnub/events/create_user.rb +0 -84
  274. data/lib/pubnub/events/get_members.rb +0 -93
  275. data/lib/pubnub/events/get_space_memberships.rb +0 -93
  276. data/lib/pubnub/events/get_spaces.rb +0 -90
  277. data/lib/pubnub/events/get_users.rb +0 -90
  278. data/lib/pubnub/events/manage_members.rb +0 -105
  279. data/lib/pubnub/events/manage_memberships.rb +0 -105
  280. data/lib/pubnub/events/update_user.rb +0 -86
  281. data/lib/pubnub/validators/create_space.rb +0 -44
  282. data/lib/pubnub/validators/create_user.rb +0 -44
  283. data/lib/pubnub/validators/delete_space.rb +0 -32
  284. data/lib/pubnub/validators/delete_user.rb +0 -32
  285. data/lib/pubnub/validators/get_members.rb +0 -32
  286. data/lib/pubnub/validators/get_space.rb +0 -32
  287. data/lib/pubnub/validators/get_space_memberships.rb +0 -32
  288. data/lib/pubnub/validators/get_spaces.rb +0 -16
  289. data/lib/pubnub/validators/get_user.rb +0 -32
  290. data/lib/pubnub/validators/get_users.rb +0 -16
  291. data/lib/pubnub/validators/manage_members.rb +0 -45
  292. data/lib/pubnub/validators/manage_memberships.rb +0 -45
  293. data/lib/pubnub/validators/update_space.rb +0 -45
  294. data/lib/pubnub/validators/update_user.rb +0 -45
  295. data/spec/lib/events/space_spec.rb +0 -75
  296. data/spec/lib/events/user_spec.rb +0 -75
@@ -2,20 +2,20 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Pubnub
5
- # Holds DeleteUser functionality
6
- class DeleteUser < SingleEvent
5
+ # Holds RemoveUuidMetadata functionality
6
+ class RemoveUuidMetadata < SingleEvent
7
7
  include Concurrent::Async
8
- include Pubnub::Validator::DeleteUser
8
+ include Pubnub::Validator::RemoveUuidMetadata
9
9
 
10
10
  def initialize(options, app)
11
- @event = :delete_user
11
+ @event = current_operation
12
12
  @telemetry_name = :l_obj
13
- @user_id = options[:user_id]
13
+ @uuid = options[:uuid]
14
14
  super
15
15
  end
16
16
 
17
17
  def fire
18
- Pubnub.logger.debug('Pubnub::DeleteUser') { "Fired event #{self.class}" }
18
+ Pubnub.logger.debug('Pubnub::RemoveUuidMetadata') { "Fired event #{self.class}" }
19
19
 
20
20
  body = Formatter.format_message(@data, @cipher_key, false)
21
21
  response = send_request(body)
@@ -28,16 +28,16 @@ module Pubnub
28
28
  private
29
29
 
30
30
  def current_operation
31
- Pubnub::Constants::OPERATION_DELETE_USER
31
+ Pubnub::Constants::OPERATION_REMOVE_UUID_METADATA
32
32
  end
33
33
 
34
34
  def path
35
35
  '/' + [
36
- 'v1',
36
+ 'v2',
37
37
  'objects',
38
38
  @subscribe_key,
39
- 'users',
40
- @user_id
39
+ 'uuids',
40
+ Formatter.encode(@uuid)
41
41
  ].join('/')
42
42
  end
43
43
 
@@ -49,7 +49,7 @@ module Pubnub
49
49
 
50
50
  result: {
51
51
  code: req_res_objects[:response].code,
52
- operation: Pubnub::Constants::OPERATION_DELETE_USER,
52
+ operation: current_operation,
53
53
  client_request: req_res_objects[:request],
54
54
  server_response: req_res_objects[:response],
55
55
  data: parsed_response
@@ -57,7 +57,7 @@ module Pubnub
57
57
 
58
58
  status: {
59
59
  code: req_res_objects[:response].code,
60
- operation: Pubnub::Constants::OPERATION_DELETE_USER,
60
+ operation: current_operation,
61
61
  client_request: req_res_objects[:request],
62
62
  server_response: req_res_objects[:response],
63
63
  data: nil,
@@ -0,0 +1,120 @@
1
+ # Toplevel Pubnub module.
2
+ # frozen_string_literal: true
3
+
4
+ module Pubnub
5
+ # Holds SetChannelMembers functionality
6
+ class SetChannelMembers < SingleEvent
7
+ include Concurrent::Async
8
+ include Pubnub::Validator::SetChannelMembers
9
+
10
+ def initialize(options, app)
11
+ @event = current_operation
12
+ @telemetry_name = :l_obj
13
+ @channel = options[:channel]
14
+ @limit = [options[:limit], 100].min unless options[:limit].nil?
15
+ @sort = options[:sort].join(",") if options[:sort] && !options[:sort].empty?
16
+ @filter = options[:filter] if options[:filter] && !options[:filter].empty?
17
+ @start = options[:start] if options[:start] && !options[:start].empty?
18
+ @end = options[:end] if options[:start] && !options[:end].empty?
19
+
20
+ if options[:include]
21
+ include = options[:include]
22
+ @include_count = [0, '0', false].include?(include[:count]) ? "0" : "1" unless include[:count].nil?
23
+ @include_custom = "custom" if !include[:custom].nil? && ![0, '0', false].include?(include[:custom])
24
+ @include_uuid_metadata = "uuid" if !include[:uuid_metadata].nil? && ![0, '0', false].include?(include[:uuid_metadata])
25
+ @include_uuid_custom = "uuid.custom" if !include[:uuid_custom].nil? && ![0, '0', false].include?(include[:uuid_custom])
26
+
27
+ @include = [@include_custom, @include_uuid_metadata, @include_uuid_custom].reject { |flag| flag.to_s.empty? }
28
+ end
29
+
30
+ @uuids = options[:uuids] if options[:uuids] && !options[:uuids].empty?
31
+
32
+ # Collections by default return number of available entries.
33
+ @include_count = "1" if @include_count.nil?
34
+
35
+ super
36
+ end
37
+
38
+ def fire
39
+ Pubnub.logger.debug('Pubnub::SetChannelMembers') { "Fired event #{self.class}" }
40
+
41
+ members = @uuids.map do |member|
42
+ member_object = { uuid: { id: member[:uuid] } }
43
+ member_object[:custom] = member[:custom] if member[:custom] && !member[:custom].empty?
44
+
45
+ member_object
46
+ end
47
+
48
+ body = Formatter.format_message({ set: members }, @cipher_key, false)
49
+ response = send_request(body)
50
+
51
+ envelopes = fire_callbacks(handle(response, uri))
52
+ finalize_event(envelopes)
53
+ envelopes
54
+ end
55
+
56
+ private
57
+
58
+ def current_operation
59
+ Pubnub::Constants::OPERATION_SET_CHANNEL_MEMBERS
60
+ end
61
+
62
+ def parameters(signature = false)
63
+ parameters = super(signature)
64
+ parameters[:limit] = @limit unless @limit.nil?
65
+ parameters[:sort] = @sort unless @sort.nil?
66
+ parameters[:filter] = @filter unless @filter.nil?
67
+ parameters[:start] = @start unless @start.nil?
68
+ parameters[:end] = @end if @end && !@start
69
+ parameters[:count] = @include_count unless @include_count.nil?
70
+ parameters[:include] = @include.sort.join(",") if @include && !@include.empty?
71
+
72
+ parameters
73
+ end
74
+
75
+ def path
76
+ '/' + [
77
+ 'v2',
78
+ 'objects',
79
+ @subscribe_key,
80
+ 'channels',
81
+ Formatter.channels_for_url(@channel),
82
+ 'uuids'
83
+ ].join('/')
84
+ end
85
+
86
+ def valid_envelope(parsed_response, req_res_objects)
87
+ Pubnub::Envelope.new(
88
+ event: @event,
89
+ event_options: @given_options,
90
+ timetoken: nil,
91
+
92
+ result: {
93
+ code: req_res_objects[:response].code,
94
+ operation: current_operation,
95
+ client_request: req_res_objects[:request],
96
+ server_response: req_res_objects[:response],
97
+ data: parsed_response
98
+ },
99
+
100
+ status: {
101
+ code: req_res_objects[:response].code,
102
+ operation: current_operation,
103
+ client_request: req_res_objects[:request],
104
+ server_response: req_res_objects[:response],
105
+ data: nil,
106
+ category: Pubnub::Constants::STATUS_ACK,
107
+ error: false,
108
+ auto_retried: false,
109
+
110
+ current_timetoken: nil,
111
+ last_timetoken: nil,
112
+ subscribed_channels: nil,
113
+ subscribed_channel_groups: nil,
114
+
115
+ config: get_config
116
+ }
117
+ )
118
+ end
119
+ end
120
+ end
@@ -2,23 +2,32 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Pubnub
5
- # Holds CreateSpace functionality
6
- class CreateSpace < SingleEvent
5
+ # Holds SetChannelMetadata functionality
6
+ class SetChannelMetadata < SingleEvent
7
7
  include Concurrent::Async
8
- include Pubnub::Validator::CreateSpace
8
+ include Pubnub::Validator::SetChannelMetadata
9
9
 
10
10
  def initialize(options, app)
11
- @event = :create_space
11
+ @event = current_operation
12
12
  @telemetry_name = :l_obj
13
- @data = options[:data]
14
- @include = options[:include]
13
+ @channel = options[:channel]
14
+
15
+ # Clean up user-provided metadata object from nils.
16
+ @metadata = options[:metadata].delete_if { |_k, v| v.blank? } unless options[:metadata].nil?
17
+
18
+ if options[:include]
19
+ @include = [0, '0', false].include?(options[:include][:custom]) ? "0" : "1" unless options[:include][:custom].nil?
20
+ end
21
+
22
+ # Single entity creation should return it's 'custom' field by default.
23
+ @include = "custom" if @include.nil?
15
24
  super
16
25
  end
17
26
 
18
27
  def fire
19
- Pubnub.logger.debug('Pubnub::CreateSpace') { "Fired event #{self.class}" }
28
+ Pubnub.logger.debug('Pubnub::SetChannelMetadata') { "Fired event #{self.class}" }
20
29
 
21
- body = Formatter.format_message(@data, @cipher_key, false)
30
+ body = Formatter.format_message(@metadata, @cipher_key, false)
22
31
  response = send_request(body)
23
32
 
24
33
  envelopes = fire_callbacks(handle(response, uri))
@@ -29,21 +38,22 @@ module Pubnub
29
38
  private
30
39
 
31
40
  def current_operation
32
- Pubnub::Constants::OPERATION_CREATE_SPACE
41
+ Pubnub::Constants::OPERATION_SET_CHANNEL_METADATA
33
42
  end
34
43
 
35
- def parameters(*_args)
36
- parameters = super
37
- parameters[:include] = @include if @include
44
+ def parameters(signature = false)
45
+ parameters = super(signature)
46
+ parameters[:include] = @include
38
47
  parameters
39
48
  end
40
49
 
41
50
  def path
42
51
  '/' + [
43
- 'v1',
52
+ 'v2',
44
53
  'objects',
45
54
  @subscribe_key,
46
- 'spaces'
55
+ 'channels',
56
+ Formatter.channels_for_url(@channel)
47
57
  ].join('/')
48
58
  end
49
59
 
@@ -55,7 +65,7 @@ module Pubnub
55
65
 
56
66
  result: {
57
67
  code: req_res_objects[:response].code,
58
- operation: Pubnub::Constants::OPERATION_CREATE_SPACE,
68
+ operation: current_operation,
59
69
  client_request: req_res_objects[:request],
60
70
  server_response: req_res_objects[:response],
61
71
  data: parsed_response
@@ -63,7 +73,7 @@ module Pubnub
63
73
 
64
74
  status: {
65
75
  code: req_res_objects[:response].code,
66
- operation: Pubnub::Constants::OPERATION_CREATE_SPACE,
76
+ operation: current_operation,
67
77
  client_request: req_res_objects[:request],
68
78
  server_response: req_res_objects[:response],
69
79
  data: nil,
@@ -0,0 +1,120 @@
1
+ # Toplevel Pubnub module.
2
+ # frozen_string_literal: true
3
+
4
+ module Pubnub
5
+ # Holds SetMemberships functionality
6
+ class SetMemberships < SingleEvent
7
+ include Concurrent::Async
8
+ include Pubnub::Validator::SetMemberships
9
+
10
+ def initialize(options, app)
11
+ @event = current_operation
12
+ @telemetry_name = :l_obj
13
+ @uuid = options[:uuid]
14
+ @limit = [options[:limit], 100].min unless options[:limit].nil?
15
+ @sort = options[:sort].join(",") if options[:sort] && !options[:sort].empty?
16
+ @filter = options[:filter] if options[:filter] && !options[:filter].empty?
17
+ @start = options[:start] if options[:start] && !options[:start].empty?
18
+ @end = options[:end] if options[:start] && !options[:end].empty?
19
+
20
+ if options[:include]
21
+ include = options[:include]
22
+ @include_count = [0, '0', false].include?(include[:count]) ? "0" : "1" unless include[:count].nil?
23
+ @include_custom = "custom" if !include[:custom].nil? && ![0, '0', false].include?(include[:custom])
24
+ @include_channel_metadata = "channel" if !include[:channel_metadata].nil? && ![0, '0', false].include?(include[:channel_metadata])
25
+ @include_channel_custom = "channel.custom" if !include[:channel_custom].nil? && ![0, '0', false].include?(include[:channel_custom])
26
+
27
+ @include = [@include_custom, @include_channel_metadata, @include_channel_custom].reject { |flag| flag.to_s.empty? }
28
+ end
29
+
30
+ @channels = options[:channels] if options[:channels] && !options[:channels].empty?
31
+
32
+ # Collections by default return number of available entries.
33
+ @include_count = "1" if @include_count.nil?
34
+
35
+ super
36
+ end
37
+
38
+ def fire
39
+ Pubnub.logger.debug('Pubnub::SetMemberships') { "Fired event #{self.class}" }
40
+
41
+ memberships = @channels.map do |membership|
42
+ membership_object = { channel: { id: membership[:channel] } }
43
+ membership_object[:custom] = membership[:custom] if membership[:custom] && !membership[:custom].empty?
44
+
45
+ membership_object
46
+ end
47
+
48
+ body = Formatter.format_message({ set: memberships }, @cipher_key, false)
49
+ response = send_request(body)
50
+
51
+ envelopes = fire_callbacks(handle(response, uri))
52
+ finalize_event(envelopes)
53
+ envelopes
54
+ end
55
+
56
+ private
57
+
58
+ def current_operation
59
+ Pubnub::Constants::OPERATION_SET_MEMBERSHIPS
60
+ end
61
+
62
+ def parameters(signature = false)
63
+ parameters = super(signature)
64
+ parameters[:limit] = @limit unless @limit.nil?
65
+ parameters[:sort] = @sort unless @sort.nil?
66
+ parameters[:filter] = @filter unless @filter.nil?
67
+ parameters[:start] = @start unless @start.nil?
68
+ parameters[:end] = @end if @end && !@start
69
+ parameters[:count] = @include_count unless @include_count.nil?
70
+ parameters[:include] = @include.sort.join(",") if @include && !@include.empty?
71
+
72
+ parameters
73
+ end
74
+
75
+ def path
76
+ '/' + [
77
+ 'v2',
78
+ 'objects',
79
+ @subscribe_key,
80
+ 'uuids',
81
+ Formatter.encode(@uuid),
82
+ 'channels'
83
+ ].join('/')
84
+ end
85
+
86
+ def valid_envelope(parsed_response, req_res_objects)
87
+ Pubnub::Envelope.new(
88
+ event: @event,
89
+ event_options: @given_options,
90
+ timetoken: nil,
91
+
92
+ result: {
93
+ code: req_res_objects[:response].code,
94
+ operation: current_operation,
95
+ client_request: req_res_objects[:request],
96
+ server_response: req_res_objects[:response],
97
+ data: parsed_response
98
+ },
99
+
100
+ status: {
101
+ code: req_res_objects[:response].code,
102
+ operation: current_operation,
103
+ client_request: req_res_objects[:request],
104
+ server_response: req_res_objects[:response],
105
+ data: nil,
106
+ category: Pubnub::Constants::STATUS_ACK,
107
+ error: false,
108
+ auto_retried: false,
109
+
110
+ current_timetoken: nil,
111
+ last_timetoken: nil,
112
+ subscribed_channels: nil,
113
+ subscribed_channel_groups: nil,
114
+
115
+ config: get_config
116
+ }
117
+ )
118
+ end
119
+ end
120
+ end
@@ -2,24 +2,33 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Pubnub
5
- # Holds UpdateSpace functionality
6
- class UpdateSpace < SingleEvent
5
+ # Holds SetUuidMetadata functionality
6
+ class SetUuidMetadata < SingleEvent
7
7
  include Concurrent::Async
8
- include Pubnub::Validator::UpdateSpace
8
+ include Pubnub::Validator::SetUuidMetadata
9
9
 
10
10
  def initialize(options, app)
11
- @event = :update_space
11
+ @event = current_operation
12
12
  @telemetry_name = :l_obj
13
- @space_id = options[:space_id]
14
- @data = options[:data]
15
- @include = options[:include]
13
+ @uuid = options[:uuid]
14
+
15
+ # Clean up user-provided metadata object from nils.
16
+ @metadata = options[:metadata].delete_if { |_k, v| v.blank? } unless options[:metadata].nil?
17
+
18
+ if options[:include]
19
+ @include = [0, '0', false].include?(options[:include][:custom]) ? "0" : "1" unless options[:include][:custom].nil?
20
+ end
21
+
22
+ # Single entity creation should return it's 'custom' field by default.
23
+ @include = "custom" if @include.nil?
24
+
16
25
  super
17
26
  end
18
27
 
19
28
  def fire
20
- Pubnub.logger.debug('Pubnub::UpdateSpace') { "Fired event #{self.class}" }
29
+ Pubnub.logger.debug('Pubnub::SetUuidMetadata') { "Fired event #{self.class}" }
21
30
 
22
- body = Formatter.format_message(@data, @cipher_key, false)
31
+ body = Formatter.format_message(@metadata, @cipher_key, false)
23
32
  response = send_request(body)
24
33
 
25
34
  envelopes = fire_callbacks(handle(response, uri))
@@ -30,22 +39,22 @@ module Pubnub
30
39
  private
31
40
 
32
41
  def current_operation
33
- Pubnub::Constants::OPERATION_UPDATE_SPACE
42
+ Pubnub::Constants::OPERATION_SET_UUID_METADATA
34
43
  end
35
44
 
36
- def parameters(*_args)
37
- parameters = super
38
- parameters[:include] = @include if @include
45
+ def parameters(signature = false)
46
+ parameters = super(signature)
47
+ parameters[:include] = @include
39
48
  parameters
40
49
  end
41
50
 
42
51
  def path
43
52
  '/' + [
44
- 'v1',
53
+ 'v2',
45
54
  'objects',
46
55
  @subscribe_key,
47
- 'spaces',
48
- @space_id
56
+ 'uuids',
57
+ Formatter.encode(@uuid)
49
58
  ].join('/')
50
59
  end
51
60
 
@@ -57,7 +66,7 @@ module Pubnub
57
66
 
58
67
  result: {
59
68
  code: req_res_objects[:response].code,
60
- operation: Pubnub::Constants::OPERATION_UPDATE_SPACE,
69
+ operation: current_operation,
61
70
  client_request: req_res_objects[:request],
62
71
  server_response: req_res_objects[:response],
63
72
  data: parsed_response
@@ -65,7 +74,7 @@ module Pubnub
65
74
 
66
75
  status: {
67
76
  code: req_res_objects[:response].code,
68
- operation: Pubnub::Constants::OPERATION_UPDATE_SPACE,
77
+ operation: current_operation,
69
78
  client_request: req_res_objects[:request],
70
79
  server_response: req_res_objects[:response],
71
80
  data: nil,