five_mobile_push 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -2,3 +2,5 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ doc/*
6
+ .yardoc
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ --no-private lib/**/*.rb
@@ -19,10 +19,11 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_dependency "multi_json", ["~> 0.0.5"]
23
- s.add_dependency "faraday", ["~> 0.5.7"]
24
- s.add_development_dependency "rspec", ["~> 2.5.0"]
22
+ s.add_dependency "multi_json", ["~> 0.0.5"]
23
+ s.add_dependency "faraday", ["~> 0.5.7"]
24
+ s.add_development_dependency "rspec", ["~> 2.5.0"]
25
25
  s.add_development_dependency "yajl-ruby"
26
26
  s.add_development_dependency "webmock"
27
27
  s.add_development_dependency "fabrication", ["~> 0.9.5"]
28
+ s.add_development_dependency "yard", ["~> 0.6.5"]
28
29
  end
@@ -1,34 +1,120 @@
1
1
  module FiveMobilePush
2
+ # @todo Validate provided platforms
3
+ # @todo Simplify platform selection
2
4
  class Notifier
3
5
 
6
+ # The following are platforms supported by the Five Mobile Push platform
7
+
8
+ ALL = "all"
9
+ IPHONE = "iphone"
10
+ BLACKBERRY = "blackberry"
11
+ ANDROID = "android"
12
+
13
+ # @param [FiveMobilePush::Client] client The Client object to use when
14
+ # sending notices
4
15
  def initialize(client)
5
16
  @client = client
6
17
  end
7
18
 
19
+ # Broadcast a notification to one or more platforms of an application.
20
+ #
21
+ # == Supported Platforms
22
+ #
23
+ # * all
24
+ # * iphone
25
+ # * blackberry
26
+ # * android
27
+ #
28
+ # @param [Array<String>, String] platforms Any of the supported platforms.
29
+ #
30
+ # @yield [message] Provides a mini-DSL for constructing the message to
31
+ # broadcast.
32
+ #
33
+ # @yieldparam [Message] message (see Message)
34
+ #
35
+ # @example Simple usage
36
+ # n = FiveMobilePush::Notifier.new(client)
37
+ # n.broadcast(FiveMobilePush::Notifier::ALL) do |message|
38
+ # message.body "Downtime this weekend"
39
+ # end
8
40
  def broadcast(platforms, &block)
9
41
  @client.post 'notify/broadcast',
10
42
  :platforms => build_platforms_string(platforms),
11
- :payload => capture_payload(&block).to_json
43
+ :payload => capture_message(&block).to_json
12
44
  end
13
45
 
46
+ # Send a notification to any number of specified devices
47
+ #
48
+ # @param [Array<String>] devices A list of device ID values
49
+ #
50
+ # @yield [message] Provides a mini-DSL for constructing the message to
51
+ # broadcast.
52
+ #
53
+ # @yieldparam [Message] message (see Message)
54
+ #
55
+ # @example Simple usage
56
+ # n = FiveMobilePush::Notifier.new(client)
57
+ # n.notify_devices(['1234']) do |message|
58
+ # message.body "Downtime this weekend"
59
+ # end
14
60
  def notify_devices(devices, &block)
15
61
  @client.post 'notify/toDevices',
16
62
  :id_type => FiveMobilePush::DEFAULT_ID_TYPE,
17
63
  :id_values => devices.join(','),
18
- :payload => capture_payload(&block).to_json
64
+ :payload => capture_message(&block).to_json
19
65
  end
20
66
 
67
+ # Notifies any device registered with the provided tags.
68
+ #
69
+ # == Supported Platforms
70
+ #
71
+ # * all
72
+ # * iphone
73
+ # * blackberry
74
+ # * android
75
+ #
76
+ # @param [Array<String>, String] platforms Any of the supported platforms.
77
+ # @param [Array<String>] tags Any tag that is registered
78
+ #
79
+ # @yield [message] Provides a mini-DSL for constructing the message to
80
+ # broadcast.
81
+ #
82
+ # @yieldparam [Message] message (see Message)
83
+ #
84
+ # @example Simple usage
85
+ # n = FiveMobilePush::Notifier.new(client)
86
+ # n.notify_by_tags(FiveMobilePush::Notifier::ALL, ['muffin', 'bacon']) do |message|
87
+ # message.body "Downtime this weekend"
88
+ # end
21
89
  def notify_by_tags(platforms, tags, &block)
22
90
  @client.post 'notify/toTags',
23
91
  :platforms => build_platforms_string(platforms),
24
92
  :tags => tags.join(','),
25
- :payload => capture_payload(&block).to_json
93
+ :payload => capture_message(&block).to_json
94
+ end
95
+
96
+ # Simple proxy class for building messages. Do not use this class directly.
97
+ class Message
98
+ # @param [String] body The text to send
99
+ def body(body)
100
+ @body = body
101
+ end
102
+
103
+ # @param [Hash] meta_data (optional) The optional meta data to send.
104
+ def meta_data(meta_data)
105
+ @meta_data = meta_data
106
+ end
107
+
108
+ # @private
109
+ def to_payload
110
+ FiveMobilePush::Payload.new(@message, @meta_data)
111
+ end
26
112
  end
27
113
 
28
114
  private
29
115
 
30
- def capture_payload(&block)
31
- payload_proxy = PayloadProxy.new
116
+ def capture_message(&block)
117
+ payload_proxy = Message.new
32
118
  block.call(payload_proxy)
33
119
  payload_proxy.to_payload
34
120
  end
@@ -41,19 +127,5 @@ module FiveMobilePush
41
127
  end
42
128
  end
43
129
 
44
- class PayloadProxy
45
- def message(message)
46
- @message = message
47
- end
48
-
49
- def meta_data(meta_data)
50
- @meta_data = meta_data
51
- end
52
-
53
- def to_payload
54
- FiveMobilePush::Payload.new(@message, @meta_data)
55
- end
56
- end
57
-
58
130
  end
59
131
  end
@@ -1,4 +1,6 @@
1
1
  module FiveMobilePush
2
+ # @private Used internally. You'll never use this class directly.
3
+ # Documented for the benefit of contributors.
2
4
  class Payload
3
5
  attr_reader :message
4
6
  attr_accessor :meta_data
@@ -1,3 +1,3 @@
1
1
  module FiveMobilePush
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: five_mobile_push
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.0
5
+ version: 0.3.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Kevin Faustino
@@ -80,6 +80,17 @@ dependencies:
80
80
  version: 0.9.5
81
81
  type: :development
82
82
  version_requirements: *id006
83
+ - !ruby/object:Gem::Dependency
84
+ name: yard
85
+ prerelease: false
86
+ requirement: &id007 !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ version: 0.6.5
92
+ type: :development
93
+ version_requirements: *id007
83
94
  description: API wrapper for Five Mobile Push notification service
84
95
  email:
85
96
  - kevin.faustino@gmail.com
@@ -93,6 +104,7 @@ extra_rdoc_files: []
93
104
  files:
94
105
  - .gitignore
95
106
  - .rspec
107
+ - .yardopts
96
108
  - Gemfile
97
109
  - Rakefile
98
110
  - five_mobile_push.gemspec