em_apn_manager 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 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