class Smsconnect::Smsconnect
Constants
- API_SCRIPT
Public Class Methods
new(settings)
click to toggle source
# File lib/smsconnect.rb, line 58 def initialize(settings) @settings = settings end
Public Instance Methods
credit_info()
click to toggle source
# File lib/smsconnect.rb, line 126 def credit_info data = self.getAuth data['action'] = 'credit_info' data = data.map { |k,v| "#{k}=#{v}" }.join('&') url = URI.parse(API_SCRIPT + data) puts url http = Net::HTTP.new(url.host, url.port) http.use_ssl = url.scheme == 'https' req = Net::HTTP::Get.new(url.to_s) res = http.start { |http| http.request(req) } doc = Nokogiri::XML(res.body) err = nil price = nil credit = nil sms_count = nil sms_id = nil doc.xpath('//result').each do |result| err = result.at_xpath('err').content if result.at_xpath('err') credit = result.at_xpath('credit').content if result.at_xpath('credit') end CreditResponse.new(err, credit) end
getAuth()
click to toggle source
# File lib/smsconnect.rb, line 66 def getAuth return false if @settings['login'].nil? && @settings['password'].nil? t = Time.new time = t.strftime("%Y%m%d") + "T" + t.strftime("%H%M%S") salt = self.salt(10) result = {} result['login'] = @settings['login'] result['time'] = time result['salt'] = salt result['hash'] = Digest::MD5.hexdigest(@settings['password'] + time + salt) result end
inbox()
click to toggle source
# File lib/smsconnect.rb, line 82 def inbox data = self.getAuth data['action'] = 'inbox' data = data.map{ |k,v| "#{k}=#{v}" }.join('&') url = URI.parse(API_SCRIPT + data) http = Net::HTTP.new(url.host, url.port) http.use_ssl = url.scheme == 'https' req = Net::HTTP::Get.new(url.to_s) res = http.start { |http| http.request(req) } res.body doc = Nokogiri::XML(res.body) err = nil delivery_sms = [] delivery_report = [] doc.xpath('//result').each do |result| err = result.at_xpath('err').content if result.at_xpath('err') result.xpath('//inbox/delivery_sms/item').each do |a| delivery_sms << { number: a.at_xpath('number').text, time: a.at_xpath('time').text, message: a.at_xpath('message').text } end err = result.at_xpath('err').content if result.at_xpath('err') result.xpath('//inbox/delivery_report/item').each do |a| delivery_report << { idsms: a.at_xpath('idsms').text, time: a.at_xpath('time').text, status: a.at_xpath('status').text } end end puts delivery_sms puts delivery_report InboxResponse.new(err, delivery_sms, delivery_report) end
salt(length)
click to toggle source
# File lib/smsconnect.rb, line 62 def salt(length) SecureRandom.hex(length) end
send(number, text, send_at = nil, delivery_report=nil, sender_id=nil, sender_phone=nil, user_id=nil, data_code=nil, answer_mail=nil, delivery_mail=nil)
click to toggle source
# File lib/smsconnect.rb, line 155 def send(number, text, send_at = nil, delivery_report=nil, sender_id=nil, sender_phone=nil, user_id=nil, data_code=nil, answer_mail=nil, delivery_mail=nil) data = self.getAuth data['action'] = 'send_sms' data['number'] = number data['message'] = text.gsub(/ /, '+') data['when'] = send_at if send_at data['delivery_report'] = delivery_report if delivery_report data['sender_id'] = sender_id if sender_id data['sender_phone'] = sender_phone if sender_phone data['user_id'] = user_id if user_id data['data_code'] = data_code if data_code data['answer_mail'] = answer_mail if answer_mail data['delivery_mail'] = delivery_mail if delivery_mail data = data.map { |k,v| "#{k}=#{v}" }.join('&') url = URI.parse(API_SCRIPT + data) http = Net::HTTP.new(url.host, url.port) http.use_ssl = url.scheme == 'https' req = Net::HTTP::Get.new(url.to_s) res = http.start { |http| http.request(req) } doc = Nokogiri::XML(res.body) err = nil price = nil credit = nil sms_count = nil sms_id = nil doc.xpath('//result').each do |result| err = result.at_xpath('err').content if result.at_xpath('err') price = result.at_xpath('price').content if result.at_xpath('price') sms_count = result.at_xpath('sms_count').content if result.at_xpath('sms_count') credit = result.at_xpath('credit').content if result.at_xpath('credit') sms_id = result.at_xpath('sms_id').content if result.at_xpath('sms_id') end SendResponse.new(err, price, sms_count, credit, sms_id, res.body) end