spns 0.2.1 → 0.2.2
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/README.md +1 -1
- data/VERSION +1 -1
- data/bin/spns +4 -6
- data/cron +26 -3
- data/lib/spns.rb +15 -2
- metadata +87 -7
data/README.md
CHANGED
@@ -23,7 +23,7 @@ Usage
|
|
23
23
|
=======
|
24
24
|
1. under the current directory, provide single pem file combined with certificate and key, HOWTO ([Check this link](http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12))
|
25
25
|
|
26
|
-
2. edit spns.yml
|
26
|
+
2. edit spns.yml. (when you run spns first time, it will generate this file) ([Check this link](https://raw.github.com/eiffelqiu/spns/master/spns.yml))
|
27
27
|
|
28
28
|
3. provide a cron script under current directory, default named "cron" according to spns.yml
|
29
29
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
data/bin/spns
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
1
2
|
#!/usr/bin/env ruby
|
3
|
+
|
2
4
|
require 'rubygems' unless defined?(Gem)
|
3
5
|
require 'sinatra/base'
|
4
6
|
require 'thread'
|
@@ -7,10 +9,6 @@ class Object
|
|
7
9
|
alias sh system
|
8
10
|
end
|
9
11
|
|
10
|
-
unless RUBY_PLATFORM =~ /darwin/i
|
11
|
-
$stderr.puts "what? you do not have a MAC, dude? Shame on you!!!"
|
12
|
-
end
|
13
|
-
|
14
12
|
lib_dir = File.expand_path(File.join(File.dirname(__FILE__),'..','lib'))
|
15
13
|
root_dir = File.expand_path(File.join(File.dirname(__FILE__),'..'))
|
16
14
|
unless $LOAD_PATH.include?(lib_dir)
|
@@ -20,12 +18,12 @@ end
|
|
20
18
|
if File.exist?('push.db') then system "rm push.db" end
|
21
19
|
|
22
20
|
unless File.exist?("#{Dir.pwd}/spns.yml") then
|
23
|
-
puts 'create spns.yml'
|
21
|
+
puts 'create config file: spns.yml'
|
24
22
|
system "cp #{root_dir}/spns.yml #{Dir.pwd}/spns.yml"
|
25
23
|
end
|
26
24
|
|
27
25
|
unless File.exist?("#{Dir.pwd}/cron") then
|
28
|
-
puts
|
26
|
+
puts "create a demo 'cron' script under current directory"
|
29
27
|
system "cp #{root_dir}/cron #{Dir.pwd}/cron"
|
30
28
|
end
|
31
29
|
|
data/cron
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#!/usr/bin/env ruby
|
3
|
+
|
4
|
+
###########################################################################
|
5
|
+
#### This script is only for demo purpose, you can write this script
|
6
|
+
#### with any language you like(python, perl, shell etc)
|
7
|
+
####
|
8
|
+
#### This script fetch earthquake info whose magnitude large than 4 degree
|
9
|
+
#### within an hour from usgs website and call spns service to send apple
|
10
|
+
#### push notification
|
11
|
+
###########################################################################
|
12
|
+
|
1
13
|
require 'rubygems'
|
2
14
|
require 'sequel'
|
3
15
|
require 'socket'
|
@@ -7,6 +19,17 @@ require 'rufus/scheduler'
|
|
7
19
|
require 'feedzirra'
|
8
20
|
require 'yaml'
|
9
21
|
|
22
|
+
############################################################
|
23
|
+
## Configuration Setup
|
24
|
+
############################################################
|
25
|
+
env = ENV['SINATRA_ENV'] || "development"
|
26
|
+
config = YAML.load_file("#{Dir.pwd}/spns.yml")
|
27
|
+
$timer = config['timer'] || 1
|
28
|
+
$cron = config['cron'] || 'cron'
|
29
|
+
$port = config['port'] || 4567
|
30
|
+
$mode = config['mode'] || env
|
31
|
+
$certificate = config["#{env}"][0]['certificate'] || 'ck.pem'
|
32
|
+
|
10
33
|
# fetching a single feed
|
11
34
|
feed = Feedzirra::Feed.fetch_and_parse("http://earthquake.usgs.gov/earthquakes/feed/atom/1.0/hour")
|
12
35
|
|
@@ -18,13 +41,13 @@ feed.entries.each do |o|
|
|
18
41
|
pids = o.id.split(':')
|
19
42
|
pid = pids[3]
|
20
43
|
m = t[0].split(' ')
|
21
|
-
if m[1].to_i >=
|
44
|
+
if m[1].to_i >= 4 then
|
22
45
|
big = m[1].to_i if big < m[1].to_i
|
23
46
|
messages = CGI::escape("Earthquake:#{o.title}")
|
24
47
|
puts "Earthquake:#{o.title}"
|
25
48
|
end
|
26
49
|
end
|
27
|
-
puts "curl http://
|
50
|
+
puts "curl http://localhost:#{$port}/v1/app/push/#{messages}/#{pid}"
|
28
51
|
if big >= 1 then
|
29
|
-
system "curl http://
|
52
|
+
system "curl http://localhost:#{$port}/v1/app/push/#{messages}/#{pid}"
|
30
53
|
end
|
data/lib/spns.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#!/usr/bin/env ruby
|
3
|
+
|
1
4
|
require 'rubygems'
|
2
5
|
require 'sinatra'
|
3
6
|
require 'sequel'
|
@@ -28,8 +31,18 @@ unless File.exist?("#{Dir.pwd}/#{$certificate}") then
|
|
28
31
|
puts "1: please provide certificate key pem file under current directory"
|
29
32
|
puts "2: edit your spns.yml under current directory first"
|
30
33
|
puts "3: run spns"
|
34
|
+
puts "4: Client: in AppDelegate file, didRegisterForRemoteNotificationsWithDeviceToken method should access this url: http://serverIP:#{$port}/v1/app/DeviceToken"
|
35
|
+
puts "5: Server: cron should access 'curl http://localhost:#{$port}/v1/app/push/#{messages}/#{pid}' to send push message"
|
31
36
|
exit
|
32
|
-
|
37
|
+
else
|
38
|
+
puts "*"*80
|
39
|
+
puts "Simple Push Notification Server is Running..."
|
40
|
+
puts "Mode: #{$mode}"
|
41
|
+
puts "Port: #{$port}"
|
42
|
+
puts "Certificate File: '#{Dir.pwd}/#{$certificate}'"
|
43
|
+
puts "Cron Job: '#{Dir.pwd}/#{$cron}' script is running every #{$timer} #{($timer == 1) ? 'minute' : 'minutes'} "
|
44
|
+
puts "*"*80
|
45
|
+
end
|
33
46
|
|
34
47
|
$cert = File.read("#{Dir.pwd}/#{$certificate}")
|
35
48
|
$openSSLContext = OpenSSL::SSL::SSLContext.new
|
@@ -64,7 +77,7 @@ Push = DB[:pushes]
|
|
64
77
|
scheduler = Rufus::Scheduler.start_new
|
65
78
|
|
66
79
|
scheduler.every "#{$timer}m" do
|
67
|
-
puts "running job: '#{Dir.pwd}/#{$cron}' every #{$timer} minutes"
|
80
|
+
puts "running job: '#{Dir.pwd}/#{$cron}' every #{$timer} #{($timer == 1) ? 'minute' : 'minutes'}"
|
68
81
|
system "#{Dir.pwd}/#{$cron}"
|
69
82
|
end
|
70
83
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
@@ -172,14 +172,46 @@ dependencies:
|
|
172
172
|
- !ruby/object:Gem::Version
|
173
173
|
version: 1.8.4
|
174
174
|
- !ruby/object:Gem::Dependency
|
175
|
-
name:
|
175
|
+
name: sinatra
|
176
176
|
requirement: !ruby/object:Gem::Requirement
|
177
177
|
none: false
|
178
178
|
requirements:
|
179
179
|
- - ! '>='
|
180
180
|
- !ruby/object:Gem::Version
|
181
181
|
version: '0'
|
182
|
-
type: :
|
182
|
+
type: :runtime
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
186
|
+
requirements:
|
187
|
+
- - ! '>='
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: '0'
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
name: sequel
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
194
|
+
requirements:
|
195
|
+
- - ! '>='
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: '0'
|
198
|
+
type: :runtime
|
199
|
+
prerelease: false
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ! '>='
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
206
|
+
- !ruby/object:Gem::Dependency
|
207
|
+
name: rufus-scheduler
|
208
|
+
requirement: !ruby/object:Gem::Requirement
|
209
|
+
none: false
|
210
|
+
requirements:
|
211
|
+
- - ! '>='
|
212
|
+
- !ruby/object:Gem::Version
|
213
|
+
version: '0'
|
214
|
+
type: :runtime
|
183
215
|
prerelease: false
|
184
216
|
version_requirements: !ruby/object:Gem::Requirement
|
185
217
|
none: false
|
@@ -187,7 +219,55 @@ dependencies:
|
|
187
219
|
- - ! '>='
|
188
220
|
- !ruby/object:Gem::Version
|
189
221
|
version: '0'
|
190
|
-
|
222
|
+
- !ruby/object:Gem::Dependency
|
223
|
+
name: feedzirra
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
225
|
+
none: false
|
226
|
+
requirements:
|
227
|
+
- - ! '>='
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
type: :runtime
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
none: false
|
234
|
+
requirements:
|
235
|
+
- - ! '>='
|
236
|
+
- !ruby/object:Gem::Version
|
237
|
+
version: '0'
|
238
|
+
- !ruby/object:Gem::Dependency
|
239
|
+
name: eventmachine
|
240
|
+
requirement: !ruby/object:Gem::Requirement
|
241
|
+
none: false
|
242
|
+
requirements:
|
243
|
+
- - ! '>='
|
244
|
+
- !ruby/object:Gem::Version
|
245
|
+
version: '0'
|
246
|
+
type: :runtime
|
247
|
+
prerelease: false
|
248
|
+
version_requirements: !ruby/object:Gem::Requirement
|
249
|
+
none: false
|
250
|
+
requirements:
|
251
|
+
- - ! '>='
|
252
|
+
- !ruby/object:Gem::Version
|
253
|
+
version: '0'
|
254
|
+
- !ruby/object:Gem::Dependency
|
255
|
+
name: activesupport
|
256
|
+
requirement: !ruby/object:Gem::Requirement
|
257
|
+
none: false
|
258
|
+
requirements:
|
259
|
+
- - ! '>='
|
260
|
+
- !ruby/object:Gem::Version
|
261
|
+
version: 3.2.8
|
262
|
+
type: :runtime
|
263
|
+
prerelease: false
|
264
|
+
version_requirements: !ruby/object:Gem::Requirement
|
265
|
+
none: false
|
266
|
+
requirements:
|
267
|
+
- - ! '>='
|
268
|
+
- !ruby/object:Gem::Version
|
269
|
+
version: 3.2.8
|
270
|
+
description: Simple Push Notification Server written with Sinatra and Sequel(Sqlite3)
|
191
271
|
email: eiffelqiu@gmail.com
|
192
272
|
executables:
|
193
273
|
- spns
|
@@ -219,7 +299,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
219
299
|
version: '0'
|
220
300
|
segments:
|
221
301
|
- 0
|
222
|
-
hash:
|
302
|
+
hash: 888853487025371327
|
223
303
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
224
304
|
none: false
|
225
305
|
requirements:
|
@@ -227,7 +307,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
227
307
|
- !ruby/object:Gem::Version
|
228
308
|
version: '0'
|
229
309
|
requirements: []
|
230
|
-
rubyforge_project:
|
310
|
+
rubyforge_project: spns
|
231
311
|
rubygems_version: 1.8.21
|
232
312
|
signing_key:
|
233
313
|
specification_version: 3
|