em_apn_manager 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d008110014b8e98c9a07acbda0856c2a186f3050
4
+ data.tar.gz: 8f991c31d6efc8baf28fd6ce4d8c72e652b9cd7c
5
+ SHA512:
6
+ metadata.gz: d5df0e67ccfd611a9f9ef292cb56064d34fbb9382ed5aca7a2f4066bff826e9524c98709a66a8c8e622015a5c1dd55631875c54c66a514dab331b2f55a4784db
7
+ data.tar.gz: 6a27257805e05a9f82b20fe26824e57668d76766de6e1d06cc831ae89bfc6c70a9b60e327e615c210ea7a56ce023d7f479203699ce8e410613758b2811d9be2e
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development do
6
+ gem "shoulda"
7
+ gem "rdoc"
8
+ gem "bundler"
9
+ gem "jeweler", "~> 1.8.4"
10
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,108 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ em_apn_manager (0.0.1)
5
+ em-hiredis (>= 0.2.1)
6
+ em_apn_manager
7
+ eventmachine (>= 1.0.0.beta.3)
8
+ redis (>= 2.2.0)
9
+ thor (~> 0.16)
10
+ yajl-ruby (>= 0.8.2)
11
+
12
+ GEM
13
+ remote: https://rubygems.org/
14
+ specs:
15
+ activesupport (4.0.0)
16
+ i18n (~> 0.6, >= 0.6.4)
17
+ minitest (~> 4.2)
18
+ multi_json (~> 1.3)
19
+ thread_safe (~> 0.1)
20
+ tzinfo (~> 0.3.37)
21
+ addressable (2.3.5)
22
+ annotate (2.5.0)
23
+ rake
24
+ atomic (1.1.10)
25
+ bluecloth (2.2.0)
26
+ builder (3.2.2)
27
+ diff-lcs (1.1.3)
28
+ em-hiredis (0.2.1)
29
+ hiredis (~> 0.4.0)
30
+ eventmachine (1.0.3)
31
+ faraday (0.8.7)
32
+ multipart-post (~> 1.1)
33
+ git (1.2.5)
34
+ github_api (0.10.1)
35
+ addressable
36
+ faraday (~> 0.8.1)
37
+ hashie (>= 1.2)
38
+ multi_json (~> 1.4)
39
+ nokogiri (~> 1.5.2)
40
+ oauth2
41
+ hashie (2.0.5)
42
+ highline (1.6.19)
43
+ hiredis (0.4.5)
44
+ httpauth (0.2.0)
45
+ i18n (0.6.4)
46
+ jeweler (1.8.6)
47
+ builder
48
+ bundler (~> 1.0)
49
+ git (>= 1.2.5)
50
+ github_api (= 0.10.1)
51
+ highline (>= 1.6.15)
52
+ nokogiri (= 1.5.10)
53
+ rake
54
+ rdoc
55
+ json (1.8.0)
56
+ jwt (0.1.8)
57
+ multi_json (>= 1.5)
58
+ minitest (4.7.5)
59
+ multi_json (1.7.7)
60
+ multi_xml (0.5.4)
61
+ multipart-post (1.2.0)
62
+ nokogiri (1.5.10)
63
+ oauth2 (0.9.2)
64
+ faraday (~> 0.8)
65
+ httpauth (~> 0.2)
66
+ jwt (~> 0.1.4)
67
+ multi_json (~> 1.0)
68
+ multi_xml (~> 0.5)
69
+ rack (~> 1.2)
70
+ rack (1.5.2)
71
+ rake (10.1.0)
72
+ rdoc (4.0.1)
73
+ json (~> 1.4)
74
+ redis (3.0.4)
75
+ rspec (2.6.0)
76
+ rspec-core (~> 2.6.0)
77
+ rspec-expectations (~> 2.6.0)
78
+ rspec-mocks (~> 2.6.0)
79
+ rspec-core (2.6.4)
80
+ rspec-expectations (2.6.0)
81
+ diff-lcs (~> 1.1.2)
82
+ rspec-mocks (2.6.0)
83
+ shoulda (3.5.0)
84
+ shoulda-context (~> 1.0, >= 1.0.1)
85
+ shoulda-matchers (>= 1.4.1, < 3.0)
86
+ shoulda-context (1.1.4)
87
+ shoulda-matchers (2.2.0)
88
+ activesupport (>= 3.0.0)
89
+ thor (0.18.1)
90
+ thread_safe (0.1.0)
91
+ atomic
92
+ tzinfo (0.3.37)
93
+ yajl-ruby (1.1.0)
94
+ yard (0.8.6.2)
95
+
96
+ PLATFORMS
97
+ ruby
98
+
99
+ DEPENDENCIES
100
+ annotate
101
+ bluecloth
102
+ bundler
103
+ em_apn_manager!
104
+ jeweler (~> 1.8.4)
105
+ rdoc
106
+ rspec (~> 2.6.0)
107
+ shoulda
108
+ yard
data/Procfile ADDED
@@ -0,0 +1 @@
1
+ web: bundle exec ruby server.rb
data/README.md ADDED
@@ -0,0 +1,26 @@
1
+ EventMachine APN Manager
2
+ ==============
3
+
4
+ EventMachine APN Connection Manager, The purpose is to support multiple cert and multiple application with one process.
5
+
6
+ Steps to use this gem.
7
+ 1. Add `gem 'em_apn_manager', git: 'git@github.com:hlxwell/em_apn_manager.git'`
8
+ 2. Run `bundle exec rails g event_machine:apn_manager:install` to generate 'config/em_apn_manager.yml' file.
9
+ 3. Run `bundle exec em_apn_manager -e development`
10
+ 4. Put this in your code
11
+ `EM::ApnManager.push_notification({
12
+ cert: READ_YOUR_CERT_CONTENT,
13
+ token: DEVICE_TOKEN,
14
+ message: YOUR_MESSAGE
15
+ })`
16
+
17
+
18
+ Generate pem from p12
19
+ ==================
20
+ You have to convert p12 format to pem format by below command line.
21
+ `openssl pkcs12 -in cert.p12 -out cert.pem -nodes -clcerts`
22
+
23
+
24
+ TO DOs
25
+ ==================
26
+ 1. Implement running `bundle exec em_apn_manager -e development` in background, support `-daemon` and `-pid_file`
data/Rakefile ADDED
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "em_apn_manager"
18
+ gem.homepage = "http://github.com/hlxwell/em_apn_manager"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{EventMachine multiple APNs connections Management Solution. You can use multiple cert and connection to apple's APNs server.}
21
+ gem.description = %Q{EventMachine multiple APNs connections Management Solution. You can use multiple cert and connection to apple's APNs server.}
22
+ gem.email = "m.he@skillupjapan.co.jp"
23
+ gem.authors = ["Michael He"]
24
+
25
+ # dependencies defined in Gemfile
26
+ gem.add_runtime_dependency "thor", "~> 0.16"
27
+ gem.add_runtime_dependency "eventmachine", ">= 1.0.0.beta.3"
28
+ gem.add_runtime_dependency "yajl-ruby", ">= 0.8.2"
29
+ gem.add_runtime_dependency "redis", ">= 2.2.0"
30
+ gem.add_runtime_dependency "em-hiredis", ">= 0.2.1"
31
+ gem.add_development_dependency "rspec", "~> 2.6.0"
32
+ end
33
+ Jeweler::RubygemsDotOrgTasks.new
34
+
35
+ require 'rake/testtask'
36
+ Rake::TestTask.new(:test) do |test|
37
+ test.libs << 'lib' << 'test'
38
+ test.pattern = 'test/**/test_*.rb'
39
+ test.verbose = true
40
+ end
41
+
42
+ # require 'rcov/rcovtask'
43
+ # Rcov::RcovTask.new do |test|
44
+ # test.libs << 'test'
45
+ # test.pattern = 'test/**/test_*.rb'
46
+ # test.verbose = true
47
+ # test.rcov_opts << '--exclude "gems/*"'
48
+ # end
49
+
50
+ task :default => :test
51
+
52
+ require 'rdoc/task'
53
+ Rake::RDocTask.new do |rdoc|
54
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
55
+
56
+ rdoc.rdoc_dir = 'rdoc'
57
+ rdoc.title = "em_apn_manager #{version}"
58
+ rdoc.rdoc_files.include('README*')
59
+ rdoc.rdoc_files.include('lib/**/*.rb')
60
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require 'em_apn_manager/cli'
3
+
4
+ EM::ApnManager::CLI.start(ARGV)
@@ -0,0 +1,197 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "em_apn_manager"
8
+ s.version = "0.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Michael He"]
12
+ s.date = "2013-07-16"
13
+ s.description = "EventMachine multiple APNs connections Management Solution. You can use multiple cert and connection to apple's APNs server."
14
+ s.email = "m.he@skillupjapan.co.jp"
15
+ s.executables = ["em_apn_manager"]
16
+ s.extra_rdoc_files = [
17
+ "README.md"
18
+ ]
19
+ s.files = [
20
+ "Gemfile",
21
+ "Gemfile.lock",
22
+ "Procfile",
23
+ "README.md",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "bin/em_apn_manager",
27
+ "em_apn_manager.gemspec",
28
+ "lib/em_apn_manager.rb",
29
+ "lib/em_apn_manager/apn_server.rb",
30
+ "lib/em_apn_manager/cli.rb",
31
+ "lib/em_apn_manager/client.rb",
32
+ "lib/em_apn_manager/connection.rb",
33
+ "lib/em_apn_manager/engine.rb",
34
+ "lib/em_apn_manager/error_response.rb",
35
+ "lib/em_apn_manager/generators/install.rb",
36
+ "lib/em_apn_manager/generators/templates/em_apn_manager.yml",
37
+ "lib/em_apn_manager/logger.rb",
38
+ "lib/em_apn_manager/manager.rb",
39
+ "lib/em_apn_manager/notification.rb"
40
+ ]
41
+ s.homepage = "http://github.com/hlxwell/em_apn_manager"
42
+ s.licenses = ["MIT"]
43
+ s.require_paths = ["lib"]
44
+ s.rubygems_version = "2.0.3"
45
+ s.summary = "EventMachine multiple APNs connections Management Solution. You can use multiple cert and connection to apple's APNs server."
46
+
47
+ if s.respond_to? :specification_version then
48
+ s.specification_version = 4
49
+
50
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
+ s.add_runtime_dependency(%q<em_apn_manager>, [">= 0"])
52
+ s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
53
+ s.add_development_dependency(%q<annotate>, [">= 0"])
54
+ s.add_development_dependency(%q<bluecloth>, [">= 0"])
55
+ s.add_development_dependency(%q<yard>, [">= 0"])
56
+ s.add_development_dependency(%q<bundler>, [">= 0"])
57
+ s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
58
+ s.add_development_dependency(%q<annotate>, [">= 0"])
59
+ s.add_development_dependency(%q<bluecloth>, [">= 0"])
60
+ s.add_development_dependency(%q<yard>, [">= 0"])
61
+ s.add_development_dependency(%q<bundler>, [">= 0"])
62
+ s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
63
+ s.add_development_dependency(%q<annotate>, [">= 0"])
64
+ s.add_development_dependency(%q<bluecloth>, [">= 0"])
65
+ s.add_development_dependency(%q<yard>, [">= 0"])
66
+ s.add_development_dependency(%q<bundler>, [">= 0"])
67
+ s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
68
+ s.add_development_dependency(%q<annotate>, [">= 0"])
69
+ s.add_development_dependency(%q<bluecloth>, [">= 0"])
70
+ s.add_development_dependency(%q<yard>, [">= 0"])
71
+ s.add_development_dependency(%q<bundler>, [">= 0"])
72
+ s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
73
+ s.add_development_dependency(%q<annotate>, [">= 0"])
74
+ s.add_development_dependency(%q<bluecloth>, [">= 0"])
75
+ s.add_development_dependency(%q<yard>, [">= 0"])
76
+ s.add_development_dependency(%q<bundler>, [">= 0"])
77
+ s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
78
+ s.add_development_dependency(%q<annotate>, [">= 0"])
79
+ s.add_development_dependency(%q<bluecloth>, [">= 0"])
80
+ s.add_development_dependency(%q<yard>, [">= 0"])
81
+ s.add_development_dependency(%q<bundler>, [">= 0"])
82
+ s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
83
+ s.add_development_dependency(%q<annotate>, [">= 0"])
84
+ s.add_development_dependency(%q<bluecloth>, [">= 0"])
85
+ s.add_development_dependency(%q<yard>, [">= 0"])
86
+ s.add_development_dependency(%q<bundler>, [">= 0"])
87
+ s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
88
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
89
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
90
+ s.add_development_dependency(%q<bundler>, [">= 0"])
91
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
92
+ s.add_runtime_dependency(%q<thor>, ["~> 0.16"])
93
+ s.add_runtime_dependency(%q<eventmachine>, [">= 1.0.0.beta.3"])
94
+ s.add_runtime_dependency(%q<yajl-ruby>, [">= 0.8.2"])
95
+ s.add_runtime_dependency(%q<redis>, [">= 2.2.0"])
96
+ s.add_runtime_dependency(%q<em-hiredis>, [">= 0.2.1"])
97
+ s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
98
+ else
99
+ s.add_dependency(%q<em_apn_manager>, [">= 0"])
100
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
101
+ s.add_dependency(%q<annotate>, [">= 0"])
102
+ s.add_dependency(%q<bluecloth>, [">= 0"])
103
+ s.add_dependency(%q<yard>, [">= 0"])
104
+ s.add_dependency(%q<bundler>, [">= 0"])
105
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
106
+ s.add_dependency(%q<annotate>, [">= 0"])
107
+ s.add_dependency(%q<bluecloth>, [">= 0"])
108
+ s.add_dependency(%q<yard>, [">= 0"])
109
+ s.add_dependency(%q<bundler>, [">= 0"])
110
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
111
+ s.add_dependency(%q<annotate>, [">= 0"])
112
+ s.add_dependency(%q<bluecloth>, [">= 0"])
113
+ s.add_dependency(%q<yard>, [">= 0"])
114
+ s.add_dependency(%q<bundler>, [">= 0"])
115
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
116
+ s.add_dependency(%q<annotate>, [">= 0"])
117
+ s.add_dependency(%q<bluecloth>, [">= 0"])
118
+ s.add_dependency(%q<yard>, [">= 0"])
119
+ s.add_dependency(%q<bundler>, [">= 0"])
120
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
121
+ s.add_dependency(%q<annotate>, [">= 0"])
122
+ s.add_dependency(%q<bluecloth>, [">= 0"])
123
+ s.add_dependency(%q<yard>, [">= 0"])
124
+ s.add_dependency(%q<bundler>, [">= 0"])
125
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
126
+ s.add_dependency(%q<annotate>, [">= 0"])
127
+ s.add_dependency(%q<bluecloth>, [">= 0"])
128
+ s.add_dependency(%q<yard>, [">= 0"])
129
+ s.add_dependency(%q<bundler>, [">= 0"])
130
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
131
+ s.add_dependency(%q<annotate>, [">= 0"])
132
+ s.add_dependency(%q<bluecloth>, [">= 0"])
133
+ s.add_dependency(%q<yard>, [">= 0"])
134
+ s.add_dependency(%q<bundler>, [">= 0"])
135
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
136
+ s.add_dependency(%q<shoulda>, [">= 0"])
137
+ s.add_dependency(%q<rdoc>, [">= 0"])
138
+ s.add_dependency(%q<bundler>, [">= 0"])
139
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
140
+ s.add_dependency(%q<thor>, ["~> 0.16"])
141
+ s.add_dependency(%q<eventmachine>, [">= 1.0.0.beta.3"])
142
+ s.add_dependency(%q<yajl-ruby>, [">= 0.8.2"])
143
+ s.add_dependency(%q<redis>, [">= 2.2.0"])
144
+ s.add_dependency(%q<em-hiredis>, [">= 0.2.1"])
145
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
146
+ end
147
+ else
148
+ s.add_dependency(%q<em_apn_manager>, [">= 0"])
149
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
150
+ s.add_dependency(%q<annotate>, [">= 0"])
151
+ s.add_dependency(%q<bluecloth>, [">= 0"])
152
+ s.add_dependency(%q<yard>, [">= 0"])
153
+ s.add_dependency(%q<bundler>, [">= 0"])
154
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
155
+ s.add_dependency(%q<annotate>, [">= 0"])
156
+ s.add_dependency(%q<bluecloth>, [">= 0"])
157
+ s.add_dependency(%q<yard>, [">= 0"])
158
+ s.add_dependency(%q<bundler>, [">= 0"])
159
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
160
+ s.add_dependency(%q<annotate>, [">= 0"])
161
+ s.add_dependency(%q<bluecloth>, [">= 0"])
162
+ s.add_dependency(%q<yard>, [">= 0"])
163
+ s.add_dependency(%q<bundler>, [">= 0"])
164
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
165
+ s.add_dependency(%q<annotate>, [">= 0"])
166
+ s.add_dependency(%q<bluecloth>, [">= 0"])
167
+ s.add_dependency(%q<yard>, [">= 0"])
168
+ s.add_dependency(%q<bundler>, [">= 0"])
169
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
170
+ s.add_dependency(%q<annotate>, [">= 0"])
171
+ s.add_dependency(%q<bluecloth>, [">= 0"])
172
+ s.add_dependency(%q<yard>, [">= 0"])
173
+ s.add_dependency(%q<bundler>, [">= 0"])
174
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
175
+ s.add_dependency(%q<annotate>, [">= 0"])
176
+ s.add_dependency(%q<bluecloth>, [">= 0"])
177
+ s.add_dependency(%q<yard>, [">= 0"])
178
+ s.add_dependency(%q<bundler>, [">= 0"])
179
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
180
+ s.add_dependency(%q<annotate>, [">= 0"])
181
+ s.add_dependency(%q<bluecloth>, [">= 0"])
182
+ s.add_dependency(%q<yard>, [">= 0"])
183
+ s.add_dependency(%q<bundler>, [">= 0"])
184
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
185
+ s.add_dependency(%q<shoulda>, [">= 0"])
186
+ s.add_dependency(%q<rdoc>, [">= 0"])
187
+ s.add_dependency(%q<bundler>, [">= 0"])
188
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
189
+ s.add_dependency(%q<thor>, ["~> 0.16"])
190
+ s.add_dependency(%q<eventmachine>, [">= 1.0.0.beta.3"])
191
+ s.add_dependency(%q<yajl-ruby>, [">= 0.8.2"])
192
+ s.add_dependency(%q<redis>, [">= 2.2.0"])
193
+ s.add_dependency(%q<em-hiredis>, [">= 0.2.1"])
194
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
195
+ end
196
+ end
197
+
@@ -0,0 +1,22 @@
1
+ require 'thor'
2
+ require 'eventmachine'
3
+ require 'em_apn_manager/logger'
4
+ if defined?(Rails)
5
+ require 'em_apn_manager/engine'
6
+ end
7
+
8
+ module EventMachine
9
+ module ApnManager
10
+ extend self
11
+ attr_accessor :config
12
+
13
+ def push_notification options = {}
14
+ # FIXME Check options
15
+ $apn_manager_redis.publish "push-notification", {
16
+ cert: options[:cert],
17
+ token: options[:token],
18
+ message: options[:message]
19
+ }.to_json
20
+ end
21
+ end
22
+ end