pushover 0.3.1 → 0.4.0
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 +46 -29
- data/bin/pushover +17 -4
- data/lib/pushover.rb +38 -22
- data/lib/pushover/optparser.rb +3 -1
- data/lib/pushover/version.rb +1 -1
- data/pushover.gemspec +15 -3
- data/whatsnew.md +11 -1
- metadata +16 -6
data/README.md
CHANGED
@@ -1,71 +1,88 @@
|
|
1
1
|
# Pushover
|
2
2
|
|
3
|
-
This gem provides a CLI and an API interface to http://pushover.net
|
4
|
-
|
5
|
-
It's main usage as a CLI, see below for specifics.
|
6
|
-
|
7
|
-
Some CLI features:
|
8
|
-
|
9
|
-
* Multiple users/applications can be stored.
|
10
|
-
* Do not need to supply either, will find the first one available.
|
11
|
-
* Supplying on the CLI will always override the stored variables.
|
3
|
+
This gem provides a CLI and an API interface to http://pushover.net.
|
12
4
|
|
13
5
|
## Installation
|
14
6
|
|
15
7
|
To install:
|
16
8
|
|
17
|
-
|
9
|
+
% gem install pushover
|
18
10
|
|
19
11
|
To use inside of an application, add this to the your gemfile:
|
20
12
|
|
21
|
-
|
13
|
+
% gem 'pushover'
|
22
14
|
|
23
15
|
and run bundle to make it available:
|
24
16
|
|
25
|
-
|
17
|
+
% bundle
|
26
18
|
|
27
19
|
## Usage
|
28
20
|
|
29
21
|
### API:
|
30
|
-
|
31
|
-
|
22
|
+
```ruby
|
23
|
+
require 'pushover'
|
24
|
+
```
|
32
25
|
|
33
26
|
To send with the very minimum amount of information.
|
34
27
|
|
35
|
-
|
28
|
+
```ruby
|
29
|
+
Pushover.notification('message', 'title', user:'USER_TOKEN', token:'APP_TOKEN')
|
30
|
+
```
|
36
31
|
|
37
32
|
Optional #configuration method:
|
33
|
+
```ruby
|
34
|
+
Pushover.configure do |config|
|
35
|
+
config.user='USER_TOKEN'
|
36
|
+
config.token='APP_TOKEN'
|
37
|
+
end
|
38
|
+
|
39
|
+
Pushover.notification('message', 'title')
|
40
|
+
```
|
41
|
+
### CLI:
|
38
42
|
|
39
|
-
|
40
|
-
config.user='USER_TOKEN'
|
41
|
-
config.token='APP_TOKEN'
|
42
|
-
end
|
43
|
+
To get help do, try ```--(h)elp```
|
43
44
|
|
44
|
-
Pushover.notification('message', 'title')
|
45
45
|
|
46
|
-
|
46
|
+
% pushover --h
|
47
|
+
|
48
|
+
To send a message.
|
47
49
|
|
48
|
-
|
50
|
+
% pushover -u user_token -a app_key message is the rest of the cli.
|
49
51
|
|
50
|
-
|
52
|
+
#### Optional parameters
|
53
|
+
|
54
|
+
* Title: Title of your notifcation
|
55
|
+
* Config_file: the file to use for stored credentials.
|
56
|
+
* Priority: Priority of the message, as an integer (for now).
|
57
|
+
* -1: low
|
58
|
+
* 0: normal
|
59
|
+
* 1: high
|
60
|
+
* Device: specific device to send the notification to.
|
61
|
+
|
62
|
+
|
63
|
+
#### Saving user and application.
|
51
64
|
|
52
65
|
You can also save and use stored information. The username/application are titles. They can be anything you want to reference them.
|
53
66
|
|
54
67
|
User:
|
55
68
|
|
56
|
-
|
69
|
+
% pushover -u user_token --save-user email@somewhere.net
|
57
70
|
|
58
71
|
Application:
|
59
72
|
|
60
|
-
|
73
|
+
% pushover -a app_key --save-app myApp
|
61
74
|
|
62
|
-
|
75
|
+
Delete coming soon.
|
63
76
|
|
64
|
-
|
77
|
+
Now, you can use these to send messages instead of having to remeber the key:
|
65
78
|
|
66
|
-
|
79
|
+
% pushover -a myApp -u email@somewhere.net Hello from somewhere!
|
67
80
|
|
68
|
-
|
81
|
+
If you don't supply the application or user name, it will use the first one in the save file.
|
82
|
+
|
83
|
+
% pushover so now I can just send an app.
|
84
|
+
|
85
|
+
Anytime you supply token's directly to the cli, it will ignore any saved information and try them. This allows you to use it as a once-off tool while keeping credentials stored.
|
69
86
|
|
70
87
|
## Testing
|
71
88
|
|
data/bin/pushover
CHANGED
@@ -24,8 +24,11 @@ if Options[:save_user]
|
|
24
24
|
puts "Save successful."
|
25
25
|
exit
|
26
26
|
end
|
27
|
-
puts "Try pushover -h for help." if Options.empty? && ARGV.empty?
|
28
27
|
|
28
|
+
if ARGV.empty?
|
29
|
+
puts "You must supply a message."
|
30
|
+
exit
|
31
|
+
end
|
29
32
|
bail = false
|
30
33
|
message = ARGV.join(" ")
|
31
34
|
|
@@ -44,11 +47,21 @@ if !User.current_user?
|
|
44
47
|
bail = true
|
45
48
|
end
|
46
49
|
exit if bail
|
47
|
-
|
48
|
-
|
50
|
+
|
51
|
+
Pushover.configure do |c|
|
52
|
+
c.user = User.current_user
|
53
|
+
c.token = App.current_app
|
54
|
+
c.message = message
|
55
|
+
c.title = Options[:title]
|
56
|
+
c.priority = Options[:priority]
|
57
|
+
c.device = Options[:device]
|
58
|
+
end
|
59
|
+
|
60
|
+
response = Pushover.notification
|
49
61
|
|
50
62
|
if response.code == "200"
|
51
63
|
puts "Message sent successfully!"
|
52
64
|
else
|
53
|
-
|
65
|
+
j = Yajl.load response.body
|
66
|
+
puts "ErrorCode (#{response.code}): #{j['errors'].first}."
|
54
67
|
end
|
data/lib/pushover.rb
CHANGED
@@ -10,27 +10,41 @@ require "pushover/optparser"
|
|
10
10
|
# The primary pushover namespace.
|
11
11
|
module Pushover
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
13
|
+
extend self
|
14
|
+
|
15
|
+
# [String] The api key to be used for the notifcation.
|
16
|
+
attr_accessor :token
|
17
|
+
# [String] of the user token currently being used.
|
18
|
+
attr_accessor :user
|
19
|
+
# [String] message the message to be sent.
|
20
|
+
attr_accessor :message
|
21
|
+
# [optional,String] Title of the message.
|
22
|
+
attr_accessor :title
|
23
|
+
# [optional,Fixnum] priority The priority of the message, from -1 to 1.
|
24
|
+
attr_accessor :priority
|
25
|
+
# [optional,String] device to recieve the message.
|
26
|
+
attr_accessor :device
|
27
|
+
|
28
|
+
# push a message to pushover, must supply all variables.
|
29
|
+
# @param [String] message The message to be sent
|
30
|
+
# @param [optional, String] title The title of the message
|
31
|
+
# @param [optional, Fixnum] priority of the message to be sent, from -1 to 1.
|
32
|
+
# @param [optional, String] device The specific device to be notified.
|
33
|
+
# @param [optional, String] app api key.
|
34
|
+
# @param [optional, String] user the user token.
|
35
|
+
# @return [String] the response from pushover.net, in json.
|
36
|
+
def notification(tokens={})
|
37
|
+
url = URI.parse("https://api.pushover.net/1/messages.json")
|
38
|
+
req = Net::HTTP::Post.new(url.path)
|
39
|
+
req.set_form_data(params.merge tokens)
|
40
|
+
res = Net::HTTP.new(url.host, url.port)
|
41
|
+
res.use_ssl = true
|
42
|
+
res.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
43
|
+
res.start {|http| http.request(req) }
|
44
|
+
end
|
45
|
+
|
46
|
+
# Adds a rails style configure method
|
47
|
+
def configure
|
34
48
|
yield self
|
35
49
|
parameters
|
36
50
|
end
|
@@ -41,14 +55,16 @@ module Pushover
|
|
41
55
|
keys.each { |k| @values.merge! k => get_var("@#{k}") }
|
42
56
|
@values
|
43
57
|
end
|
58
|
+
alias_method :params, :parameters
|
44
59
|
|
45
60
|
# Returns true or false if all parameters are set.
|
46
61
|
def parameters?
|
47
62
|
parameters.values.all?
|
48
63
|
end
|
49
64
|
|
65
|
+
# A [Array] of keys available in Pushover.
|
50
66
|
def keys
|
51
|
-
keys ||= [:token, :user]
|
67
|
+
keys ||= [:token, :user, :message, :title, :priority, :device]
|
52
68
|
end
|
53
69
|
|
54
70
|
private
|
data/lib/pushover/optparser.rb
CHANGED
@@ -12,7 +12,9 @@ module Pushover
|
|
12
12
|
on("-V", "--version", "Print version") { |version| @options[:version] = true}
|
13
13
|
on("-u", "--user USER", "Which user, can be a saved name or token.") { |o| @options[:user] = o}
|
14
14
|
on("-a", "--app APPKEY", "Which app to notify, can be a saved name or apikey.") { |o| @options[:appkey] = o}
|
15
|
-
on("-
|
15
|
+
on("-t", "--title [TITLE]", "Set the title of the notification (optional).") { |o| @options[:title] = o}
|
16
|
+
on("-p", "--priority [PRIORITY]", DecimalInteger , "Set the priority of the notification from -1 to 1 (optional).") { |o| @options[:priority] = o}
|
17
|
+
on("-d", "--device [DEVICE]", "Specify the device to send the notifcation to. (optional).") { |o| @options[:device] = o}
|
16
18
|
on("-c", "--config_file [FILE]", "Set the target config file.") {|o| @options[:config_file] = o}
|
17
19
|
on("--save-app NAME", "Saves the application to the config file under NAME.") { |o| @options[:save_app] = [@options[:appkey], o]}
|
18
20
|
on("--save-user NAME", "Saves the user to the config file under NAME.") { |o| @options[:save_user] = [@options[:user], o]}
|
data/lib/pushover/version.rb
CHANGED
data/pushover.gemspec
CHANGED
@@ -2,18 +2,30 @@
|
|
2
2
|
require File.expand_path('../lib/pushover/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
|
+
gem.name = "pushover"
|
5
6
|
gem.authors = ["Ernie Brodeur"]
|
6
7
|
gem.email = ["ebrodeur@ujami.net"]
|
8
|
+
gem.date = Time.now.strftime('%Y-%m-%d')
|
9
|
+
gem.version = Pushover::VERSION
|
10
|
+
gem.platform = Gem::Platform::RUBY
|
11
|
+
|
12
|
+
# descriptions
|
7
13
|
gem.description = "App (and CLI) to interface with pushover.net"
|
8
14
|
gem.summary = "This gem will provide both an API and CLI interface to pushover.net."
|
9
|
-
gem.homepage = ""
|
15
|
+
gem.homepage = "https://github.com/erniebrodeur/pushover"
|
10
16
|
|
17
|
+
#files
|
11
18
|
gem.files = `git ls-files`.split($\)
|
12
19
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
20
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
-
gem.name = "pushover"
|
15
21
|
gem.require_paths = ["lib"]
|
16
|
-
|
22
|
+
|
23
|
+
# documentation
|
24
|
+
gem.extra_rdoc_files = Dir.glob("*.md")
|
25
|
+
gem.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Pushover", "--main", "README.md", "--encoding=UTF-8"]
|
26
|
+
gem.has_rdoc = 'yard'
|
27
|
+
|
28
|
+
# dependencies.
|
17
29
|
gem.add_development_dependency('pry')
|
18
30
|
gem.add_runtime_dependency('yajl-ruby')
|
19
31
|
end
|
data/whatsnew.md
CHANGED
@@ -1,7 +1,17 @@
|
|
1
|
+
Unreleased:
|
2
|
+
* Added priority and device specification.
|
3
|
+
* Moved all the variables, including message, into the configure block.
|
4
|
+
* Documentation push, 100% passage and updated for yardoc.
|
5
|
+
* Updated the gemspec with some more information.
|
6
|
+
* Better output for error messages.
|
7
|
+
0.3.1
|
8
|
+
* Added benwoody's changes back to the system, this allows for some nifty generators.
|
9
|
+
* Fixed the nasty bug where it wasn't working once installed.
|
1
10
|
0.3.0
|
2
11
|
* No longer need to supply credentials at all if you have some saved.
|
3
12
|
* Fixed up a ton of documentation and spelling mistakes.
|
4
13
|
* Various bug fixes.
|
5
14
|
* About thirty percent of the tests are complete.
|
6
|
-
* Added
|
15
|
+
* Added convenience methods for App.current_app and User.current_user to supply the correctly inherited credentials.
|
7
16
|
* Will only create the save directory if you attempt to save.
|
17
|
+
* You can specify config on the command line via --config_file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pushover
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
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-10-
|
12
|
+
date: 2012-10-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pry
|
@@ -49,7 +49,10 @@ email:
|
|
49
49
|
executables:
|
50
50
|
- pushover
|
51
51
|
extensions: []
|
52
|
-
extra_rdoc_files:
|
52
|
+
extra_rdoc_files:
|
53
|
+
- README.md
|
54
|
+
- whatsnew.md
|
55
|
+
- dev_notes.md
|
53
56
|
files:
|
54
57
|
- .gitignore
|
55
58
|
- Gemfile
|
@@ -73,10 +76,17 @@ files:
|
|
73
76
|
- spec/spec_helper.rb
|
74
77
|
- spec/user_spec.rb
|
75
78
|
- whatsnew.md
|
76
|
-
homepage:
|
79
|
+
homepage: https://github.com/erniebrodeur/pushover
|
77
80
|
licenses: []
|
78
81
|
post_install_message:
|
79
|
-
rdoc_options:
|
82
|
+
rdoc_options:
|
83
|
+
- --line-numbers
|
84
|
+
- --inline-source
|
85
|
+
- --title
|
86
|
+
- Pushover
|
87
|
+
- --main
|
88
|
+
- README.md
|
89
|
+
- --encoding=UTF-8
|
80
90
|
require_paths:
|
81
91
|
- lib
|
82
92
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -105,4 +115,4 @@ test_files:
|
|
105
115
|
- spec/pushover_spec.rb
|
106
116
|
- spec/spec_helper.rb
|
107
117
|
- spec/user_spec.rb
|
108
|
-
has_rdoc:
|
118
|
+
has_rdoc: yard
|