rfetion 0.4.2 → 0.4.3

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.2
1
+ 0.4.3
@@ -9,9 +9,11 @@ OptionParser.new do |opts|
9
9
  opts.separator ""
10
10
  opts.separator <<-EOF
11
11
  Example: rfetion -m mobile -p password -c sms_content
12
+ rfetion -s sip -p password -c sms_content
12
13
  rfetion -m mobile -p password -r mobile_or_fetion_numbers -c sms_content
13
14
  rfetion -m mobile -p password -r mobile_or_fetion_numbers -c sms_content -t time
14
15
  rfetion -m mobile -p password --add-buddy-with-mobile friend_mobile
16
+ rfetion -s sip -p password --add-buddy-with-mobile friend_mobile
15
17
  rfetion -m mobile -p password --add-buddy-with-sip friend_sip
16
18
 
17
19
  EOF
@@ -20,6 +22,10 @@ OptionParser.new do |opts|
20
22
  options[:mobile_no] = mobile
21
23
  end
22
24
 
25
+ opts.on('-s', '--sip FETION_SIP', 'Fetion sid number') do |sid|
26
+ options[:sid] = sid
27
+ end
28
+
23
29
  opts.on('-p', '--password PASSWORD', 'Fetion password') do |password|
24
30
  options[:password] = password
25
31
  end
@@ -28,7 +34,7 @@ OptionParser.new do |opts|
28
34
  options[:content] = content
29
35
  end
30
36
 
31
- opts.on('-r', '--receivers MOBILE,SIP', Array, "(optional) Receivers' Fetion mobile numbers or fetion sip numbers, if no recievers, send sms to yourself") do |receivers|
37
+ opts.on('-r', '--receivers MOBILE,SIP', Array, "Receivers' Fetion mobile numbers or fetion sip numbers, if no recievers, send sms to yourself") do |receivers|
32
38
  options[:receivers] = receivers
33
39
  end
34
40
 
@@ -37,22 +43,22 @@ OptionParser.new do |opts|
37
43
  end
38
44
 
39
45
  opts.on('--add-buddy-with-mobile MOBILE', 'Add friend mobile as fetion friend') do |mobile|
40
- options[:add_mobile] = mobile
46
+ options[:friend_mobile] = mobile
41
47
  end
42
48
 
43
49
  opts.on('--add-buddy-with-sip SIP', 'Add friend fetion sip as fetion friend') do |sip|
44
- options[:add_sip] = sip
50
+ options[:friend_sip] = sip
45
51
  end
46
52
 
47
53
  opts.separator ""
48
54
  opts.separator "different mode:"
49
55
 
50
56
  opts.on('--debug', 'debug mode') do
51
- options[:debug] = true
57
+ options[:logger_level] = Logger::DEBUG
52
58
  end
53
59
 
54
60
  opts.on('--silence', 'silence mode') do
55
- options[:silence] = true
61
+ options[:logger_level] = Logger::ERROR
56
62
  end
57
63
 
58
64
  opts.separator ""
@@ -71,25 +77,18 @@ OptionParser.new do |opts|
71
77
  opts.parse!
72
78
  end
73
79
 
74
- def level(options)
75
- return Logger::DEBUG if options[:debug]
76
- return Logger::ERROR if options[:silence]
77
- return Logger::INFO
78
- end
79
-
80
80
  begin
81
- if options[:add_mobile] or options[:add_sip]
82
- raise FetionException.new('You must input your mobile number and password') unless options[:mobile_no] and options[:password]
83
- Fetion.add_buddy_with_mobile(options[:mobile_no], options[:password], options[:add_mobile], level(options)) if options[:add_mobile]
84
- Fetion.add_buddy_with_sip(options[:mobile_no], options[:password], options[:add_sip], level(options)) if options[:add_sip]
81
+ if options[:friend_mobile] or options[:friend_sip]
82
+ raise FetionException.new('You must input your mobile number or fetion sid, and password') unless (options[:mobile_no] or options[:sid]) and options[:password]
83
+ Fetion.add_buddy(options)
85
84
  exit
86
85
  end
87
86
 
88
- raise FetionException.new('You must input your mobile number, password and content') unless options[:mobile_no] and options[:password] and options[:content]
87
+ raise FetionException.new('You must input your mobile number or fetion sid, password and content') unless (options[:mobile_no] or options[:sid]) and options[:password] and options[:content]
89
88
  if options[:time]
90
- Fetion.schedule_sms(options[:mobile_no], options[:password], options[:receivers], options[:content], options[:time], level(options))
89
+ Fetion.schedule_sms(options)
91
90
  else
92
- Fetion.send_sms(options[:mobile_no], options[:password], options[:receivers], options[:content], level(options))
91
+ Fetion.send_sms(options)
93
92
  end
94
93
  rescue FetionException => e
95
94
  puts e.message
@@ -2,7 +2,7 @@ class FetionException < Exception
2
2
  end
3
3
 
4
4
  class Fetion
5
- attr_accessor :mobile_no, :password
5
+ attr_accessor :mobile_no, :sid, :password
6
6
  attr_reader :uri, :contacts
7
7
 
8
8
  FETION_URL = 'http://221.130.44.194/ht/sd.aspx'
@@ -26,17 +26,23 @@ class Fetion
26
26
  @logger.level = level
27
27
  end
28
28
 
29
- def set_cat=(cat)
30
- @cat = cat
31
- end
32
-
33
- def Fetion.send_sms(mobile_no, password, receivers, content, level = Logger::INFO)
29
+ # options
30
+ # mobile_no
31
+ # sid
32
+ # password
33
+ # receivers
34
+ # content
35
+ # logger_level
36
+ def Fetion.send_sms(options)
34
37
  fetion = Fetion.new
35
- fetion.logger_level = level
36
- fetion.mobile_no = mobile_no
37
- fetion.password = password
38
+ fetion.logger_level = options[:logger_level] || Logger::INFO
39
+ fetion.mobile_no = options[:mobile_no]
40
+ fetion.sid = options[:sid]
41
+ fetion.password = options[:password]
38
42
  fetion.login
39
43
  fetion.register
44
+ receivers = options[:receivers]
45
+ content = options[:content]
40
46
  if receivers
41
47
  receivers = Array(receivers)
42
48
  receivers.collect! {|receiver| receiver.to_s}
@@ -54,13 +60,25 @@ class Fetion
54
60
  fetion.logout
55
61
  end
56
62
 
57
- def Fetion.schedule_sms(mobile_no, password, receivers, content, time, level = Logger::INFO)
63
+ # options
64
+ # mobile_no
65
+ # sid
66
+ # password
67
+ # receivers
68
+ # content
69
+ # time
70
+ # logger_level
71
+ def Fetion.schedule_sms(options)
58
72
  fetion = Fetion.new
59
- fetion.logger_level = level
60
- fetion.mobile_no = mobile_no
61
- fetion.password = password
73
+ fetion.logger_level = options[:logger_level] || Logger::INFO
74
+ fetion.mobile_no = options[:mobile_no]
75
+ fetion.sid = options[:sid]
76
+ fetion.password = options[:password]
62
77
  fetion.login
63
78
  fetion.register
79
+ receivers = options[:receivers]
80
+ content = options[:content]
81
+ time = options[:time]
64
82
  fetion.get_buddy_list
65
83
  fetion.get_contacts_info
66
84
  if receivers
@@ -79,33 +97,33 @@ class Fetion
79
97
  fetion.logout
80
98
  end
81
99
 
82
- def Fetion.add_buddy_with_mobile(mobile_no, password, friend_mobile, level = Logger::INFO)
83
- fetion = Fetion.new
84
- fetion.logger_level = level
85
- fetion.mobile_no = mobile_no
86
- fetion.password = password
87
- fetion.login
88
- fetion.register
89
- fetion.get_personal_info
90
- fetion.add_buddy_with_mobile(friend_mobile)
91
- fetion.logout
92
- end
93
-
94
- def Fetion.add_buddy_with_sip(mobile_no, password, friend_sip, level = Logger::INFO)
100
+ # options
101
+ # mobile_no
102
+ # sid
103
+ # password
104
+ # friend_mobile
105
+ # friend_sip
106
+ # logger_level
107
+ def Fetion.add_buddy(options)
95
108
  fetion = Fetion.new
96
- fetion.logger_level = level
97
- fetion.mobile_no = mobile_no
98
- fetion.password = password
109
+ fetion.logger_level = options[:logger_level] || Logger::INFO
110
+ fetion.mobile_no = options[:mobile_no]
111
+ fetion.sid = options[:sid]
112
+ fetion.password = options[:password]
99
113
  fetion.login
100
114
  fetion.register
101
115
  fetion.get_personal_info
102
- fetion.add_buddy_with_sip(friend_sip)
116
+ fetion.add_buddy(options)
103
117
  fetion.logout
104
118
  end
105
119
 
106
120
  def login
107
121
  @logger.info "fetion login"
108
- uri = URI.parse(FETION_LOGIN_URL + "?mobileno=#{@mobile_no}&pwd=#{@password}")
122
+ if @mobile_no
123
+ uri = URI.parse(FETION_LOGIN_URL + "?mobileno=#{@mobile_no}&pwd=#{@password}")
124
+ else
125
+ uri = URI.parse(FETION_LOGIN_URL + "?sid=#{@sid}&pwd=#{@password}")
126
+ end
109
127
  http = Net::HTTP.new(uri.host, uri.port)
110
128
  http.use_ssl = true
111
129
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
@@ -282,35 +300,31 @@ class Fetion
282
300
  @logger.info "fetion get personal info success"
283
301
  end
284
302
 
285
- def add_buddy_with_mobile(mobile)
286
- @logger.info "fetion send request to add mobile:#{mobile} as friend"
287
- arg = %Q{<args><contacts><buddies><buddy uri="tel:#{mobile}" local-name="" buddy-lists="1" desc="#{@person['nickname']}" expose-mobile-no="1" expose-name="1" /></buddies></contacts></args>}
303
+ # options
304
+ # friend_mobile
305
+ # friend_sip
306
+ def add_buddy(options)
307
+ uri = options[:friend_mobile] ? "tel:#{options[:friend_mobile]}" : "sip:#{options[:friend_sip]}"
308
+
309
+ @logger.info "fetion send request to add #{uri} as friend"
310
+ arg = %Q{<args><contacts><buddies><buddy uri="#{uri}" local-name="" buddy-lists="1" desc="#{@person['nickname']}" expose-mobile-no="1" expose-name="1" /></buddies></contacts></args>}
288
311
  msg = sip_create('S fetion.com.cn SIP-C/2.0', {'F' => @sid, 'I' => next_call, 'Q' => '1 S', 'N' => 'AddBuddy'}, arg) + FETION_SIPP
289
312
  curl_exec(next_url, @ssic, msg)
290
313
  response = curl_exec(next_url, @ssic, FETION_SIPP)
291
314
  raise FetionException.new("Fetion Error: Add buddy error") unless response.is_a? Net::HTTPSuccess
292
315
 
293
316
  if response.body =~ /No Subscription/
294
- arg = %Q{<args><contacts><mobile-buddies><mobile-buddy uri="tel:#{mobile}" local-name="" buddy-lists="1" desc="#{@person['nickname']}" expose-mobile-no="1" expose-name="1" /></mobile-buddies></contacts></args>}
317
+ raise FetionException.new("Fetion Error: No #{uri}") if options[:friend_sip]
318
+
319
+ arg = %Q{<args><contacts><mobile-buddies><mobile-buddy uri="#{uri}" local-name="" buddy-lists="1" desc="#{@person['nickname']}" expose-mobile-no="1" expose-name="1" /></mobile-buddies></contacts></args>}
295
320
  msg = sip_create('S fetion.com.cn SIP-C/2.0', {'F' => @sid, 'I' => next_call, 'Q' => '1 S', 'N' => 'AddMobileBuddy'}, arg) + FETION_SIPP
296
321
  curl_exec(next_url, @ssic, msg)
297
322
  response = curl_exec(next_url, @ssic, FETION_SIPP)
298
323
  raise FetionException.new("Fetion Error: Add buddy error") unless response.is_a? Net::HTTPSuccess
299
324
 
300
- raise FetionException.new("Fetion Error: No this mobile") if response.body =~ /Not Found/
325
+ raise FetionException.new("Fetion Error: No #{uri}") if response.body =~ /Not Found/
301
326
  end
302
- @logger.info "fetion send request to add mobile:#{mobile} as friend success"
303
- end
304
-
305
- def add_buddy_with_sip(sip)
306
- @logger.info "fetion send request to add sip:#{sip} as friend"
307
- arg = %Q{<args><contacts><buddies><buddy uri="sip:#{sip}" local-name="" buddy-lists="1" desc="#{@person['nickname']}" expose-mobile-no="1" expose-name="1" /></buddies></contacts></args>}
308
- msg = sip_create('S fetion.com.cn SIP-C/2.0', {'F' => @sid, 'I' => next_call, 'Q' => '1 S', 'N' => 'AddBuddy'}, arg) + FETION_SIPP
309
- curl_exec(next_url, @ssic, msg)
310
- response = curl_exec(next_url, @ssic, FETION_SIPP)
311
-
312
- raise FetionException.new("Fetion Error: Add buddy error") unless response.is_a? Net::HTTPSuccess
313
- @logger.info "fetion send request to add sip:#{sip} as friend success"
327
+ @logger.info "fetion send request to add #{uri} as friend success"
314
328
  end
315
329
 
316
330
  def logout
data/rfetion.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rfetion}
8
- s.version = "0.4.2"
8
+ s.version = "0.4.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Richard Huang"]
12
- s.date = %q{2009-12-15}
12
+ s.date = %q{2009-12-17}
13
13
  s.description = %q{rfetion is a ruby gem for China Mobile fetion service that you can send SMS free.}
14
14
  s.email = %q{flyerhzm@gmail.com}
15
15
  s.executables = ["rfetion", "rfetion"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rfetion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-15 00:00:00 +08:00
12
+ date: 2009-12-17 00:00:00 +08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency