rfetion 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
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