class Baidusms::Client
Public Class Methods
new(attrs={})
click to toggle source
# File lib/baidusms/client.rb, line 7 def initialize(attrs={}) @username = attrs[:username] @password = attrs[:password] @token = attrs[:token] @debug = attrs[:debug] end
Public Instance Methods
call(service,method,body={},base_uri='https://api.baidu.com/json/sms/v3')
click to toggle source
# File lib/baidusms/client.rb, line 14 def call(service,method,body={},base_uri='https://api.baidu.com/json/sms/v3') message = { :header => { :username => @username, :token => @token, :password => @password } } message[:body] = body unless body.nil? pp message if @debug response = {} 5.times do |i| response = HTTParty.post("#{base_uri}/#{service}/#{method}",:body => JSON(message), :headers => {'content-type' => 'application/json;charset=utf-8'}) pp response if @debug break if response['header']['desc'] == 'success' # retry if the error is caused by Baidu and will by OK after retry break unless [8904,9013].include? response['header']['failures'][0]['code'] sleep(20*(i+1)) end response end
download(file_path,local_file=nil)
click to toggle source
# File lib/baidusms/client.rb, line 40 def download(file_path,local_file=nil) file = HTTParty.get(file_path).body.encode('UTF-8','GB18030') open(local_file,'w').puts file unless local_file.nil? file end