class DingTalk::HttpHelper

Constants

DINGTALK_URL

Public Class Methods

send_action_card(title, text, single_title, single_url, btn_orientation = '0', hide_avatar = '0', token = nil, secret = nil) click to toggle source
# File lib/DingTalk/utils/http_helper.rb, line 53
def self.send_action_card(title, text, single_title, single_url, btn_orientation = '0', hide_avatar = '0', token = nil, secret = nil)
  buttons = [
    DingTalk::Message::ActionCardButton.new(single_title, single_url)
  ]
  send_http DingTalk::Message::ActionCard.new(title, text, buttons, btn_orientation, hide_avatar), token, secret
end
send_action_card2(title, text, buttons, btn_orientation = '0', hide_avatar = '0', token = nil, secret = nil) click to toggle source
# File lib/DingTalk/utils/http_helper.rb, line 60
def self.send_action_card2(title, text, buttons, btn_orientation = '0', hide_avatar = '0', token = nil, secret = nil)
  send_http DingTalk::Message::ActionCard.new(title, text, buttons, btn_orientation, hide_avatar), token, secret
end
send_feed_card(links, token = nil, secret = nil) click to toggle source
# File lib/DingTalk/utils/http_helper.rb, line 64
def self.send_feed_card(links, token = nil, secret = nil)
  send_http DingTalk::Message::FeedCard.new(links), token, secret
end
send_http(params = {}, token = nil, secret = nil) click to toggle source
# File lib/DingTalk/utils/http_helper.rb, line 18
def self.send_http(params = {}, token = nil, secret = nil)
  access_token = token || ENV['DINGTALK_TOKEN']
  access_secret = token || ENV['DINGTALK_SECRET']
  return 'A message access token is required.' unless access_token
  if access_secret.nil? || access_secret.empty? then
    uri = URI.parse("#{ DINGTALK_URL }?access_token=#{ access_token }")
  else
    timestamp = "#{(Time.now.to_f * 1000).to_i}"
    content = "#{timestamp}\n#{access_secret}".encode("utf-8")
    hash  = OpenSSL::HMAC.digest('sha256', access_secret, content)
    sign = Base64.strict_encode64(hash)
    uri = URI.parse("#{ DINGTALK_URL }?access_token=#{ access_token }&timestamp=#{ timestamp }&sign=#{ sign }")
  end
  http_client = Faraday.new() do |builder|
    builder.request  :url_encoded
    builder.request  :json
    builder.response :logger
    builder.adapter  :net_http
  end
  res = http_client.post uri, params.to_json, 'Content-Type' => 'application/json'
  JSON::pretty_generate(JSON(res.body))
end
send_markdown(title, text, at_mobiles = [], is_at_all = false, token = nil, secret = nil) click to toggle source
# File lib/DingTalk/utils/http_helper.rb, line 49
def self.send_markdown(title, text, at_mobiles = [], is_at_all = false, token = nil, secret = nil)
  send_http DingTalk::Message::Markdown.new(title, text, at_mobiles, is_at_all), token, secret
end
send_text(content, at_mobiles = [], is_at_all = false, token = nil, secret = nil) click to toggle source
# File lib/DingTalk/utils/http_helper.rb, line 41
def self.send_text(content, at_mobiles = [], is_at_all = false, token = nil, secret = nil)
  send_http DingTalk::Message::Text.new(content, at_mobiles, is_at_all), token, secret
end