prowly 0.2.4 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ ## Ruby 1.9 compatibility
2
+ * Contributed by [Chris Hoffman](https://github.com/cehoffman "cehoffman")
3
+
4
+ ## Prowl API v1.2
5
+ * Contributed by [Ken Pepple](https://github.com/slashk "slashk")
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 Rafael Magaña
1
+ Copyright (c) 2009 Rafael Magana
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -8,12 +8,15 @@ Yet another Ruby interface to Prowl with command line utility
8
8
 
9
9
  == Usage as a Gem
10
10
 
11
+ Sending a notification via prowly gem
12
+
11
13
  Prowly.notify do |n| # :notify is an alias of :add
12
14
  n.apikey = "apikey" or n.apikeys = ["apikey_1", "apikey_2", "apikey_n"]
13
15
  n.priority = Prowly::Notification::Priority::MODERATE
14
16
  n.application = "Prowly"
15
17
  n.event = "Notification"
16
18
  n.description = "Your server is under attack!!!"
19
+ n.url = "http://www.myserver.com"
17
20
  end
18
21
 
19
22
  notification = Prowly::Notification.new(:apikey => "apikey", :application => "Prowly", :description => "Testing...")
@@ -21,6 +24,30 @@ Yet another Ruby interface to Prowl with command line utility
21
24
 
22
25
  result = Prowly.notify(notification)
23
26
 
27
+ Obtaining a user's API key with the prowly gem is a three step process:
28
+
29
+ - provider gets a token with their provider key via the retrieve_token call
30
+ - user approves the request at a special web URL (in their browser)
31
+ - provider gets user's API key with their provider key and the token via retrieve_apikey
32
+
33
+ This is somewhat similar to the OAuth scheme.
34
+
35
+ # obtain a token first with your provider key first
36
+ provider_key = "2b33d3f3f8522aaed4b2fc44382f1519791db6a2"
37
+ token_result = Prowly.retrieve_token(provider_key)
38
+ if token_result.succeeded?
39
+ # if the call succeeded, the user will need to approve the request in their browser
40
+ puts "go to this #{token_result.url} to approve this request"
41
+ puts "then press <ENTER> to continue "
42
+ dummy = STDIN.gets
43
+
44
+ apikey_result = Prowly.retrieve_apikey(options[:provider], token_result.token)
45
+
46
+ if apikey_result.succeeded?
47
+ puts "The user apikey is #{apikey_result.apikey}"
48
+ end
49
+ end
50
+
24
51
  == Usage in the command line
25
52
 
26
53
  $prowly -h # help
@@ -33,15 +60,17 @@ Yet another Ruby interface to Prowl with command line utility
33
60
  -d, --description DESCRIPTION Description
34
61
  -e, --event EVENT Event
35
62
  -p, --priority PRIORITY VERY_LOW, MODERATE, NORMAL (default), HIGH, EMERGENCY
63
+ -u, --url URL for redirect (v1.2 feature)
36
64
  -v, --version Print the version number and exit
37
-
65
+
38
66
  If you only specify the apikey prowly will use the defaults:
39
-
67
+
40
68
  :description => "I am testing Prowly, and it works!"
41
69
  :event => "Prowly notification"
42
70
  :application => "Prowly"
43
71
  :priority => NORMAL
44
-
72
+ :url => nil
73
+
45
74
  == Handling the Prowl API response
46
75
 
47
76
  ON SUCCESS
@@ -50,9 +79,9 @@ Yet another Ruby interface to Prowl with command line utility
50
79
 
51
80
  if result.succeeded?
52
81
  result.remaining # => "977"
53
- resetdate.resetdate # => "1266272588"
82
+ result.resetdate # => "1266272588"
54
83
  else
55
- resetdate.message # =>
84
+ result.message # =>
56
85
  end
57
86
 
58
87
  ON ERROR
@@ -61,12 +90,10 @@ Yet another Ruby interface to Prowl with command line utility
61
90
 
62
91
  if result.succeeded?
63
92
  result.remaining # =>
64
- resetdate.resetdate # =>
93
+ result.resetdate # =>
65
94
  else
66
- resetdate.message # => "Invalid API Key(s)" <= This depends on the message sent by the prowl API
95
+ result.message # => "Invalid API Key(s)" <= This depends on the message sent by the prowl API
67
96
  end
68
-
69
-
70
97
 
71
98
  == Note on Patches/Pull Requests
72
99
 
@@ -78,6 +105,4 @@ Yet another Ruby interface to Prowl with command line utility
78
105
  (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
79
106
  * Send me a pull request. Bonus points for topic branches.
80
107
 
81
- == Copyright
82
-
83
- Copyright (c) 2010 Rafael Magaña. See LICENSE for details.
108
+ See LICENSE for details
data/Rakefile CHANGED
@@ -10,9 +10,7 @@ begin
10
10
  gem.description = "The Prowly gem is a simple wrapper to the Prowl API, you can use it to send messages to your iPhone in a Rails or pure Ruby application."
11
11
  gem.email = "raf.magana@gmail.com"
12
12
  gem.homepage = "http://github.com/rafmagana/prowly"
13
- gem.authors = ["Rafael Magaña"]
14
- gem.add_development_dependency "shoulda", ">= 0"
15
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
13
+ gem.authors = ["Rafael Magana"]
16
14
  end
17
15
  Jeweler::GemcutterTasks.new
18
16
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.4
1
+ 0.3.0
data/bin/prowly CHANGED
@@ -15,7 +15,8 @@ options = {
15
15
  :description => "I am testing Prowly, and it works!",
16
16
  :event => "Prowly notification",
17
17
  :application => "Prowly",
18
- :priority => "NORMAL"}
18
+ :priority => "NORMAL",
19
+ :url => nil}
19
20
 
20
21
 
21
22
  opts = OptionParser.new do |opts|
@@ -51,6 +52,10 @@ EOF
51
52
  options[:priority] = priority
52
53
  end
53
54
 
55
+ opts.on("-uURL", "--url URL", "URL") do |url|
56
+ options[:url] = url
57
+ end
58
+
54
59
  opts.on("-v", "--version", "Print the version number and exit") do
55
60
  options[:version] = true
56
61
  end
@@ -88,6 +93,7 @@ result = Prowly.notify do |n|
88
93
  n.application = options[:application]
89
94
  n.event = options[:event]
90
95
  n.description = options[:description]
96
+ n.url = options[:url]
91
97
  end
92
98
 
93
99
  if result.succeeded?
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ STDOUT.sync = true
4
+
5
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
6
+
7
+ require 'rubygems'
8
+ require 'prowly'
9
+ require 'optparse'
10
+
11
+ options = {}
12
+
13
+ ORIGINAL_ARGV = ARGV.dup
14
+
15
+ opts = OptionParser.new do |opts|
16
+ opts.banner = <<-EOF
17
+ Usage:
18
+ prowly_retrieve -p providerkey
19
+
20
+ Options:
21
+ EOF
22
+
23
+ opts.on("-pPROVIDERKEY", "--provider PRIORITY", "Provider Key") do |priority|
24
+ options[:provider] = priority
25
+ end
26
+
27
+ opts.on("-v", "--version", "Print the version number and exit") do
28
+ options[:version] = true
29
+ end
30
+ end
31
+
32
+ opts.parse!
33
+
34
+ if options[:version]
35
+ abort("Version " + Prowly.version)
36
+ end
37
+
38
+ token_result = Prowly.retrieve_token(options[:provider])
39
+
40
+ if token_result.succeeded?
41
+ puts "go to this #{token_result.url} to approve this request"
42
+ puts "then press <ENTER> to continue "
43
+ dummy = STDIN.gets
44
+
45
+ apikey_result = Prowly.retrieve_apikey(options[:provider], token_result.token)
46
+
47
+ if apikey_result.succeeded?
48
+ puts "The user apikey is #{apikey_result.apikey}"
49
+ exit(0)
50
+ else
51
+ puts "Error: #{apikey_result.message}"
52
+ exit(1)
53
+ end
54
+ else
55
+ puts "Error: #{token_result.message}"
56
+ exit(1)
57
+ end
@@ -1,26 +1,3 @@
1
- #--
2
- # Copyright (c) 2010 Rafael Magaña Ávalos
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining
5
- # a copy of this software and associated documentation files (the
6
- # "Software"), to deal in the Software without restriction, including
7
- # without limitation the rights to use, copy, modify, merge, publish,
8
- # distribute, sublicense, and/or sell copies of the Software, and to
9
- # permit persons to whom the Software is furnished to do so, subject to
10
- # the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be
13
- # included in all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
- #++
23
-
24
1
  require 'prowly/interface'
25
2
  require 'prowly/notification'
26
3
 
@@ -53,6 +30,14 @@ module Prowly
53
30
  def verify(apikey)
54
31
  api.call Interface::Command::VERIFY, "apikey=#{apikey}"
55
32
  end
33
+
34
+ def retrieve_token(providerkey)
35
+ api.call Interface::Command::RETRIEVE_TOKEN, "providerkey=#{providerkey}"
36
+ end
37
+
38
+ def retrieve_apikey(providerkey, token)
39
+ api.call Interface::Command::RETRIEVE_APIKEY, "providerkey=#{providerkey}&token=#{token}"
40
+ end
56
41
 
57
42
  def valid_key?(key)
58
43
  result = verify(key)
@@ -1,26 +1,3 @@
1
- #--
2
- # Copyright (c) 2010 Rafael Magaña Ávalos
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining
5
- # a copy of this software and associated documentation files (the
6
- # "Software"), to deal in the Software without restriction, including
7
- # without limitation the rights to use, copy, modify, merge, publish,
8
- # distribute, sublicense, and/or sell copies of the Software, and to
9
- # permit persons to whom the Software is furnished to do so, subject to
10
- # the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be
13
- # included in all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
- #++
23
-
24
1
  require 'net/https'
25
2
  require 'prowly/response'
26
3
  require 'prowly/notification'
@@ -41,7 +18,7 @@ module Prowly
41
18
  include Singleton
42
19
 
43
20
  def initialize
44
- @url = "https://prowl.weks.net/publicapi"
21
+ @url = "https://api.prowlapp.com/publicapi"
45
22
  end
46
23
 
47
24
  ## Make the actual call to the prowl api
@@ -68,6 +45,8 @@ module Prowly
68
45
  module Command
69
46
  ADD = "add"
70
47
  VERIFY = "verify"
48
+ RETRIEVE_TOKEN = "retrieve/token"
49
+ RETRIEVE_APIKEY = "retrieve/apikey"
71
50
  end
72
51
 
73
52
  ## EXCEPTIONS
@@ -58,7 +58,7 @@ module Prowly
58
58
  ## EXCEPTIONS
59
59
  class PriorityNotAvailable < RuntimeError; end
60
60
 
61
- attr_accessor :providerkey, :priority, :event
61
+ attr_accessor :providerkey, :priority, :event, :url
62
62
 
63
63
  def initialize(params = {})
64
64
  @apikey = (params[:apikey] || params[:apikeys]) || "fffffffffffffffffffffffffffffffffffffffff"
@@ -66,6 +66,7 @@ module Prowly
66
66
  @event = params[:event] || "Prowly is working!!"
67
67
  @description = params[:description] || "This is the default description"
68
68
  @priority = params[:priority] || Priority::NORMAL
69
+ @url = params[:url] || nil
69
70
  super
70
71
  end
71
72
 
@@ -4,7 +4,7 @@ module Prowly
4
4
 
5
5
  #This is a Prowl API response wrapper
6
6
  class Response
7
-
7
+
8
8
  attr_writer :response
9
9
  attr_accessor :http_response
10
10
 
@@ -17,28 +17,29 @@ module Prowly
17
17
  def self.map_xml(response)
18
18
  response_info = parse_xml(response)
19
19
 
20
- #define dynamic methods based on the prowl api response
21
- #posible methods on success: code, remaining, resetdate
22
- #posible methods on error: code
23
- response_info.attributes.each do |key, value|
24
- add_instance_method(key, value)
20
+ response_info.elements.each do |r|
21
+ #define dynamic methods based on the prowl api response
22
+ #posible methods on success: code, remaining, resetdate
23
+ #posible methods on error: code
24
+ r.attributes.each do |key, value|
25
+ # puts "attribute #{key}: #{value}"
26
+ if key == "code"
27
+ add_instance_method(:status, value == "200" ? "success" : "error")
28
+ #define a method named status and it'll return "success" or "error"
29
+ boolean_status = value == "200" ? true : false
30
+ add_instance_method(:succeeded?, boolean_status)
31
+ add_instance_method(:message, response_info[1].text) unless boolean_status
32
+ end
33
+ add_instance_method(key, value)
34
+ end
25
35
  end
26
36
 
27
- response_info_name = response_info.name
28
- #define a method named status and it'll return "success" or "error"
29
- add_instance_method(:status, response_info_name)
30
-
31
- boolean_status = response_info_name == "success" ? true : false
32
-
33
- add_instance_method(:message, response_info.text) unless boolean_status
34
-
35
- add_instance_method(:succeeded?, boolean_status)
36
37
  true
37
38
  end
38
39
 
39
40
  def self.parse_xml(response)
40
41
  data = REXML::Document.new response
41
- data.root[1]
42
+ data.root
42
43
  end
43
44
 
44
45
  #define dynamic methods
@@ -46,7 +47,7 @@ module Prowly
46
47
  define_method(name) { content }
47
48
  end
48
49
 
49
- ## ERRORCODES are documented in http://prowl.weks.net/api.php
50
+ ## ERRORCODES are documented in http://www.prowlapp.com/api.php
50
51
  module ErrorCode
51
52
  BAD = 400 #Bad request, the parameters you provided did not validate, see ERRORMESSAGE.
52
53
  NOT_AUTHORIZED = 401 #Not authorized, the API key given is not valid, and does not correspond to a user.
@@ -1,47 +1,46 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{prowly}
8
- s.version = "0.2.4"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Rafael Magaña"]
12
- s.date = %q{2010-07-28}
13
- s.default_executable = %q{prowly}
11
+ s.authors = ["Rafael Magana"]
12
+ s.date = %q{2011-03-28}
14
13
  s.description = %q{The Prowly gem is a simple wrapper to the Prowl API, you can use it to send messages to your iPhone in a Rails or pure Ruby application.}
15
14
  s.email = %q{raf.magana@gmail.com}
16
- s.executables = ["prowly"]
15
+ s.executables = ["prowly_retrieve_apikey", "prowly"]
17
16
  s.extra_rdoc_files = [
18
17
  "LICENSE",
19
- "README.rdoc"
18
+ "README.rdoc"
20
19
  ]
21
20
  s.files = [
22
21
  ".document",
23
- ".gitignore",
24
- "LICENSE",
25
- "README.rdoc",
26
- "Rakefile",
27
- "VERSION",
28
- "bin/prowly",
29
- "lib/prowly.rb",
30
- "lib/prowly/interface.rb",
31
- "lib/prowly/notification.rb",
32
- "lib/prowly/response.rb",
33
- "prowly.gemspec",
34
- "test/helper.rb",
35
- "test/test_prowly.rb"
22
+ "CONTRIBUTORS.md",
23
+ "LICENSE",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "bin/prowly",
28
+ "bin/prowly_retrieve_apikey",
29
+ "lib/prowly.rb",
30
+ "lib/prowly/interface.rb",
31
+ "lib/prowly/notification.rb",
32
+ "lib/prowly/response.rb",
33
+ "prowly.gemspec",
34
+ "test/helper.rb",
35
+ "test/test_prowly.rb"
36
36
  ]
37
37
  s.homepage = %q{http://github.com/rafmagana/prowly}
38
- s.rdoc_options = ["--charset=UTF-8"]
39
38
  s.require_paths = ["lib"]
40
39
  s.rubygems_version = %q{1.3.7}
41
40
  s.summary = %q{A Ruby interface to Prowl (http://prowl.weks.net/)}
42
41
  s.test_files = [
43
42
  "test/helper.rb",
44
- "test/test_prowly.rb"
43
+ "test/test_prowly.rb"
45
44
  ]
46
45
 
47
46
  if s.respond_to? :specification_version then
@@ -49,12 +48,9 @@ Gem::Specification.new do |s|
49
48
  s.specification_version = 3
50
49
 
51
50
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
52
- s.add_development_dependency(%q<shoulda>, [">= 0"])
53
51
  else
54
- s.add_dependency(%q<shoulda>, [">= 0"])
55
52
  end
56
53
  else
57
- s.add_dependency(%q<shoulda>, [">= 0"])
58
54
  end
59
55
  end
60
56
 
@@ -1,6 +1,5 @@
1
1
  require 'rubygems'
2
2
  require 'test/unit'
3
- require 'shoulda'
4
3
 
5
4
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
@@ -1,7 +1,80 @@
1
1
  require 'helper'
2
2
 
3
3
  class TestProwly < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
4
+
5
+ # TODO(slashk): add mock/stubs to simulate calls
6
+
7
+ def test_parse_good_retrieve_token_response
8
+ xml_response =
9
+ <<EOF
10
+ <?xml version="1.0" encoding="UTF-8"?>
11
+ <prowl>
12
+ <success code="200" remaining="999" resetdate="1300659778" />
13
+ <retrieve token="2e948b117a965a0ead02b106a18fb038b7f05809" url="https://www.prowlapp.com/retrieve.php?token=2e948b117a965a0ead02b106a18fb038b7f05809" />
14
+ </prowl>
15
+ EOF
16
+ full_http_response = "200"
17
+ rt = Prowly::Response.new(xml_response, full_http_response)
18
+ assert_equal(rt.code, "200")
19
+ assert_equal(true, rt.succeeded?)
20
+ assert_equal("2e948b117a965a0ead02b106a18fb038b7f05809", rt.token)
21
+ end
22
+
23
+ def test_parse_good_notify_response
24
+ xml_response =
25
+ <<EOF
26
+ <?xml version="1.0" encoding="UTF-8"?>
27
+ <prowl>
28
+ <success code="200" remaining="999" resetdate="1300659778" />
29
+ </prowl>
30
+ EOF
31
+ full_http_response = "200"
32
+ rt = Prowly::Response.new(xml_response, full_http_response)
33
+ assert_equal(rt.code, "200")
34
+ assert_equal(true, rt.succeeded?)
35
+ end
36
+
37
+ def test_parse_error_notify_response
38
+ xml_response =
39
+ <<EOF
40
+ <?xml version="1.0" encoding="UTF-8"?>
41
+ <prowl>
42
+ <error code="401">the API key given is not valid</error>
43
+ </prowl>
44
+ EOF
45
+ full_http_response = "401"
46
+ rt = Prowly::Response.new(xml_response, full_http_response)
47
+ assert_equal(rt.message, "the API key given is not valid")
6
48
  end
49
+
50
+ def test_verify_good_apikey_response
51
+ xml_response =
52
+ <<EOF
53
+ <?xml version="1.0" encoding="UTF-8"?>
54
+ <prowl>
55
+ <success code="200" remaining="998" resetdate="1300665013" />
56
+ </prowl>
57
+ EOF
58
+ full_http_response = "200"
59
+ rt = Prowly::Response.new(xml_response, full_http_response)
60
+ assert_equal(rt.code, "200")
61
+ assert_equal(true, rt.succeeded?)
62
+ end
63
+
64
+ def test_good_retrieve_apikey_response
65
+ xml_response =
66
+ <<EOF
67
+ <?xml version="1.0" encoding="UTF-8"?>
68
+ <prowl>
69
+ <success code="200" remaining="999" resetdate="1300659778" />
70
+ <retrieve apikey="15c501d2e65cfd46316513da47355283db4652fc" />
71
+ </prowl>
72
+ EOF
73
+ full_http_response = "200"
74
+ rt = Prowly::Response.new(xml_response, full_http_response)
75
+ assert_equal(rt.code, "200")
76
+ assert_equal(true, rt.succeeded?)
77
+ assert_equal("15c501d2e65cfd46316513da47355283db4652fc", rt.apikey)
78
+ end
79
+
7
80
  end
metadata CHANGED
@@ -1,38 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prowly
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 19
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
- - 2
8
- - 4
9
- version: 0.2.4
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
10
11
  platform: ruby
11
12
  authors:
12
- - "Rafael Maga\xC3\xB1a"
13
+ - Rafael Magana
13
14
  autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-07-28 00:00:00 -05:00
18
- default_executable: prowly
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: shoulda
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
31
- type: :development
32
- version_requirements: *id001
18
+ date: 2011-03-28 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies: []
21
+
33
22
  description: The Prowly gem is a simple wrapper to the Prowl API, you can use it to send messages to your iPhone in a Rails or pure Ruby application.
34
23
  email: raf.magana@gmail.com
35
24
  executables:
25
+ - prowly_retrieve_apikey
36
26
  - prowly
37
27
  extensions: []
38
28
 
@@ -41,12 +31,13 @@ extra_rdoc_files:
41
31
  - README.rdoc
42
32
  files:
43
33
  - .document
44
- - .gitignore
34
+ - CONTRIBUTORS.md
45
35
  - LICENSE
46
36
  - README.rdoc
47
37
  - Rakefile
48
38
  - VERSION
49
39
  - bin/prowly
40
+ - bin/prowly_retrieve_apikey
50
41
  - lib/prowly.rb
51
42
  - lib/prowly/interface.rb
52
43
  - lib/prowly/notification.rb
@@ -59,8 +50,8 @@ homepage: http://github.com/rafmagana/prowly
59
50
  licenses: []
60
51
 
61
52
  post_install_message:
62
- rdoc_options:
63
- - --charset=UTF-8
53
+ rdoc_options: []
54
+
64
55
  require_paths:
65
56
  - lib
66
57
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -68,6 +59,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
68
59
  requirements:
69
60
  - - ">="
70
61
  - !ruby/object:Gem::Version
62
+ hash: 3
71
63
  segments:
72
64
  - 0
73
65
  version: "0"
@@ -76,6 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
68
  requirements:
77
69
  - - ">="
78
70
  - !ruby/object:Gem::Version
71
+ hash: 3
79
72
  segments:
80
73
  - 0
81
74
  version: "0"
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC