smartkiosk-client 0.0.9 → 0.0.10

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.
data/Gemfile CHANGED
@@ -2,4 +2,4 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'pry'
5
+ gem 'pry'
Binary file
Binary file
@@ -0,0 +1,18 @@
1
+ //= require mq
2
+ //= require swfobject
3
+
4
+ swfobject.embedSWF(
5
+ "/assets/amqp.swf",
6
+ "AMQPProxy",
7
+ "1",
8
+ "1",
9
+ "9",
10
+ "/assets/expressInstall.swf",
11
+ {},
12
+ {
13
+ allowScriptAccess: "always",
14
+ wmode : "opaque",
15
+ bgcolor : "#ff0000"
16
+ },
17
+ {}
18
+ );
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'eventmachine'
5
+ require 'thin'
6
+ require 'trollop'
7
+
8
+ require './config/boot'
9
+
10
+ opts = Trollop.options do
11
+ version "Smartkiosk::Client #{Smartkiosk::Client::VERSION}"
12
+ banner "Smartkiosk client application"
13
+ opt :log, "Log file to use", type: String
14
+ end
15
+
16
+ Smartkiosk::Client::Logging.destination = opts[:log] if opts[:log]
17
+ Smartkiosk::Client::Logging.init
18
+
19
+ EventMachine.run do
20
+ Thin::Server.start '0.0.0.0', 3001 do
21
+ map '/assets' do
22
+ run Application.sprockets
23
+ end
24
+ use Smartkiosk::Client::Logging::Middleware
25
+ run Application
26
+ end
27
+ end
data/config/boot.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'bundler/setup'
1
2
  require 'pry'
2
3
  require 'active_support/all'
3
4
  require 'sass'
@@ -19,12 +20,11 @@ module Smartkiosk
19
20
  end
20
21
 
21
22
  configure do
22
- set :assets_types, %w(javascripts stylesheets images)
23
+ set :assets_types, %w(javascripts stylesheets images flash)
23
24
  set :root, Pathname.new(File.expand_path '../..', __FILE__)
24
25
  set :sprockets, Sprockets::Environment.new(root)
25
26
  set :database_file, root.join('config/services/database.yml')
26
27
  set :views, [File.expand_path('../../app/views', __FILE__)]
27
- set :logging, true
28
28
 
29
29
  assets_types.map do |x|
30
30
  sprockets.append_path root.join("app/assets/#{x}")
@@ -85,6 +85,8 @@ module Smartkiosk
85
85
  %w(uploaders models workers controllers).each do |dir|
86
86
  Dir[File.expand_path "../../app/#{dir}/**/*.rb", __FILE__].each {|file| require file }
87
87
  end
88
+
89
+ load 'lib/smartkiosk/client/logging'
88
90
  end
89
91
 
90
92
  def self.expand!(path)
@@ -0,0 +1,36 @@
1
+ module Smartkiosk
2
+ class Client
3
+ module Logging extend Smartkiosk::Common::Logging
4
+ self.service = 'Web'
5
+
6
+ class Middleware
7
+ def initialize(app)
8
+ @app = app
9
+ end
10
+
11
+ def call(env)
12
+ began_at = Time.now
13
+ status, header, body = @app.call(env)
14
+ header = Rack::Utils::HeaderHash.new(header)
15
+ log(env, status, header, began_at)
16
+ [status, header, body]
17
+ end
18
+
19
+ def log(env, status, header, began_at)
20
+ now = Time.now
21
+ length = extract_content_length(header)
22
+
23
+ Smartkiosk::Client::Logging.logger.info "#{status.to_s[0..3]} #{env["REQUEST_METHOD"]} " <<
24
+ "#{env["PATH_INFO"]}#{env["QUERY_STRING"].empty? ? "" : "?"+env["QUERY_STRING"]}, " <<
25
+ "#{length} (#{now - began_at})"
26
+
27
+ end
28
+
29
+ def extract_content_length(headers)
30
+ value = headers['Content-Length'] or return '-'
31
+ value.to_s == '0' ? '-' : value
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -2,6 +2,6 @@ require 'sinatra/base'
2
2
 
3
3
  module Smartkiosk
4
4
  class Client < Sinatra::Base
5
- VERSION = '0.0.9'
5
+ VERSION = '0.0.10'
6
6
  end
7
7
  end
@@ -11,10 +11,5 @@ task :sidekiq do
11
11
  end
12
12
 
13
13
  task :web do
14
- require 'eventmachine'
15
- require 'thin'
16
-
17
- EventMachine.run do
18
- Smartkiosk::Client.run! :server => 'thin', :port => 3001
19
- end
14
+ exec('bundle exec smartkiosk-client')
20
15
  end
@@ -26,6 +26,7 @@ Gem::Specification.new do |gem|
26
26
  gem.add_dependency 'sprockets', '2.8.2'
27
27
  gem.add_dependency 'sprockets-sass', '0.9.1'
28
28
  gem.add_dependency 'sprockets-helpers', '0.8.0'
29
+ gem.add_dependency 'trollop', '2.0'
29
30
 
30
31
  gem.add_dependency 'activesupport', '3.2.11'
31
32
  gem.add_dependency 'smartkiosk-common', '0.0.2'
@@ -46,7 +47,7 @@ Gem::Specification.new do |gem|
46
47
  gem.add_dependency 'pry', '0.9.10'
47
48
 
48
49
  gem.add_dependency 'smartware', '0.3.1'
49
- gem.add_dependency 'smartguard', '0.3.11'
50
+ gem.add_dependency 'smartguard', '0.3.12'
50
51
  gem.add_dependency 'amqp', '0.9.8'
51
52
 
52
53
  gem.add_dependency 'sidekiq', '2.6.5'
@@ -0,0 +1,393 @@
1
+ /**
2
+ ---------------------------------------------------------------------------
3
+
4
+ Copyright (c) 2009 Dan Simpson
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in
14
+ all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ THE SOFTWARE.
23
+
24
+ ---------------------------------------------------------------------------
25
+ **/
26
+
27
+ //simple inheritance helper
28
+ function extend(superclass, constructor_extend, prototype) {
29
+ var res = function() {
30
+ superclass.apply(this);
31
+ constructor_extend.apply(this, arguments);
32
+ };
33
+ var withoutcon = function() {};
34
+ withoutcon.prototype = superclass.prototype;
35
+ res.prototype = new withoutcon();
36
+ for (var k in prototype) {
37
+ res.prototype[k] = prototype[k];
38
+ }
39
+ return res;
40
+ }
41
+
42
+ //used to add methods and properties to objects
43
+ function $extend(target, source) {
44
+ for (var key in (source || {})) {
45
+ target[key] = source[key];
46
+ }
47
+ return target;
48
+ }
49
+
50
+ /*
51
+ * Base class for event dispatch
52
+ */
53
+ var Dispatcher = function() {
54
+ this.listeners = {};
55
+ };
56
+
57
+ Dispatcher.prototype = {
58
+
59
+ addListener: function(name, fn, scope) {
60
+ if (!this.listeners[name]) {
61
+ this.listeners[name] = [];
62
+ }
63
+ this.listeners[name].push({
64
+ fn: fn,
65
+ scope: scope || window
66
+ });
67
+ },
68
+
69
+ on: function(name, fn, scope) {
70
+ this.addListener(name, fn, scope);
71
+ },
72
+
73
+ fireEvent: function() {
74
+ var args = [].slice.call(arguments);
75
+ var name = args.shift();
76
+ var calls = this.listeners[name];
77
+ if (calls) {
78
+ for (var i = 0; i < calls.length; i++) {
79
+ var c = calls[i];
80
+ c.fn.apply(c.scope, args);
81
+ }
82
+ }
83
+ }
84
+
85
+ };
86
+
87
+ /*
88
+ * Represents the binding of an exchange to a queue, callbacks can be
89
+ * added to bindings, so messages received by the queue can handle them
90
+ * with a different function
91
+ */
92
+ var Binding = extend(Dispatcher, function(queue, exchange, key) {
93
+ MQ.dispatch("bind", queue, exchange, key);
94
+ this.pattern = new RegExp("^" + key.replace('.', '\.').replace('*', '[^\.|$]+').replace('#', '([^\.|$]+\.)+') + "$");
95
+ },
96
+ {
97
+
98
+ pattern: null,
99
+
100
+ destroy: function() {
101
+ //not supported with AMQP 08, But 09
102
+ },
103
+
104
+ callback: function(cb, scope) {
105
+ this.on("rcv", cb, scope);
106
+ }
107
+ });
108
+
109
+ /*
110
+ * Represents the end point for messages received. It's the place
111
+ * where your messages are sent. You can bind the queue to exchanges
112
+ * and recieve messages sent on those exchanges.
113
+ */
114
+ var Queue = extend(Dispatcher, function(opts) {
115
+ $extend(this, opts);
116
+ this.bindings = {};
117
+ MQ.dispatch("subscribe", opts);
118
+ },
119
+ {
120
+
121
+ bind: function(exchange, key) {
122
+ key = (key || "").toString();
123
+
124
+ if (!MQ.exchanges[exchange]) {
125
+ var type = "";
126
+ if (!key.length) {
127
+ type = 'fanout';
128
+ } else if (key.match(/[\*|#]/)) {
129
+ type = 'topic';
130
+ } else {
131
+ type = 'direct';
132
+ };
133
+ MQ.exchange(exchange, {
134
+ type: type
135
+ });
136
+ };
137
+
138
+ // No need to bind queue to an existing fanout exchange if the queue is already bound to this exchange.
139
+ if (MQ.exchanges[exchange].type == 'fanout' && this.bindings[exchange]) {
140
+ for (var k in this.bindings[exchange]) {
141
+ // Return first element
142
+ return this.bindings[exchange][k];
143
+ }
144
+ }
145
+
146
+ if (!this.bindings[exchange]) {
147
+ this.bindings[exchange] = {};
148
+ }
149
+
150
+ if (!this.bindings[exchange][key]) {
151
+ this.bindings[exchange][key] = new Binding(this.queue, exchange, key);
152
+ }
153
+
154
+ return this.bindings[exchange][key];
155
+ },
156
+
157
+ receive: function(msg) {
158
+
159
+ if (this.queue == "auto") {
160
+ this.queue = MQ.dispatch("getAutoQueueName");
161
+ }
162
+
163
+ if (MQ.onReceiveHandler == "queue") {
164
+ this.fireEvent("rcv", msg);
165
+ } else {
166
+ var match = false;
167
+ var ex = this.bindings[msg.exchange];
168
+
169
+ if (ex) {
170
+ var type = MQ.exchanges[msg.exchange].type;
171
+ if (type == 'fanout') {
172
+ for (var k in ex) {
173
+ match = true;
174
+ ex[k].fireEvent("rcv", msg);
175
+ break;
176
+ }
177
+ } else if (type == 'direct') {
178
+ for (var k in ex) {
179
+ if (k == msg.routingKey) {
180
+ match = true;
181
+ ex[k].fireEvent("rcv", msg);
182
+ }
183
+ }
184
+ } else {
185
+ for (var k in ex) {
186
+ if (ex[k].pattern.test(msg.routingKey)) {
187
+ match = true;
188
+ ex[k].fireEvent("rcv", msg);
189
+ }
190
+ }
191
+ }
192
+ }
193
+
194
+ //default to the queue callback
195
+ if (!match) {
196
+ this.fireEvent("rcv", msg);
197
+ }
198
+ }
199
+ },
200
+
201
+ callback: function(cb, scope) {
202
+ this.on("rcv", cb, scope);
203
+ }
204
+ });
205
+
206
+ /*
207
+ * Represents an exchange, which is used to partition message
208
+ * spaces and publish messages to peers
209
+ */
210
+ var Exchange = function(opts) {
211
+ $extend(this, opts);
212
+ MQ.dispatch("exchange", opts);
213
+ };
214
+ Exchange.prototype = {
215
+ publish: function(message, key) {
216
+ MQ.dispatch("publish", this.exchange, key || "", message);
217
+ }
218
+ };
219
+
220
+ /*
221
+ * Adaptor interface for the flash based AMQP API
222
+ */
223
+ var FlashAdaptor = extend(Dispatcher, function() {},
224
+ {
225
+
226
+ buffer: [],
227
+
228
+ exchanges: {},
229
+ queues: {},
230
+
231
+ api: null,
232
+
233
+ logger: null,
234
+ logLevel: 2,
235
+ policyUrl: null,
236
+
237
+ host: "amqp.peermessaging.com",
238
+ port: 5672,
239
+ user: "guest",
240
+ password: "guest",
241
+ vhost: "/",
242
+
243
+ element: "AMQPProxy",
244
+ autoConnect: true,
245
+
246
+ onReceiveHandler: "binding",
247
+
248
+ configure: function(settings) {
249
+ $extend(this, settings);
250
+ },
251
+
252
+ connect: function() {
253
+ this.dispatch("connect", {
254
+ host: this.host,
255
+ port: this.port,
256
+ user: this.user,
257
+ password: this.password,
258
+ vhost: this.vhost
259
+ });
260
+ },
261
+
262
+ disconnect: function() {
263
+ this.dispatch("disconnect");
264
+ },
265
+
266
+ //private
267
+ onLoad: function() {
268
+ this.api = document.getElementById(this.element);
269
+ this.fireEvent("load");
270
+ this.update();
271
+ if (this.autoConnect) {
272
+ this.connect();
273
+ }
274
+ },
275
+
276
+ //private
277
+ onConnect: function() {
278
+ this.update();
279
+ this.flush();
280
+ this.fireEvent("connect");
281
+ },
282
+
283
+ //private
284
+ onDisconnect: function() {
285
+ this.fireEvent("disconnect");
286
+ },
287
+
288
+ //private
289
+ onLogEntry: function(msg) {
290
+ if (this.logger && this.logger.log) {
291
+ this.logger.log(msg);
292
+ }
293
+ },
294
+
295
+ //private
296
+ onReceive: function(msg) {
297
+ if (this.queues[msg.queue]) {
298
+ this.queues[msg.queue].receive(msg);
299
+ } else {
300
+ this.onLogEntry("Queue not found!");
301
+ }
302
+ },
303
+
304
+ queue: function(name, opts) {
305
+ if (!this.queues[name]) {
306
+ this.createQueue(name, opts);
307
+ }
308
+ return this.queues[name];
309
+ },
310
+
311
+ //private
312
+ createQueue: function(name, opts) {
313
+ this.queues[name] = new Queue($extend({
314
+ queue: name
315
+ },
316
+ opts));
317
+ },
318
+
319
+ deleteQueue: function(name, opts) {
320
+ if (!this.queues[name]) {
321
+ return false;
322
+ };
323
+ delete this.queues[name];
324
+ if (!opts) {
325
+ opts = {};
326
+ };
327
+ return this.dispatch("queueDelete", name, opts);
328
+ },
329
+
330
+ topic: function(name) {
331
+ return this.exchange(name, {
332
+ type: "topic"
333
+ });
334
+ },
335
+
336
+ fanout: function(name) {
337
+ return this.exchange(name, {
338
+ type: "fanout"
339
+ });
340
+ },
341
+
342
+ direct: function(name) {
343
+ return this.exchange(name, {
344
+ type: "direct"
345
+ });
346
+ },
347
+
348
+ exchange: function(name, opts) {
349
+ if (!this.exchanges[name]) {
350
+ this.createExchange(name, opts);
351
+ }
352
+ return this.exchanges[name];
353
+ },
354
+
355
+ //private
356
+ createExchange: function(name, opts) {
357
+ this.exchanges[name] = new Exchange($extend({
358
+ exchange: name,
359
+ type: opts.type || "fanout"
360
+ },
361
+ opts));
362
+ },
363
+
364
+ //private
365
+ update: function() {
366
+ if (this.logger) {
367
+ this.dispatch("setLogLevel", this.logLevel);
368
+ }
369
+ if (this.policyUrl) {
370
+ this.dispatch("loadPolicy", this.policyUrl);
371
+ }
372
+ },
373
+
374
+ //private
375
+ dispatch: function() {
376
+ if (this.api) {
377
+ var args = [].slice.call(arguments);
378
+ return this.api[args.shift()].apply(this.api, args);
379
+ } else {
380
+ return this.buffer.push(arguments);
381
+ }
382
+ },
383
+
384
+ //private
385
+ flush: function() {
386
+ while (this.buffer.length > 0) {
387
+ this.dispatch.apply(this, this.buffer.shift());
388
+ }
389
+ }
390
+
391
+ });
392
+
393
+ var MQ = new FlashAdaptor();
@@ -0,0 +1,4 @@
1
+ /* SWFObject v2.2 <http://code.google.com/p/swfobject/>
2
+ is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
3
+ */
4
+ var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smartkiosk-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2013-01-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70322499196260 !ruby/object:Gem::Requirement
16
+ requirement: &70303472778240 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 10.0.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70322499196260
24
+ version_requirements: *70303472778240
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: thin
27
- requirement: &70322499195760 !ruby/object:Gem::Requirement
27
+ requirement: &70303472775620 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - =
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.5.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70322499195760
35
+ version_requirements: *70303472775620
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sinatra
38
- requirement: &70322499195300 !ruby/object:Gem::Requirement
38
+ requirement: &70303472772060 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - =
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.3.4
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70322499195300
46
+ version_requirements: *70303472772060
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: sinatra-activerecord
49
- requirement: &70322499194840 !ruby/object:Gem::Requirement
49
+ requirement: &70303472786620 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - =
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.2.1
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70322499194840
57
+ version_requirements: *70303472786620
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: sinatra-contrib
60
- requirement: &70322499194380 !ruby/object:Gem::Requirement
60
+ requirement: &70303472784740 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - =
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.3.2
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70322499194380
68
+ version_requirements: *70303472784740
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: haml
71
- requirement: &70322499193920 !ruby/object:Gem::Requirement
71
+ requirement: &70303472783800 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - =
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 3.1.7
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70322499193920
79
+ version_requirements: *70303472783800
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: sass
82
- requirement: &70322499193460 !ruby/object:Gem::Requirement
82
+ requirement: &70303472782420 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - =
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 3.2.5
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *70322499193460
90
+ version_requirements: *70303472782420
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: sprockets
93
- requirement: &70322499193000 !ruby/object:Gem::Requirement
93
+ requirement: &70303472813160 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - =
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 2.8.2
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *70322499193000
101
+ version_requirements: *70303472813160
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: sprockets-sass
104
- requirement: &70322499192540 !ruby/object:Gem::Requirement
104
+ requirement: &70303472845640 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - =
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 0.9.1
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *70322499192540
112
+ version_requirements: *70303472845640
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: sprockets-helpers
115
- requirement: &70322499192080 !ruby/object:Gem::Requirement
115
+ requirement: &70303472860060 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - =
@@ -120,10 +120,21 @@ dependencies:
120
120
  version: 0.8.0
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *70322499192080
123
+ version_requirements: *70303472860060
124
+ - !ruby/object:Gem::Dependency
125
+ name: trollop
126
+ requirement: &70303472872100 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - =
130
+ - !ruby/object:Gem::Version
131
+ version: '2.0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: *70303472872100
124
135
  - !ruby/object:Gem::Dependency
125
136
  name: activesupport
126
- requirement: &70322499191620 !ruby/object:Gem::Requirement
137
+ requirement: &70303472946800 !ruby/object:Gem::Requirement
127
138
  none: false
128
139
  requirements:
129
140
  - - =
@@ -131,10 +142,10 @@ dependencies:
131
142
  version: 3.2.11
132
143
  type: :runtime
133
144
  prerelease: false
134
- version_requirements: *70322499191620
145
+ version_requirements: *70303472946800
135
146
  - !ruby/object:Gem::Dependency
136
147
  name: smartkiosk-common
137
- requirement: &70322499207540 !ruby/object:Gem::Requirement
148
+ requirement: &70303472997920 !ruby/object:Gem::Requirement
138
149
  none: false
139
150
  requirements:
140
151
  - - =
@@ -142,10 +153,10 @@ dependencies:
142
153
  version: 0.0.2
143
154
  type: :runtime
144
155
  prerelease: false
145
- version_requirements: *70322499207540
156
+ version_requirements: *70303472997920
146
157
  - !ruby/object:Gem::Dependency
147
158
  name: sqlite3
148
- requirement: &70322499207080 !ruby/object:Gem::Requirement
159
+ requirement: &70303473046840 !ruby/object:Gem::Requirement
149
160
  none: false
150
161
  requirements:
151
162
  - - =
@@ -153,10 +164,10 @@ dependencies:
153
164
  version: 1.3.6
154
165
  type: :runtime
155
166
  prerelease: false
156
- version_requirements: *70322499207080
167
+ version_requirements: *70303473046840
157
168
  - !ruby/object:Gem::Dependency
158
169
  name: pg
159
- requirement: &70322499206620 !ruby/object:Gem::Requirement
170
+ requirement: &70303473090460 !ruby/object:Gem::Requirement
160
171
  none: false
161
172
  requirements:
162
173
  - - =
@@ -164,10 +175,10 @@ dependencies:
164
175
  version: 0.14.1
165
176
  type: :runtime
166
177
  prerelease: false
167
- version_requirements: *70322499206620
178
+ version_requirements: *70303473090460
168
179
  - !ruby/object:Gem::Dependency
169
180
  name: redis
170
- requirement: &70322499206160 !ruby/object:Gem::Requirement
181
+ requirement: &70303473102380 !ruby/object:Gem::Requirement
171
182
  none: false
172
183
  requirements:
173
184
  - - =
@@ -175,10 +186,10 @@ dependencies:
175
186
  version: 3.0.2
176
187
  type: :runtime
177
188
  prerelease: false
178
- version_requirements: *70322499206160
189
+ version_requirements: *70303473102380
179
190
  - !ruby/object:Gem::Dependency
180
191
  name: redis-objects
181
- requirement: &70322499205700 !ruby/object:Gem::Requirement
192
+ requirement: &70303473037860 !ruby/object:Gem::Requirement
182
193
  none: false
183
194
  requirements:
184
195
  - - =
@@ -186,10 +197,10 @@ dependencies:
186
197
  version: 0.6.1
187
198
  type: :runtime
188
199
  prerelease: false
189
- version_requirements: *70322499205700
200
+ version_requirements: *70303473037860
190
201
  - !ruby/object:Gem::Dependency
191
202
  name: carrierwave
192
- requirement: &70322499205240 !ruby/object:Gem::Requirement
203
+ requirement: &70303473012420 !ruby/object:Gem::Requirement
193
204
  none: false
194
205
  requirements:
195
206
  - - =
@@ -197,10 +208,10 @@ dependencies:
197
208
  version: 0.7.1
198
209
  type: :runtime
199
210
  prerelease: false
200
- version_requirements: *70322499205240
211
+ version_requirements: *70303473012420
201
212
  - !ruby/object:Gem::Dependency
202
213
  name: rest-client
203
- requirement: &70322499204780 !ruby/object:Gem::Requirement
214
+ requirement: &70303472703420 !ruby/object:Gem::Requirement
204
215
  none: false
205
216
  requirements:
206
217
  - - =
@@ -208,10 +219,10 @@ dependencies:
208
219
  version: 1.6.7
209
220
  type: :runtime
210
221
  prerelease: false
211
- version_requirements: *70322499204780
222
+ version_requirements: *70303472703420
212
223
  - !ruby/object:Gem::Dependency
213
224
  name: recursive-open-struct
214
- requirement: &70322499204320 !ruby/object:Gem::Requirement
225
+ requirement: &70303473183880 !ruby/object:Gem::Requirement
215
226
  none: false
216
227
  requirements:
217
228
  - - =
@@ -219,10 +230,10 @@ dependencies:
219
230
  version: 0.2.1
220
231
  type: :runtime
221
232
  prerelease: false
222
- version_requirements: *70322499204320
233
+ version_requirements: *70303473183880
223
234
  - !ruby/object:Gem::Dependency
224
235
  name: liquid
225
- requirement: &70322499203860 !ruby/object:Gem::Requirement
236
+ requirement: &70303473204820 !ruby/object:Gem::Requirement
226
237
  none: false
227
238
  requirements:
228
239
  - - =
@@ -230,10 +241,10 @@ dependencies:
230
241
  version: 2.4.1
231
242
  type: :runtime
232
243
  prerelease: false
233
- version_requirements: *70322499203860
244
+ version_requirements: *70303473204820
234
245
  - !ruby/object:Gem::Dependency
235
246
  name: file-tail
236
- requirement: &70322499203400 !ruby/object:Gem::Requirement
247
+ requirement: &70303473227740 !ruby/object:Gem::Requirement
237
248
  none: false
238
249
  requirements:
239
250
  - - =
@@ -241,10 +252,10 @@ dependencies:
241
252
  version: 1.0.12
242
253
  type: :runtime
243
254
  prerelease: false
244
- version_requirements: *70322499203400
255
+ version_requirements: *70303473227740
245
256
  - !ruby/object:Gem::Dependency
246
257
  name: rubyzip
247
- requirement: &70322499202940 !ruby/object:Gem::Requirement
258
+ requirement: &70303473240580 !ruby/object:Gem::Requirement
248
259
  none: false
249
260
  requirements:
250
261
  - - =
@@ -252,10 +263,10 @@ dependencies:
252
263
  version: 0.9.9
253
264
  type: :runtime
254
265
  prerelease: false
255
- version_requirements: *70322499202940
266
+ version_requirements: *70303473240580
256
267
  - !ruby/object:Gem::Dependency
257
268
  name: pry
258
- requirement: &70322499202480 !ruby/object:Gem::Requirement
269
+ requirement: &70303485016380 !ruby/object:Gem::Requirement
259
270
  none: false
260
271
  requirements:
261
272
  - - =
@@ -263,10 +274,10 @@ dependencies:
263
274
  version: 0.9.10
264
275
  type: :runtime
265
276
  prerelease: false
266
- version_requirements: *70322499202480
277
+ version_requirements: *70303485016380
267
278
  - !ruby/object:Gem::Dependency
268
279
  name: smartware
269
- requirement: &70322499202020 !ruby/object:Gem::Requirement
280
+ requirement: &70303485033880 !ruby/object:Gem::Requirement
270
281
  none: false
271
282
  requirements:
272
283
  - - =
@@ -274,21 +285,21 @@ dependencies:
274
285
  version: 0.3.1
275
286
  type: :runtime
276
287
  prerelease: false
277
- version_requirements: *70322499202020
288
+ version_requirements: *70303485033880
278
289
  - !ruby/object:Gem::Dependency
279
290
  name: smartguard
280
- requirement: &70322499201560 !ruby/object:Gem::Requirement
291
+ requirement: &70303485053700 !ruby/object:Gem::Requirement
281
292
  none: false
282
293
  requirements:
283
294
  - - =
284
295
  - !ruby/object:Gem::Version
285
- version: 0.3.11
296
+ version: 0.3.12
286
297
  type: :runtime
287
298
  prerelease: false
288
- version_requirements: *70322499201560
299
+ version_requirements: *70303485053700
289
300
  - !ruby/object:Gem::Dependency
290
301
  name: amqp
291
- requirement: &70322499201100 !ruby/object:Gem::Requirement
302
+ requirement: &70303485051740 !ruby/object:Gem::Requirement
292
303
  none: false
293
304
  requirements:
294
305
  - - =
@@ -296,10 +307,10 @@ dependencies:
296
307
  version: 0.9.8
297
308
  type: :runtime
298
309
  prerelease: false
299
- version_requirements: *70322499201100
310
+ version_requirements: *70303485051740
300
311
  - !ruby/object:Gem::Dependency
301
312
  name: sidekiq
302
- requirement: &70322499200640 !ruby/object:Gem::Requirement
313
+ requirement: &70303485070080 !ruby/object:Gem::Requirement
303
314
  none: false
304
315
  requirements:
305
316
  - - =
@@ -307,10 +318,10 @@ dependencies:
307
318
  version: 2.6.5
308
319
  type: :runtime
309
320
  prerelease: false
310
- version_requirements: *70322499200640
321
+ version_requirements: *70303485070080
311
322
  - !ruby/object:Gem::Dependency
312
323
  name: slim
313
- requirement: &70322499200180 !ruby/object:Gem::Requirement
324
+ requirement: &70303485083820 !ruby/object:Gem::Requirement
314
325
  none: false
315
326
  requirements:
316
327
  - - =
@@ -318,10 +329,10 @@ dependencies:
318
329
  version: 1.3.4
319
330
  type: :runtime
320
331
  prerelease: false
321
- version_requirements: *70322499200180
332
+ version_requirements: *70303485083820
322
333
  - !ruby/object:Gem::Dependency
323
334
  name: rufus-scheduler
324
- requirement: &70322499199720 !ruby/object:Gem::Requirement
335
+ requirement: &70303485098540 !ruby/object:Gem::Requirement
325
336
  none: false
326
337
  requirements:
327
338
  - - =
@@ -329,17 +340,21 @@ dependencies:
329
340
  version: 2.0.17
330
341
  type: :runtime
331
342
  prerelease: false
332
- version_requirements: *70322499199720
343
+ version_requirements: *70303485098540
333
344
  description: Smartkiosk client application
334
345
  email:
335
346
  - boris@roundlake.ru
336
- executables: []
347
+ executables:
348
+ - smartkiosk-client
337
349
  extensions: []
338
350
  extra_rdoc_files: []
339
351
  files:
340
352
  - .gitignore
341
353
  - Gemfile
342
354
  - Rakefile
355
+ - app/assets/flash/amqp.swf
356
+ - app/assets/flash/expressInstall.swf
357
+ - app/assets/javascripts/amqp.js
343
358
  - app/controllers/banners.rb
344
359
  - app/controllers/collections.rb
345
360
  - app/controllers/config.rb
@@ -375,6 +390,7 @@ files:
375
390
  - app/workers/startup_worker.rb
376
391
  - app/workers/sync/icons_worker.rb
377
392
  - app/workers/sync/receipt_templates_worker.rb
393
+ - bin/smartkiosk-client
378
394
  - config/boot.rb
379
395
  - config/services/application.yml
380
396
  - config/services/database.yml
@@ -397,6 +413,7 @@ files:
397
413
  - init.rb
398
414
  - lib/pinger.rb
399
415
  - lib/smartkiosk/client.rb
416
+ - lib/smartkiosk/client/logging.rb
400
417
  - lib/smartkiosk/client/version.rb
401
418
  - lib/smartkiosk/config/chunk.rb
402
419
  - lib/smartkiosk/config/yaml.rb
@@ -408,6 +425,8 @@ files:
408
425
  - lib/tasks/services.rb
409
426
  - smartkiosk-client.gemspec
410
427
  - vendor/assets/javascripts/jquery.js
428
+ - vendor/assets/javascripts/mq.js
429
+ - vendor/assets/javascripts/swfobject.js
411
430
  homepage: https://github.com/smartkiosk/smartkiosk-client
412
431
  licenses: []
413
432
  post_install_message:
@@ -422,7 +441,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
422
441
  version: '0'
423
442
  segments:
424
443
  - 0
425
- hash: -627910019316121586
444
+ hash: 3225357940920908049
426
445
  required_rubygems_version: !ruby/object:Gem::Requirement
427
446
  none: false
428
447
  requirements:
@@ -431,7 +450,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
431
450
  version: '0'
432
451
  segments:
433
452
  - 0
434
- hash: -627910019316121586
453
+ hash: 3225357940920908049
435
454
  requirements: []
436
455
  rubyforge_project:
437
456
  rubygems_version: 1.8.15