Class: Ruboty::Adapters::Chatwork

Inherits:
Base
  • Object
show all
Includes:
Mem
Defined in:
lib/ruboty/adapters/chatwork.rb

Instance Method Summary collapse

Instance Method Details

#chatwork_api_rateObject



48
49
50
# File 'lib/ruboty/adapters/chatwork.rb', line 48

def chatwork_api_rate
  ENV["CHATWORK_API_RATE"].to_i
end

#chatwork_api_tokenObject



33
34
35
# File 'lib/ruboty/adapters/chatwork.rb', line 33

def chatwork_api_token
  ENV["CHATWORK_API_TOKEN"]
end

#chatwork_messages_urlObject



43
44
45
# File 'lib/ruboty/adapters/chatwork.rb', line 43

def chatwork_messages_url
  URI.join(chatwork_url, "/v1/rooms/#{chatwork_room}/messages")
end

#chatwork_roomObject



38
39
40
# File 'lib/ruboty/adapters/chatwork.rb', line 38

def chatwork_room
  ENV["CHATWORK_ROOM"]
end

#chatwork_urlObject



28
29
30
# File 'lib/ruboty/adapters/chatwork.rb', line 28

def chatwork_url
  URI.parse(ENV["CHATWORK_URL"] || "https://api.chatwork.com/")
end

#headersObject



53
54
55
56
57
# File 'lib/ruboty/adapters/chatwork.rb', line 53

def headers
  {
    'X-ChatWorkToken' => chatwork_api_token,
  }
end

#listenObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/ruboty/adapters/chatwork.rb', line 60

def listen
  loop do
    req = Net::HTTP::Get.new(chatwork_messages_url.path, headers)
    https = Net::HTTP.new(chatwork_messages_url.host, chatwork_messages_url.port)
    https.use_ssl = true
    res = https.start {|https| https.request(req) }
    pp res.body
    unless res.body.nil?
      message = JSON.parse(res.body)
      robot.receive(
        body: message[0]['body'],
        from_name: message[0]['account']['name']
      )
    end

    sleep (60 * 60) / chatwork_api_rate
  end
end

#runObject



15
16
17
# File 'lib/ruboty/adapters/chatwork.rb', line 15

def run
  listen
end

#say(message) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/ruboty/adapters/chatwork.rb', line 19

def say(message)
  pp message
  req = Net::HTTP::Post.new(chatwork_messages_url.path, headers)
  req.form_data = { 'body' => message[:body] }
  https = Net::HTTP.new(chatwork_messages_url.host, chatwork_messages_url.port)
  https.use_ssl = true
  https.start {|https| https.request(req) }
end