lleidasms 1.1.0 → 1.1.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -48,6 +48,8 @@ gem 'lleidasms'
48
48
 
49
49
  # Examples
50
50
  ## Demo
51
+ From the command line
52
+
51
53
  ```shell
52
54
  lleidasms YOUR_USER YOUR_PASSWORD
53
55
  ```
@@ -96,5 +98,54 @@ or
96
98
  end
97
99
  ```
98
100
 
101
+ ### Special method raw command
102
+ Allow you to send to server any command not implemented.
103
+
104
+ ```ruby
105
+ cmd_raw 'PING', time
106
+ ```
107
+
108
+ ### Special event :unknow
109
+ To detect unknow commands.
110
+
111
+ ```ruby
112
+ event :unknow, :new_unknow
113
+
114
+ def new_unknow label, cmd, args
115
+ end
116
+ ```
117
+
118
+ ### Enabling debug
119
+ Use debug to capture debug events at :in, :out or :all messages
120
+
121
+ ```ruby
122
+ class SMS < Lleidasms::Gateway
123
+ debug :all, :debugger
124
+ debug :in, :debugger_in
125
+ debug :out, :debugger_out
126
+
127
+ def debugger line
128
+ puts line
129
+ end
130
+
131
+ def debugger_in line
132
+ puts line
133
+ end
134
+
135
+ def debugger_out line
136
+ puts line
137
+ end
138
+ end
139
+
140
+ sms = SMS.new
141
+ sms.connect
142
+ sms.listener
143
+ sms.cmd_login <YOUR_USER>, <YOUR_PASSWORD>
144
+
145
+ while sms.conected?
146
+ # Some tasks
147
+ end
148
+ ```
149
+
99
150
  # License
100
151
  Released under the MIT license: [http://www.opensource.org/licenses/MIT](http://www.opensource.org/licenses/MIT)
@@ -6,8 +6,10 @@ module Lleidasms
6
6
  event :all, :new_event
7
7
  event :acuse, :new_acuse
8
8
  event :incomingmo, :new_incomingmo
9
+ event :unknow, :new_unknow
10
+ debug :all, :debugger
9
11
 
10
- attr_accessor :timeout
12
+ attr_accessor :timeout, :debug
11
13
 
12
14
  def connect user, password, timeout = 2.4
13
15
  super()
@@ -16,6 +18,12 @@ module Lleidasms
16
18
  self.timeout= timeout
17
19
  @acuse = []
18
20
  @incomingmo = []
21
+ @unknow = []
22
+ @debug = false
23
+ end
24
+
25
+ def debugger line
26
+ puts line
19
27
  end
20
28
 
21
29
  def saldo
@@ -24,7 +32,7 @@ module Lleidasms
24
32
  return @response_args[0]
25
33
  end
26
34
 
27
- # *number*
35
+ # number
28
36
  # The telephone number
29
37
  def tarifa number
30
38
  cmd_tarifa number
@@ -32,11 +40,11 @@ module Lleidasms
32
40
  return @response_args
33
41
  end
34
42
 
35
- # *number*
43
+ # number
36
44
  # The telephone number
37
- # *message*
45
+ # message
38
46
  # The string to send
39
- # *opts*
47
+ # opts
40
48
  # - nowait: (default false) no wait for response
41
49
  # - sender: The sender telephone number
42
50
  # - date: Date and time to send message in format YYYYMMDDhhmm[+-]ZZzz
@@ -83,11 +91,11 @@ module Lleidasms
83
91
  end
84
92
  end
85
93
 
86
- # *number*
94
+ # number
87
95
  # The telephone number
88
- # *url*
96
+ # url
89
97
  # The URL to content. Usually a image, tone or application
90
- # *message*
98
+ # message
91
99
  # Information text before downloading content
92
100
  def send_waplink number, url, message
93
101
  cmd_waplink number, url, message
@@ -136,7 +144,7 @@ module Lleidasms
136
144
  end
137
145
 
138
146
  # Set file content (base64 encded) as message for the massive send list
139
- # *data* file contenten base64 encoded
147
+ # data file contenten base64 encoded
140
148
  # Available types:
141
149
  # * :jpeg image JPEG
142
150
  # * :gif image GIF
@@ -224,6 +232,10 @@ module Lleidasms
224
232
  @incomingmo.count > 0
225
233
  end
226
234
 
235
+ def unknow?
236
+ @unknow.count > 0
237
+ end
238
+
227
239
  # Return hash or false
228
240
  # - :id
229
241
  # - :destino
@@ -248,6 +260,12 @@ module Lleidasms
248
260
  }
249
261
  end
250
262
 
263
+ # Return array or false
264
+ def unknow
265
+ return false unless unknow?
266
+ @unknow.shift
267
+ end
268
+
251
269
  # - wait: (default false) no wait for response
252
270
  # - action
253
271
  # * :begin
@@ -343,5 +361,10 @@ module Lleidasms
343
361
  cmd_incomingmoack args[0]
344
362
  end
345
363
 
364
+ def new_unknow label, cmd, args
365
+ args.unshift cmd
366
+ @unknow << args
367
+ end
368
+
346
369
  end
347
370
  end
@@ -4,6 +4,8 @@ require "io/wait"
4
4
 
5
5
  module Lleidasms
6
6
  class Gateway
7
+ $callbacks = {}
8
+
7
9
  # Client
8
10
  def initialize host = 'sms.lleida.net', port = 2048
9
11
  @host = host
@@ -21,7 +23,7 @@ module Lleidasms
21
23
  end
22
24
  $writer = lambda do |buffer|
23
25
  $server.puts "#{buffer}\r\n"
24
- puts "<#{buffer}\r\n"
26
+ do_debug :out, "<#{buffer}"
25
27
  buffer.replace ''
26
28
  end
27
29
  end
@@ -60,33 +62,20 @@ module Lleidasms
60
62
  end
61
63
  # Client end
62
64
 
63
- # Callbacks
64
- $callbacks = {}
65
-
66
- def self.event name, method_name
65
+ def self.event name, method_name
67
66
  $callbacks[name] = [] unless $callbacks[name]
68
67
  $callbacks[name] << method_name
69
68
  end
70
69
 
71
- def do_event name
72
- run_event name.to_sym, @label, @cmd, @args
73
- end
74
-
75
- def run_event name, *args
76
- run_event_for name.to_sym, self, *args
77
- end
78
-
79
- def run_event_for name, scope, *args
80
- return unless $callbacks[name.to_sym]
81
- $callbacks[name.to_sym].each do |callback|
82
- if callback.kind_of? Symbol
83
- scope.send callback, *args
84
- else
85
- scope.instance_exec *args, &callback
86
- end
87
- end
70
+ # Available types:
71
+ # * :in
72
+ # * :out
73
+ # * :all
74
+ def self.debug type, method_name
75
+ name = "debug_#{type.to_s}".to_sym
76
+ $callbacks[name] = [] unless $callbacks[name]
77
+ $callbacks[name] << method_name
88
78
  end
89
- # Callbacks end
90
79
 
91
80
  def new_label
92
81
  @my_label += 1
@@ -273,7 +262,7 @@ module Lleidasms
273
262
  def parser
274
263
  until $input_buffer.empty?
275
264
  line = $input_buffer.shift
276
- puts ">#{line}\r\n"
265
+ do_debug :in, ">#{line}"
277
266
  @args = line.split ' '
278
267
  @label = @args.shift
279
268
  @cmd = @args.shift
@@ -308,7 +297,7 @@ module Lleidasms
308
297
  # CMD Recepcion SMS (premium)
309
298
 
310
299
  else
311
- # unknow
300
+ do_event :unknow
312
301
  end
313
302
  do_event @cmd.downcase
314
303
  do_event :all
@@ -316,6 +305,31 @@ module Lleidasms
316
305
  end
317
306
 
318
307
  private
308
+ def do_debug type, line
309
+ name = "debug_#{type.to_s}".to_sym
310
+ run_event_for name, self, line
311
+ run_event_for 'debug_all', self, line
312
+ end
313
+
314
+ def do_event name
315
+ run_event name.to_sym, @label, @cmd, @args
316
+ end
317
+
318
+ def run_event name, *args
319
+ run_event_for name.to_sym, self, *args
320
+ end
321
+
322
+ def run_event_for name, scope, *args
323
+ return unless $callbacks[name.to_sym]
324
+ $callbacks[name.to_sym].each do |callback|
325
+ if callback.kind_of? Symbol
326
+ scope.send callback, *args
327
+ else
328
+ scope.instance_exec *args, &callback
329
+ end
330
+ end
331
+ end
332
+
319
333
  def mimetype type
320
334
  case type
321
335
  when :jpeg
@@ -1,3 +1,3 @@
1
1
  module Lleidasms
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lleidasms
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-23 00:00:00.000000000Z
12
+ date: 2012-02-28 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &17522540 !ruby/object:Gem::Requirement
16
+ requirement: &17953140 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: 2.7.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *17522540
24
+ version_requirements: *17953140
25
25
  description: Receive and send standar and premium SMS/MMS using Lleida.net services.
26
26
  email:
27
27
  - mabarroso@mabarroso.com