smartkiosk-client 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
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