pusher-fake 0.8.0 → 0.9.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1a0baacfdc962376a761f7cae9a985206c7f342b
4
+ data.tar.gz: 3437e5854d08159a3bcb9ca3444330e359dfc973
5
+ SHA512:
6
+ metadata.gz: 87dd985dcb991ca210d6b8a6fa84f45b869fee5c4898cf4810f925fd71c1c45d02148928e1e3c5b1ceebef94deaf0959312b05fc5777366c4da1b0f7c649cda8
7
+ data.tar.gz: 91110daa9de7f58e8888672b6ac86fda72802083fc504d92dbb662900d9a97ac9b73087a8c47a265942da6923ee380b29acbebf185d5f6f31fbd8ee1c2a1c63e
@@ -19,10 +19,3 @@ Then "I should be connected" do
19
19
  state == "connected"
20
20
  end
21
21
  end
22
-
23
- Then "I should not be connected" do
24
- timeout_after(5) do
25
- state = page.evaluate_script("Pusher.instance.connection.state")
26
- state == "unavailable"
27
- end
28
- end
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Pusher JavaScript Library v2.0.4
2
+ * Pusher JavaScript Library v2.0.5
3
3
  * http://pusherapp.com/
4
4
  *
5
5
  * Copyright 2013, Pusher
@@ -28,7 +28,7 @@
28
28
  return new Pusher.Timeline(self.key, self.sessionID, {
29
29
  features: Pusher.Util.getClientFeatures(),
30
30
  params: self.options.timelineParams || {},
31
- limit: 25,
31
+ limit: 50,
32
32
  level: Pusher.Timeline.INFO,
33
33
  version: Pusher.VERSION
34
34
  });
@@ -99,13 +99,16 @@
99
99
  };
100
100
 
101
101
  Pusher.warn = function() {
102
- if (window.console && window.console.warn) {
103
- window.console.warn(Pusher.Util.stringify.apply(this, arguments));
104
- } else {
105
- if (!Pusher.log) {
106
- return;
102
+ var message = Pusher.Util.stringify.apply(this, arguments);
103
+ if (window.console) {
104
+ if (window.console.warn) {
105
+ window.console.warn(message);
106
+ } else if (window.console.log) {
107
+ window.console.log(message);
107
108
  }
108
- Pusher.log(Pusher.Util.stringify.apply(this, arguments));
109
+ }
110
+ if (Pusher.log) {
111
+ Pusher.log(message);
109
112
  }
110
113
  };
111
114
 
@@ -500,7 +503,7 @@
500
503
  }).call(this);
501
504
 
502
505
  ;(function() {
503
- Pusher.VERSION = '2.0.4';
506
+ Pusher.VERSION = '2.0.5';
504
507
  Pusher.PROTOCOL = 6;
505
508
 
506
509
  // WS connection parameters
@@ -1328,7 +1331,11 @@
1328
1331
  function flushTransportInfo() {
1329
1332
  var storage = Pusher.Util.getLocalStorage();
1330
1333
  if (storage && storage.pusherTransport) {
1331
- delete storage.pusherTransport;
1334
+ try {
1335
+ delete storage.pusherTransport;
1336
+ } catch(e) {
1337
+ storage.pusherTransport = undefined;
1338
+ }
1332
1339
  }
1333
1340
  }
1334
1341
 
@@ -1600,13 +1607,14 @@
1600
1607
  var transport = this.transport.createConnection(
1601
1608
  this.name, this.priority, this.options.key, this.options
1602
1609
  );
1610
+ var handshake = null;
1603
1611
 
1604
1612
  var onInitialized = function() {
1605
1613
  transport.unbind("initialized", onInitialized);
1606
1614
  transport.connect();
1607
1615
  };
1608
1616
  var onOpen = function() {
1609
- var handshake = new Pusher.Handshake(transport, function(result) {
1617
+ handshake = new Pusher.Handshake(transport, function(result) {
1610
1618
  connected = true;
1611
1619
  unbindListeners();
1612
1620
  callback(null, result);
@@ -1642,15 +1650,22 @@
1642
1650
  return;
1643
1651
  }
1644
1652
  unbindListeners();
1645
- transport.close();
1653
+ if (handshake) {
1654
+ handshake.close();
1655
+ } else {
1656
+ transport.close();
1657
+ }
1646
1658
  },
1647
1659
  forceMinPriority: function(p) {
1648
1660
  if (connected) {
1649
1661
  return;
1650
1662
  }
1651
1663
  if (self.priority < p) {
1652
- // TODO close transport in a nicer way
1653
- transport.close();
1664
+ if (handshake) {
1665
+ handshake.close();
1666
+ } else {
1667
+ transport.close();
1668
+ }
1654
1669
  }
1655
1670
  }
1656
1671
  };
@@ -2606,6 +2621,7 @@
2606
2621
  if (channel) {
2607
2622
  message.channel = channel;
2608
2623
  }
2624
+ Pusher.debug('Event sent', message);
2609
2625
  return this.send(Pusher.Protocol.encodeMessage(message));
2610
2626
  };
2611
2627
 
@@ -2716,17 +2732,18 @@
2716
2732
  }
2717
2733
  var prototype = Handshake.prototype;
2718
2734
 
2735
+ prototype.close = function() {
2736
+ this.unbindListeners();
2737
+ this.transport.close();
2738
+ };
2739
+
2719
2740
  /** @private */
2720
2741
  prototype.bindListeners = function() {
2721
2742
  var self = this;
2722
2743
 
2723
- var unbindListeners = function() {
2724
- self.transport.unbind("message", onMessage);
2725
- self.transport.unbind("closed", onClosed);
2726
- };
2744
+ self.onMessage = function(m) {
2745
+ self.unbindListeners();
2727
2746
 
2728
- var onMessage = function(m) {
2729
- unbindListeners();
2730
2747
  try {
2731
2748
  var result = Pusher.Protocol.processHandshake(m);
2732
2749
  if (result.action === "connected") {
@@ -2742,16 +2759,23 @@
2742
2759
  self.transport.close();
2743
2760
  }
2744
2761
  };
2745
- var onClosed = function(closeEvent) {
2746
- unbindListeners();
2762
+
2763
+ self.onClosed = function(closeEvent) {
2764
+ self.unbindListeners();
2747
2765
 
2748
2766
  var action = Pusher.Protocol.getCloseAction(closeEvent) || "backoff";
2749
2767
  var error = Pusher.Protocol.getCloseError(closeEvent);
2750
2768
  self.finish(action, { error: error });
2751
2769
  };
2752
2770
 
2753
- self.transport.bind("message", onMessage);
2754
- self.transport.bind("closed", onClosed);
2771
+ self.transport.bind("message", self.onMessage);
2772
+ self.transport.bind("closed", self.onClosed);
2773
+ };
2774
+
2775
+ /** @private */
2776
+ prototype.unbindListeners = function() {
2777
+ this.transport.unbind("message", this.onMessage);
2778
+ this.transport.unbind("closed", this.onClosed);
2755
2779
  };
2756
2780
 
2757
2781
  /** @private */
@@ -2807,11 +2831,13 @@
2807
2831
  var self = this;
2808
2832
 
2809
2833
  Pusher.Network.bind("online", function() {
2834
+ self.timeline.info({ netinfo: "online" });
2810
2835
  if (self.state === "unavailable") {
2811
2836
  self.connect();
2812
2837
  }
2813
2838
  });
2814
2839
  Pusher.Network.bind("offline", function() {
2840
+ self.timeline.info({ netinfo: "offline" });
2815
2841
  if (self.shouldRetry()) {
2816
2842
  self.disconnect();
2817
2843
  self.updateState("unavailable");
@@ -2932,7 +2958,8 @@
2932
2958
  /** @private */
2933
2959
  prototype.retryIn = function(delay) {
2934
2960
  var self = this;
2935
- this.retryTimer = new Pusher.Timer(delay || 0, function() {
2961
+ self.timeline.info({ action: "retry", delay: delay });
2962
+ self.retryTimer = new Pusher.Timer(delay || 0, function() {
2936
2963
  self.disconnect();
2937
2964
  self.connect();
2938
2965
  });
@@ -3036,21 +3063,31 @@
3036
3063
  /** @private */
3037
3064
  prototype.buildErrorCallbacks = function() {
3038
3065
  var self = this;
3066
+
3067
+ function withErrorEmitted(callback) {
3068
+ return function(result) {
3069
+ if (result.error) {
3070
+ self.emit("error", { type: "WebSocketError", error: result.error });
3071
+ }
3072
+ callback(result);
3073
+ };
3074
+ }
3075
+
3039
3076
  return {
3040
- ssl_only: function() {
3077
+ ssl_only: withErrorEmitted(function() {
3041
3078
  self.encrypted = true;
3042
3079
  self.updateStrategy();
3043
3080
  self.retryIn(0);
3044
- },
3045
- refused: function() {
3081
+ }),
3082
+ refused: withErrorEmitted(function() {
3046
3083
  self.disconnect();
3047
- },
3048
- backoff: function() {
3084
+ }),
3085
+ backoff: withErrorEmitted(function() {
3049
3086
  self.retryIn(1000);
3050
- },
3051
- retry: function() {
3087
+ }),
3088
+ retry: withErrorEmitted(function() {
3052
3089
  self.retryIn(0);
3053
- }
3090
+ })
3054
3091
  };
3055
3092
  };
3056
3093
 
@@ -3083,6 +3120,7 @@
3083
3120
  if (previousState !== newState) {
3084
3121
  Pusher.debug('State changed', previousState + ' -> ' + newState);
3085
3122
 
3123
+ this.timeline.info({ state: newState });
3086
3124
  this.emit('state_change', { previous: previousState, current: newState });
3087
3125
  this.emit(newState, data);
3088
3126
  }
@@ -3328,8 +3366,8 @@
3328
3366
 
3329
3367
  Pusher.Channel.Authorizer.prototype = {
3330
3368
  composeQuery: function(socketId) {
3331
- var query = '&socket_id=' + encodeURIComponent(socketId)
3332
- + '&channel_name=' + encodeURIComponent(this.channel.name);
3369
+ var query = '&socket_id=' + encodeURIComponent(socketId) +
3370
+ '&channel_name=' + encodeURIComponent(this.channel.name);
3333
3371
 
3334
3372
  for(var i in this.authOptions.params) {
3335
3373
  query += "&" + encodeURIComponent(i) + "=" + encodeURIComponent(this.authOptions.params[i]);
@@ -3343,6 +3381,7 @@
3343
3381
  }
3344
3382
  };
3345
3383
 
3384
+ var nextAuthCallbackID = 1;
3346
3385
 
3347
3386
  Pusher.auth_callbacks = {};
3348
3387
  Pusher.authorizers = {
@@ -3358,7 +3397,7 @@
3358
3397
  xhr.open("POST", Pusher.channel_auth_endpoint, true);
3359
3398
 
3360
3399
  // add request headers
3361
- xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
3400
+ xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
3362
3401
  for(var headerName in this.authOptions.headers) {
3363
3402
  xhr.setRequestHeader(headerName, this.authOptions.headers[headerName]);
3364
3403
  }
@@ -3394,17 +3433,20 @@
3394
3433
  Pusher.warn("Warn", "To send headers with the auth request, you must use AJAX, rather than JSONP.");
3395
3434
  }
3396
3435
 
3436
+ var callbackName = nextAuthCallbackID.toString();
3437
+ nextAuthCallbackID++;
3438
+
3397
3439
  var script = document.createElement("script");
3398
3440
  // Hacked wrapper.
3399
- Pusher.auth_callbacks[this.channel.name] = function(data) {
3441
+ Pusher.auth_callbacks[callbackName] = function(data) {
3400
3442
  callback(false, data);
3401
3443
  };
3402
3444
 
3403
- var callback_name = "Pusher.auth_callbacks['" + this.channel.name + "']";
3404
- script.src = Pusher.channel_auth_endpoint
3405
- + '?callback='
3406
- + encodeURIComponent(callback_name)
3407
- + this.composeQuery(socketId);
3445
+ var callback_name = "Pusher.auth_callbacks['" + callbackName + "']";
3446
+ script.src = Pusher.channel_auth_endpoint +
3447
+ '?callback=' +
3448
+ encodeURIComponent(callback_name) +
3449
+ this.composeQuery(socketId);
3408
3450
 
3409
3451
  var head = document.getElementsByTagName("head")[0] || document.documentElement;
3410
3452
  head.insertBefore( script, head.firstChild );
@@ -13,7 +13,7 @@
13
13
  <ul></ul>
14
14
  </section>
15
15
 
16
- <script src="/javascripts/vendor/pusher-2.0.4.js"></script>
16
+ <script src="/javascripts/vendor/pusher-2.0.5.js"></script>
17
17
  <script>
18
18
  window.addEventListener("DOMContentLoaded", function() {
19
19
  // Use the PusherFake server.
@@ -0,0 +1,3 @@
1
+ require "coveralls"
2
+
3
+ Coveralls.wear_merged!
data/lib/pusher-fake.rb CHANGED
@@ -16,7 +16,7 @@ require "pusher-fake/webhook"
16
16
 
17
17
  module PusherFake
18
18
  # The current version string.
19
- VERSION = "0.8.0"
19
+ VERSION = "0.9.0"
20
20
 
21
21
  # Call this method to modify the defaults.
22
22
  #
@@ -0,0 +1,3 @@
1
+ require "coveralls"
2
+
3
+ Coveralls.wear_merged!
metadata CHANGED
@@ -1,84 +1,74 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pusher-fake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
5
- prerelease:
4
+ version: 0.9.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Tristan Dunn
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-12 00:00:00.000000000 Z
11
+ date: 2013-06-11 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: em-http-request
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - '='
17
+ - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: 1.0.3
19
+ version: '1.0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - '='
24
+ - - ~>
28
25
  - !ruby/object:Gem::Version
29
- version: 1.0.3
26
+ version: '1.0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: em-websocket
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - '='
31
+ - - ~>
36
32
  - !ruby/object:Gem::Version
37
- version: 0.5.0
33
+ version: '0.5'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - '='
38
+ - - ~>
44
39
  - !ruby/object:Gem::Version
45
- version: 0.5.0
40
+ version: '0.5'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: thin
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - '='
45
+ - - ~>
52
46
  - !ruby/object:Gem::Version
53
- version: 1.5.1
47
+ version: '1.5'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - '='
52
+ - - ~>
60
53
  - !ruby/object:Gem::Version
61
- version: 1.5.1
54
+ version: '1.5'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: multi_json
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - '='
59
+ - - ~>
68
60
  - !ruby/object:Gem::Version
69
- version: 1.7.3
61
+ version: '1.6'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - '='
66
+ - - ~>
76
67
  - !ruby/object:Gem::Version
77
- version: 1.7.3
68
+ version: '1.6'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: bourne
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - '='
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - '='
92
81
  - !ruby/object:Gem::Version
@@ -94,39 +83,48 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: capybara-webkit
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - '='
100
88
  - !ruby/object:Gem::Version
101
- version: 0.14.2
89
+ version: 1.0.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 1.0.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: coveralls
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 0.6.7
102
104
  type: :development
103
105
  prerelease: false
104
106
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
107
  requirements:
107
108
  - - '='
108
109
  - !ruby/object:Gem::Version
109
- version: 0.14.2
110
+ version: 0.6.7
110
111
  - !ruby/object:Gem::Dependency
111
112
  name: cucumber
112
113
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
114
  requirements:
115
115
  - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: 1.3.1
117
+ version: 1.3.2
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
121
  requirements:
123
122
  - - '='
124
123
  - !ruby/object:Gem::Version
125
- version: 1.3.1
124
+ version: 1.3.2
126
125
  - !ruby/object:Gem::Dependency
127
126
  name: pusher
128
127
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
128
  requirements:
131
129
  - - '='
132
130
  - !ruby/object:Gem::Version
@@ -134,7 +132,6 @@ dependencies:
134
132
  type: :development
135
133
  prerelease: false
136
134
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
135
  requirements:
139
136
  - - '='
140
137
  - !ruby/object:Gem::Version
@@ -142,7 +139,6 @@ dependencies:
142
139
  - !ruby/object:Gem::Dependency
143
140
  name: rake
144
141
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
142
  requirements:
147
143
  - - '='
148
144
  - !ruby/object:Gem::Version
@@ -150,7 +146,6 @@ dependencies:
150
146
  type: :development
151
147
  prerelease: false
152
148
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
149
  requirements:
155
150
  - - '='
156
151
  - !ruby/object:Gem::Version
@@ -158,23 +153,20 @@ dependencies:
158
153
  - !ruby/object:Gem::Dependency
159
154
  name: redcarpet
160
155
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
156
  requirements:
163
157
  - - '='
164
158
  - !ruby/object:Gem::Version
165
- version: 2.2.2
159
+ version: 2.3.0
166
160
  type: :development
167
161
  prerelease: false
168
162
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
163
  requirements:
171
164
  - - '='
172
165
  - !ruby/object:Gem::Version
173
- version: 2.2.2
166
+ version: 2.3.0
174
167
  - !ruby/object:Gem::Dependency
175
168
  name: rspec
176
169
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
170
  requirements:
179
171
  - - '='
180
172
  - !ruby/object:Gem::Version
@@ -182,7 +174,6 @@ dependencies:
182
174
  type: :development
183
175
  prerelease: false
184
176
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
177
  requirements:
187
178
  - - '='
188
179
  - !ruby/object:Gem::Version
@@ -190,23 +181,20 @@ dependencies:
190
181
  - !ruby/object:Gem::Dependency
191
182
  name: sinatra
192
183
  requirement: !ruby/object:Gem::Requirement
193
- none: false
194
184
  requirements:
195
185
  - - '='
196
186
  - !ruby/object:Gem::Version
197
- version: 1.4.2
187
+ version: 1.4.3
198
188
  type: :development
199
189
  prerelease: false
200
190
  version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
191
  requirements:
203
192
  - - '='
204
193
  - !ruby/object:Gem::Version
205
- version: 1.4.2
194
+ version: 1.4.3
206
195
  - !ruby/object:Gem::Dependency
207
196
  name: yard
208
197
  requirement: !ruby/object:Gem::Requirement
209
- none: false
210
198
  requirements:
211
199
  - - '='
212
200
  - !ruby/object:Gem::Version
@@ -214,7 +202,6 @@ dependencies:
214
202
  type: :development
215
203
  prerelease: false
216
204
  version_requirements: !ruby/object:Gem::Requirement
217
- none: false
218
205
  requirements:
219
206
  - - '='
220
207
  - !ruby/object:Gem::Version
@@ -249,9 +236,10 @@ files:
249
236
  - features/step_definitions/navigation_steps.rb
250
237
  - features/step_definitions/presence_steps.rb
251
238
  - features/step_definitions/webhook_steps.rb
252
- - features/support/application/public/javascripts/vendor/pusher-2.0.4.js
239
+ - features/support/application/public/javascripts/vendor/pusher-2.0.5.js
253
240
  - features/support/application/views/index.erb
254
241
  - features/support/application.rb
242
+ - features/support/coveralls.rb
255
243
  - features/support/environment.rb
256
244
  - features/support/pusher-fake.rb
257
245
  - features/support/timing.rb
@@ -268,37 +256,31 @@ files:
268
256
  - spec/lib/pusher-fake/webhook_spec.rb
269
257
  - spec/lib/pusher_fake_spec.rb
270
258
  - spec/spec_helper.rb
259
+ - spec/support/coveralls.rb
271
260
  - spec/support/have_configuration_option_matcher.rb
272
261
  homepage: https://github.com/tristandunn/pusher-fake
273
262
  licenses:
274
263
  - MIT
264
+ metadata: {}
275
265
  post_install_message:
276
266
  rdoc_options: []
277
267
  require_paths:
278
268
  - lib
279
269
  required_ruby_version: !ruby/object:Gem::Requirement
280
- none: false
281
270
  requirements:
282
- - - ! '>='
271
+ - - '>='
283
272
  - !ruby/object:Gem::Version
284
273
  version: '0'
285
- segments:
286
- - 0
287
- hash: -4438089056312273430
288
274
  required_rubygems_version: !ruby/object:Gem::Requirement
289
- none: false
290
275
  requirements:
291
- - - ! '>='
276
+ - - '>='
292
277
  - !ruby/object:Gem::Version
293
278
  version: '0'
294
- segments:
295
- - 0
296
- hash: -4438089056312273430
297
279
  requirements: []
298
280
  rubyforge_project:
299
- rubygems_version: 1.8.23
281
+ rubygems_version: 2.0.2
300
282
  signing_key:
301
- specification_version: 3
283
+ specification_version: 4
302
284
  summary: A fake Pusher server for development and testing.
303
285
  test_files:
304
286
  - features/channel.feature
@@ -314,9 +296,10 @@ test_files:
314
296
  - features/step_definitions/navigation_steps.rb
315
297
  - features/step_definitions/presence_steps.rb
316
298
  - features/step_definitions/webhook_steps.rb
317
- - features/support/application/public/javascripts/vendor/pusher-2.0.4.js
299
+ - features/support/application/public/javascripts/vendor/pusher-2.0.5.js
318
300
  - features/support/application/views/index.erb
319
301
  - features/support/application.rb
302
+ - features/support/coveralls.rb
320
303
  - features/support/environment.rb
321
304
  - features/support/pusher-fake.rb
322
305
  - features/support/timing.rb
@@ -333,5 +316,6 @@ test_files:
333
316
  - spec/lib/pusher-fake/webhook_spec.rb
334
317
  - spec/lib/pusher_fake_spec.rb
335
318
  - spec/spec_helper.rb
319
+ - spec/support/coveralls.rb
336
320
  - spec/support/have_configuration_option_matcher.rb
337
321
  has_rdoc: