class DingDingRobot
Constants
- VERSION
Attributes
access_token[RW]
max_retry[RW]
Public Class Methods
new(access_token)
click to toggle source
# File lib/ding_ding_robot.rb, line 10 def initialize(access_token) @access_token = access_token @max_retry = 3 end
Public Instance Methods
send_message(message)
click to toggle source
# File lib/ding_ding_robot.rb, line 15 def send_message(message) raise DingDingRobot::WrongMessageType.new("you need pass a DingDingRobot::Message") unless message.is_a?(DingDingRobot::Message) self.max_retry.times do |i| begin return _send_message(message) rescue Errno::ETIMEDOUT, Net::ReadTimeout, Timeout::Error, EOFError => e if i == self.max_retry - 1 raise e end end end end
url()
click to toggle source
# File lib/ding_ding_robot.rb, line 28 def url "https://oapi.dingtalk.com/robot/send?access_token=#{self.access_token}" end
Private Instance Methods
_send_message(message)
click to toggle source
# File lib/ding_ding_robot.rb, line 34 def _send_message(message) uri = URI(self.url) req = Net::HTTP::Post.new(uri, {'Content-Type' => 'application/json'}) req.body = JSON.dump(message.as_json) http = Net::HTTP.new(uri.hostname, uri.port) http.use_ssl = (uri.scheme == "https") resp = http.request(req) raise DingDingRobot::ErrorHttpResponse.new("http_code=#{resp.code} body=#{resp.body}") if resp.code_type != Net::HTTPOK result = JSON.parse(resp.body) raise DingDingRobot::SendMessageError.new(resp.body) if result["errcode"] != 0 result end