PushIt 1.0.2 → 1.0.4

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.
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
-