PushIt 1.0.2 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +15 -7
  2. data/bin/pushit +267 -266
  3. metadata +48 -41
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
- ---
2
- SHA512:
3
- metadata.gz: 03f75a14866eab8d43265462e041a64ca1606f3bcf7602a379f3c314b1ad8b0f3ef130f1ebd93f513f56a4690cb3283b01f2f75023b3c98cdf62197965a690e3
4
- data.tar.gz: 280125e2ff29ae6a3cd879e804e0bd0806008b6dac854043addd8f5be35ac27926ff1a1905fd7e3a696227f1513c8e13d2f1f9efc0438334cc0150d5ad8f557e
5
- SHA1:
6
- metadata.gz: 5d49449b5b6753f0a32c447c9e90946094d689f5
7
- data.tar.gz: 50a3adfef7525ec5f0bb423a5940dd627ec06ddf
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MzZhM2YzOTNhODBmYTAxMmQ0YTIwMThhODljM2Q4ZDM1ZGU2MWZiOA==
5
+ data.tar.gz: !binary |-
6
+ MGJjMTZjNDEzYjRlMjIzODJhYWY0MWNkMTcyMjAwYzY4MTI3NTRkNQ==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ZDUwMDAzNWUyNWI1YzcxMjE4ZjViYjFlMDE0OGZmOGZiNmE4ODIyYTNhZWU1
10
+ MzdiZjQ0N2JiNzhkNmEyYzI5MGNhOWM4ZTRkYjAwMjNlNzkyN2I3Y2FhN2Jh
11
+ OTQ2MjYzOWUxNTQwOTljODdjYzdlZmVhNDAwNmNiNmYyNTJhYzQ=
12
+ data.tar.gz: !binary |-
13
+ OWM0MjFmYzM2YjYzNTRiMjAyMmYxOWM5MmVjMDZlYjkwZDM3NjJkOTUzM2U4
14
+ NDk1N2NiMjJiNjFjYzI0YzJiOTZiYzAzYWVmYmE5NmE3ZjViMTUxNWQxOWM5
15
+ M2QzOWUwNDE5OGQ0OTU0ZWVkOWFhYWJlZDg2MDVmZWFmNTFhNzI=
data/bin/pushit CHANGED
@@ -1,266 +1,267 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'rubygems'
4
- require 'colored'
5
- require 'commander/import'
6
- require 'houston'
7
- require 'yaml'
8
- # require File.expand_path('../devices.rb', __FILE__)
9
-
10
- # Possible future feature: Enable storing of device information within the gem, importing and exporting the .yaml file.
11
-
12
- HighLine.track_eof = false # Fix for built-in Ruby
13
-
14
- program :name, 'PushIt'
15
- program :version, '1.0'
16
- program :description, 'Sends push notifications to iOS apps. Ensure that your certificate path is relative to your current directory.'
17
-
18
- program :help, 'Author', 'Oletha Lai'
19
- program :help_formatter, :compact
20
-
21
- default_command :help
22
-
23
- begin
24
- @devices = YAML::load_file "devices.yaml"
25
- rescue
26
- say_error 'No devices.yaml file was found.'.red
27
- end
28
-
29
- # Convenience method for debug logging.
30
- # Takes a String as the log parameter.
31
- # Prints the log in blue.
32
- def debug_log (log)
33
- puts log.blue if $DEBUG_MODE
34
- end
35
-
36
- command :devices do |c|
37
-
38
- c.syntax = 'pushit devices [options]'
39
- c.description = 'Prints out the list of available devices to push to.'
40
-
41
- c.example 'Print the list.', 'pushit devices -f mini'
42
-
43
- c.option '-f', '--filter STRING', 'Filters printed results by device type.'
44
- c.option '-d', '--debug', 'Enables debug mode.'
45
-
46
- c.action do |args, options|
47
- $DEBUG_MODE = options.debug.nil? ? false : true
48
-
49
- # Check that there is at least 1 device available
50
- say_error "There are no available devices.".red and abort if @devices.empty?
51
-
52
- # Filter the list if filtering has been requested.
53
- if options.filter
54
- @filter = options.filter.downcase
55
- debug_log "filter: #{@filter}"
56
- @filtered_devices = Hash.new
57
- debug_log "Created filtered devices hash."
58
- @devices.each do |device, info|
59
- debug_log "Checking for '#{@filter}' on #{device}."
60
- if info[:model].downcase.match(/#{filter}/)
61
- debug_log "Matched. Adding #{device} to filtered devices hash."
62
- @filtered_devices[device] = info
63
- end
64
- end
65
- debug_log "Filtering finished."
66
-
67
- # Check that there was at least 1 result from the filtering
68
- say_error "No devices matched your filter.".red and abort if @filtered_devices.empty?
69
- end
70
-
71
- # Sends the filtered list to be printed if it exists.
72
- device_info = @filtered_devices ? @filtered_devices : @devices
73
- debug_log @filtered_devices ? "Sending filtered devices list to be printed." : "Filtered devices undefined. Sending full device list to be printed."
74
-
75
- # Print the list
76
- debug_log "Commencing list printing..."
77
- device_info.each do |device, info|
78
- print "#{device}".bold
79
-
80
- # To ensure that the items are in line with each other, the space of 5 tabs (4 spaces each) will be given for the name field and the space of 3 tabs will be given for the device type
81
- chars = device.to_s.length
82
- space_to_next_tab = (4 - (chars % 4))
83
- if space_to_next_tab != 4
84
- print "\t"
85
- chars += space_to_next_tab
86
- end
87
- while chars % 20 != 0
88
- print "\t"
89
- chars += 4
90
- end
91
-
92
- print "#{info[:model]}".green
93
-
94
- chars = info[:model].length
95
- space_to_next_tab = (4 - (chars % 4))
96
- if space_to_next_tab != 4
97
- print "\t"
98
- chars += space_to_next_tab
99
- end
100
- while chars % 12 != 0
101
- print "\t"
102
- chars += 4
103
- end
104
-
105
- print "#{info[:token]}".blue
106
- print "\n"
107
- end
108
- debug_log "List printing complete."
109
- end
110
- end
111
-
112
- command :push do |c|
113
-
114
- c.syntax = 'pushit push DEVICE [options]'
115
- c.description = 'Push a notification to the given device. Try running --help for options.'
116
-
117
- c.example 'Send the reference name for your device and any additional options.', 'pushit push johns_ipad --link web -m This is a web link! -b 1'
118
-
119
- # The command should send different payloads based on the options specified.
120
-
121
- c.option '-a', '--app STRING', 'Specify the app you want the notification to be sent to. Ensure you have the certificate for the app named <app>.pem in this directory. You could also specify the path to the certificate from this directory, less ".pem".'
122
-
123
- c.option '-m', '--message STRING', 'The message to appear on the notification.'
124
- c.option '-b', '--badge NUMBER', 'Sets the app badge when the notification is received.'
125
- c.option '-s', '--sound STRING', 'Specifies a sound to be played when the notification is received.'
126
- c.option '-n', '--newsstand', 'Adds content-available to the payload. Newsstand apps only.'
127
- c.option '-i', '--issue NUMBER', 'Sets the issue ID of the issue to be downloaded in the background.'
128
-
129
- c.option '-l', '--link STRING', 'Sends a link of the given type. Choose from: web, itunes, appstore, email, page, location, telephone.'
130
- c.option '-t', '--button STRING', 'Sets the action button on the notification. If no --button option is chosen, View will appear by default. Choose from: install, read, watch, browse, listen, visit.'
131
-
132
- c.option '-e', '--environment ENV', [:production, :development], 'Environment to send push notification (production or development (default))'
133
- c.option '-d', '--debug', 'Enables debug mode.'
134
-
135
- c.action do |chosenDevices, options|
136
- $DEBUG_MODE = options.debug.nil? ? false : true
137
-
138
- # Log devices specified.
139
- if $DEBUG_MODE
140
- print "Debug logs will appear in ".bold + "blue".bold.blue + ".\n".bold
141
- debug_log chosenDevices.empty? ? "No devices specified." : "Devices specified:"
142
- chosenDevices.each do |chosenDevice|
143
- debug_log "#{chosenDevice}"
144
- end
145
- print "\n"
146
- end
147
-
148
- # Ensures that a recipient device was specified.
149
- say_error "Push aborted. One or more device references required.".red and abort if chosenDevices.empty?
150
-
151
- # Ensures that data is available for the specified device.
152
- chosenDevices.each do |chosenDevice|
153
- if @devices[chosenDevice.to_sym].nil?
154
- say_error "Push aborted. No data was found for #{chosenDevice}.".red and abort
155
- end
156
- end
157
-
158
- debug_log "Setting environment..."
159
- if options.environment
160
- @environment = options.environment
161
- say_error "Invalid environment,'#{@environment}' (should be either development or production)" and abort unless [:development, :production].include?(@environment)
162
- else
163
- @environment = :development
164
- end
165
- debug_log "environment: #{@environment}"
166
-
167
- @app = options.app if options.app # This will be converted to the certificate filename later on.
168
-
169
- @message = options.message
170
- @badge = options.badge.nil? ? nil : options.badge.to_i
171
- @sound = options.sound
172
- @newsstand = options.newsstand ? true : false
173
- @issue_id = options.issue.nil? ? nil : options.issue.to_i
174
-
175
- debug_log "app: #{@app}"
176
- debug_log "message: #{@message}"
177
- debug_log "badge: #{@badge}"
178
- debug_log "sound: #{@sound}"
179
- debug_log "newsstand: #{@newsstand}"
180
- debug_log "issue_id: #{@issue_id}"
181
-
182
- unless @message or @badge or @sound or @newsstand
183
- debug_log "message, badge, sound and newsstand values not specified."
184
- @message = ask_editor "Please enter a message."
185
- say_error "Push aborted. You must include use least one of the message, badge, sound or newsstand options.".red and abort if @message.nil?
186
- end
187
-
188
- if options.link
189
- debug_log "Setting link..."
190
- case options.link.downcase
191
- when 'web'
192
- @link = 'http://www.google.com/'
193
- when 'itunes'
194
- @link = 'itms://itunes.apple.com/gb/album/insomnia-best-faithless/id305775034'
195
- when 'appstore'
196
- @link = 'https://itunes.apple.com/us/app/wwdc/id640199958'
197
- when 'email'
198
- @link = 'mailto:testuser@pushit.com?subject=Email%20from%20a%20push%20notification%20link!'
199
- when 'page'
200
- @link = 'pm-page://local/54637/72/3/0.4746,0.7323,0.1845,0.5763'
201
- when 'location'
202
- @link = 'http://maps.apple.com/?q=cupertino'
203
- when 'telephone'
204
- @link = 'tel:150' # Free from a T-Mobile phone.
205
- else
206
- say_error "Push aborted. Invalid link type.".red and abort
207
- end
208
- debug_log "link: #{@link}"
209
- end
210
-
211
- if options.button
212
- debug_log "Setting button..."
213
- button_title = options.button.capitalize
214
- unless button_title == ('Install' or 'Read' or 'Watch' or 'Browse' or 'Listen' or 'Visit')
215
- say_error "Push aborted. Invalid button title.".red and abort
216
- end
217
- @button = "APNSActionButton" + button_title
218
- debug_log "button: #{@button}"
219
- end
220
-
221
- @notifications = []
222
- debug_log "Created notifications array."
223
- chosenDevices.each do |device|
224
- debug_log "Setting up notification for device: #{device}"
225
- notification = Houston::Notification.new({})
226
- notification.token = @devices[device.to_sym][:token]
227
- notification.alert = @message if @message
228
- notification.badge = @badge if @badge
229
- notification.sound = @sound if @sound
230
- notification.content_available = @newsstand if @newsstand
231
-
232
- custom_payload = Hash.new
233
- debug_log "Created custom payload hash."
234
-
235
- custom_payload.merge!({:new_issue_identifier => "#{@issue_id}"}) if @issue_id
236
- custom_payload.merge!({:pmps => {:'link-url' => "#{@link}"}}) if @link
237
- custom_payload.merge!({'alert' => {:body => "#{@message}", :'action-loc-key' => "#{@button}"}}) if @button
238
-
239
- debug_log "Merging custom payload..."
240
- notification.custom_data.merge!(custom_payload)
241
-
242
- debug_log "Adding notification to notifications array..."
243
- @notifications << notification
244
- debug_log "Notification added."
245
- end
246
- debug_log "All notifications added."
247
-
248
- debug_log "Creating Houston Client..."
249
- client = @environment == :production ? Houston::Client.production : Houston::Client.development
250
- debug_log "Setting certificate..."
251
- client.certificate = File.read(@app.nil? ? "cert.pem" : "#{@app}.pem")
252
- # client.passphrase = password("Please enter the password for the #{@app.capitalize} application certificate:", '*')
253
-
254
- debug_log "Beginning push operation..."
255
- begin
256
- client.push(*@notifications)
257
- rescue => message
258
- say_error "Exception sending notification: #{message}".red and abort
259
- end
260
- debug_log "Push complete."
261
-
262
- say_ok "Push notification send successful!".green
263
- end
264
- end
265
-
266
-
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'colored'
5
+ require 'commander/import'
6
+ require 'houston'
7
+ require 'yaml'
8
+ # require File.expand_path('../devices.rb', __FILE__)
9
+
10
+ # TODO: Add an option for Cucumber tests to use so that they can determine the final contents of the payload.
11
+ # Possible future feature: Enable storing of device information within the gem, importing and exporting the .yaml file.
12
+
13
+ HighLine.track_eof = false # Fix for built-in Ruby
14
+
15
+ program :name, 'PushIt'
16
+ program :version, '1.0'
17
+ program :description, 'Sends push notifications to iOS apps. Ensure that your certificate path is relative to your current directory.'
18
+
19
+ program :help, 'Author', 'Oletha Lai'
20
+ program :help_formatter, :compact
21
+
22
+ default_command :help
23
+
24
+ begin
25
+ @devices = YAML::load_file "devices.yaml"
26
+ rescue
27
+ say_error 'No devices.yaml file was found.'.red
28
+ end
29
+
30
+ # Convenience method for debug logging.
31
+ # Takes a String as the log parameter.
32
+ # Prints the log in blue.
33
+ def debug_log (log)
34
+ puts log.blue if $DEBUG_MODE
35
+ end
36
+
37
+ command :devices do |c|
38
+
39
+ c.syntax = 'pushit devices [options]'
40
+ c.description = 'Prints out the list of available devices to push to.'
41
+
42
+ c.example 'Print the list.', 'pushit devices -f mini'
43
+
44
+ c.option '-f', '--filter STRING', 'Filters printed results by device type.'
45
+ c.option '-d', '--debug', 'Enables debug mode.'
46
+
47
+ c.action do |args, options|
48
+ $DEBUG_MODE = options.debug.nil? ? false : true
49
+
50
+ # Check that there is at least 1 device available
51
+ say_error "There are no available devices.".red and abort if @devices.empty?
52
+
53
+ # Filter the list if filtering has been requested.
54
+ if options.filter
55
+ @filter = options.filter.downcase
56
+ debug_log "filter: #{@filter}"
57
+ @filtered_devices = Hash.new
58
+ debug_log "Created filtered devices hash."
59
+ @devices.each do |device, info|
60
+ debug_log "Checking for '#{@filter}' on #{device}."
61
+ if info[:model].downcase.match(/#{filter}/)
62
+ debug_log "Matched. Adding #{device} to filtered devices hash."
63
+ @filtered_devices[device] = info
64
+ end
65
+ end
66
+ debug_log "Filtering finished."
67
+
68
+ # Check that there was at least 1 result from the filtering
69
+ say_error "No devices matched your filter.".red and abort if @filtered_devices.empty?
70
+ end
71
+
72
+ # Sends the filtered list to be printed if it exists.
73
+ device_info = @filtered_devices ? @filtered_devices : @devices
74
+ debug_log @filtered_devices ? "Sending filtered devices list to be printed." : "Filtered devices undefined. Sending full device list to be printed."
75
+
76
+ # Print the list
77
+ debug_log "Commencing list printing..."
78
+ device_info.each do |device, info|
79
+ print "#{device}".bold
80
+
81
+ # To ensure that the items are in line with each other, the space of 5 tabs (4 spaces each) will be given for the name field and the space of 3 tabs will be given for the device type
82
+ chars = device.to_s.length
83
+ space_to_next_tab = (4 - (chars % 4))
84
+ if space_to_next_tab != 4
85
+ print "\t"
86
+ chars += space_to_next_tab
87
+ end
88
+ while chars % 20 != 0
89
+ print "\t"
90
+ chars += 4
91
+ end
92
+
93
+ print "#{info[:model]}".green
94
+
95
+ chars = info[:model].length
96
+ space_to_next_tab = (4 - (chars % 4))
97
+ if space_to_next_tab != 4
98
+ print "\t"
99
+ chars += space_to_next_tab
100
+ end
101
+ while chars % 12 != 0
102
+ print "\t"
103
+ chars += 4
104
+ end
105
+
106
+ print "#{info[:token]}".blue
107
+ print "\n"
108
+ end
109
+ debug_log "List printing complete."
110
+ end
111
+ end
112
+
113
+ command :push do |c|
114
+
115
+ c.syntax = 'pushit push DEVICE [options]'
116
+ c.description = 'Push a notification to the given device. Try running --help for options.'
117
+
118
+ c.example 'Send the reference name for your device and any additional options.', 'pushit push johns_ipad --link web -m This is a web link! -b 1'
119
+
120
+ # The command should send different payloads based on the options specified.
121
+
122
+ c.option '-a', '--app STRING', 'Specify the app you want the notification to be sent to. Ensure you have the certificate for the app named <app>.pem in this directory. You could also specify the path to the certificate from this directory, less ".pem".'
123
+
124
+ c.option '-m', '--message STRING', 'The message to appear on the notification.'
125
+ c.option '-b', '--badge NUMBER', 'Sets the app badge when the notification is received.'
126
+ c.option '-s', '--sound STRING', 'Specifies a sound to be played when the notification is received.'
127
+ c.option '-n', '--newsstand', 'Adds content-available to the payload. Newsstand apps only.'
128
+ c.option '-i', '--issue NUMBER', 'Sets the issue ID of the issue to be downloaded in the background.'
129
+
130
+ c.option '-l', '--link STRING', 'Sends a link of the given type. Choose from: web, itunes, appstore, email, page, location, telephone.'
131
+ c.option '-t', '--button STRING', 'Sets the action button on the notification. If no --button option is chosen, View will appear by default. Choose from: install, read, watch, browse, listen, visit.'
132
+
133
+ c.option '-e', '--environment ENV', [:production, :development], 'Environment to send push notification (production or development (default))'
134
+ c.option '-d', '--debug', 'Enables debug mode.'
135
+
136
+ c.action do |chosenDevices, options|
137
+ $DEBUG_MODE = options.debug.nil? ? false : true
138
+
139
+ # Log devices specified.
140
+ if $DEBUG_MODE
141
+ print "Debug logs will appear in ".bold + "blue".bold.blue + ".\n".bold
142
+ debug_log chosenDevices.empty? ? "No devices specified." : "Devices specified:"
143
+ chosenDevices.each do |chosenDevice|
144
+ debug_log "#{chosenDevice}"
145
+ end
146
+ print "\n"
147
+ end
148
+
149
+ # Ensures that a recipient device was specified.
150
+ say_error "Push aborted. One or more device references required.".red and abort if chosenDevices.empty?
151
+
152
+ # Ensures that data is available for the specified device.
153
+ chosenDevices.each do |chosenDevice|
154
+ if @devices[chosenDevice.to_sym].nil?
155
+ say_error "Push aborted. No data was found for #{chosenDevice}.".red and abort
156
+ end
157
+ end
158
+
159
+ debug_log "Setting environment..."
160
+ if options.environment
161
+ @environment = options.environment
162
+ say_error "Invalid environment,'#{@environment}' (should be either development or production)" and abort unless [:development, :production].include?(@environment)
163
+ else
164
+ @environment = :development
165
+ end
166
+ debug_log "environment: #{@environment}"
167
+
168
+ @app = options.app if options.app # This will be converted to the certificate filename later on.
169
+
170
+ @message = options.message
171
+ @badge = options.badge.nil? ? nil : options.badge.to_i
172
+ @sound = options.sound
173
+ @newsstand = options.newsstand ? true : false
174
+ @issue_id = options.issue.nil? ? nil : options.issue.to_i
175
+
176
+ debug_log "app: #{@app}"
177
+ debug_log "message: #{@message}"
178
+ debug_log "badge: #{@badge}"
179
+ debug_log "sound: #{@sound}"
180
+ debug_log "newsstand: #{@newsstand}"
181
+ debug_log "issue_id: #{@issue_id}"
182
+
183
+ unless @message or @badge or @sound or @newsstand
184
+ debug_log "message, badge, sound and newsstand values not specified."
185
+ @message = ask_editor "Please enter a message."
186
+ say_error "Push aborted. You must include use least one of the message, badge, sound or newsstand options.".red and abort if @message.nil?
187
+ end
188
+
189
+ if options.link
190
+ debug_log "Setting link..."
191
+ case options.link.downcase
192
+ when 'web'
193
+ @link = 'http://www.google.com/'
194
+ when 'itunes'
195
+ @link = 'itms://itunes.apple.com/gb/album/insomnia-best-faithless/id305775034'
196
+ when 'appstore'
197
+ @link = 'https://itunes.apple.com/us/app/wwdc/id640199958'
198
+ when 'email'
199
+ @link = 'mailto:testuser@pushit.com?subject=Email%20from%20a%20push%20notification%20link!'
200
+ when 'page'
201
+ @link = 'pm-page://local/54637/72/3/0.4746,0.7323,0.1845,0.5763'
202
+ when 'location'
203
+ @link = 'http://maps.apple.com/?q=cupertino'
204
+ when 'telephone'
205
+ @link = 'tel:150' # Free from a T-Mobile phone.
206
+ else
207
+ say_error "Push aborted. Invalid link type.".red and abort
208
+ end
209
+ debug_log "link: #{@link}"
210
+ end
211
+
212
+ if options.button
213
+ debug_log "Setting button..."
214
+ button_title = options.button.capitalize
215
+ unless button_title == ('Install' or 'Read' or 'Watch' or 'Browse' or 'Listen' or 'Visit')
216
+ say_error "Push aborted. Invalid button title.".red and abort
217
+ end
218
+ @button = "APNSActionButton" + button_title
219
+ debug_log "button: #{@button}"
220
+ end
221
+
222
+ @notifications = []
223
+ debug_log "Created notifications array."
224
+ chosenDevices.each do |device|
225
+ debug_log "Setting up notification for device: #{device}"
226
+ notification = Houston::Notification.new({})
227
+ notification.token = @devices[device.to_sym][:token]
228
+ notification.alert = @message if @message
229
+ notification.badge = @badge if @badge
230
+ notification.sound = @sound if @sound
231
+ notification.content_available = @newsstand if @newsstand
232
+
233
+ custom_payload = Hash.new
234
+ debug_log "Created custom payload hash."
235
+
236
+ custom_payload.merge!({:new_issue_identifier => "#{@issue_id}"}) if @issue_id
237
+ custom_payload.merge!({:pmps => {:'link-url' => "#{@link}"}}) if @link
238
+ custom_payload.merge!({'alert' => {:body => "#{@message}", :'action-loc-key' => "#{@button}"}}) if @button
239
+
240
+ debug_log "Merging custom payload..."
241
+ notification.custom_data.merge!(custom_payload)
242
+
243
+ debug_log "Adding notification to notifications array..."
244
+ @notifications << notification
245
+ debug_log "Notification added."
246
+ end
247
+ debug_log "All notifications added."
248
+
249
+ debug_log "Creating Houston Client..."
250
+ client = @environment == :production ? Houston::Client.production : Houston::Client.development
251
+ debug_log "Setting certificate..."
252
+ client.certificate = File.read(@app.nil? ? "cert.pem" : "#{@app}.pem")
253
+ # client.passphrase = password("Please enter the password for the #{@app.capitalize} application certificate:", '*')
254
+
255
+ debug_log "Beginning push operation..."
256
+ begin
257
+ client.push(*@notifications)
258
+ rescue => message
259
+ say_error "Exception sending notification: #{message}".red and abort
260
+ end
261
+ debug_log "Push complete."
262
+
263
+ say_ok "Push notification send successful!".green
264
+ end
265
+ end
266
+
267
+
metadata CHANGED
@@ -1,67 +1,74 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: PushIt
3
- version: !ruby/object:Gem::Version
4
- version: 1.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.4
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Oletha Lai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2013-06-21 00:00:00 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
11
+ date: 2013-06-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
15
14
  name: houston
16
- prerelease: false
17
- requirement: &id001 !ruby/object:Gem::Requirement
18
- requirements:
19
- - &id002
20
- - ">="
21
- - !ruby/object:Gem::Version
22
- version: "0"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
23
20
  type: :runtime
24
- version_requirements: *id001
25
- - !ruby/object:Gem::Dependency
26
- name: colored
27
21
  prerelease: false
28
- requirement: &id003 !ruby/object:Gem::Requirement
29
- requirements:
30
- - *id002
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: colored
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
31
34
  type: :runtime
32
- version_requirements: *id003
33
- description: Uses Houston (https://github.com/nomad/houston/) to send push notifications to iOS devices.
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Uses Houston (https://github.com/nomad/houston/) to send push notifications
42
+ to iOS devices.
34
43
  email: oletha@gmail.com
35
- executables:
44
+ executables:
36
45
  - pushit
37
46
  extensions: []
38
-
39
47
  extra_rdoc_files: []
40
-
41
- files:
48
+ files:
42
49
  - bin/pushit
43
50
  homepage: https://github.com/olethalai/challenges/tree/master/apns-cli
44
- licenses: []
45
-
51
+ licenses:
52
+ - MIT
46
53
  metadata: {}
47
-
48
54
  post_install_message:
49
55
  rdoc_options: []
50
-
51
- require_paths:
56
+ require_paths:
52
57
  - lib
53
- required_ruby_version: !ruby/object:Gem::Requirement
54
- requirements:
55
- - *id002
56
- required_rubygems_version: !ruby/object:Gem::Requirement
57
- requirements:
58
- - *id002
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
59
68
  requirements: []
60
-
61
69
  rubyforge_project:
62
- rubygems_version: 2.0.3
70
+ rubygems_version: 2.0.7
63
71
  signing_key:
64
72
  specification_version: 4
65
73
  summary: Sends push notifications from the command line.
66
74
  test_files: []
67
-