Class: Lita::Handlers::Zendesk
- Inherits:
-
Handler
- Object
- Handler
- Lita::Handlers::Zendesk
- Defined in:
- lib/lita/handlers/zendesk.rb
Constant Summary collapse
- VERSION_URL =
'api/v2'- QUERY_TICKETS_ALL =
'tickets'- QUERY_TICKETS_ESCALATED =
'search.json?query=tags:escalated+status:open+status:pending+type:ticket'- QUERY_TICKETS_HOLD =
'search.json?query=status:hold+type:ticket'- QUERY_TICKETS_OPEN =
'search.json?query=status:open+type:ticket'- QUERY_TICKETS_NEW =
'search.json?query=status:new+type:ticket'- QUERY_TICKETS_PENDING =
'search.json?query=status:pending+type:ticket'- QUERY_TICKETS_UNSOLVED =
'search.json?query=status<solved+type:ticket'- QUERY_USERS =
'users'
Instance Method Summary collapse
- #basic_credentials ⇒ Object
- #escalated_tickets(response) ⇒ Object
- #escalated_tickets_list(response) ⇒ Object
- #init ⇒ Object
- #new_tickets(response) ⇒ Object
- #new_tickets_list(response) ⇒ Object
- #onhold_tickets(response) ⇒ Object
- #onhold_tickets_list(response) ⇒ Object
- #open_tickets(response) ⇒ Object
- #open_tickets_list(response) ⇒ Object
- #pending_tickets(response) ⇒ Object
- #pending_tickets_list(response) ⇒ Object
- #ticket_count(response, url, ticket_type = '') ⇒ Object
- #ticket_details(response) ⇒ Object
- #ticket_list(response, url, ticket_type = '') ⇒ Object
- #tickets(count) ⇒ Object
- #total_tickets(response) ⇒ Object
- #total_tickets_list(response) ⇒ Object
- #unsolved_tickets(response) ⇒ Object
- #unsolved_tickets_list(response) ⇒ Object
- #zendesk_request(url) ⇒ Object
Instance Method Details
#basic_credentials ⇒ Object
49 50 51 |
# File 'lib/lita/handlers/zendesk.rb', line 49 def basic_credentials Base64.encode64("#{config.user}:#{config.password}").gsub(/\s/,'') end |
#escalated_tickets(response) ⇒ Object
109 110 111 |
# File 'lib/lita/handlers/zendesk.rb', line 109 def escalated_tickets(response) ticket_count response, QUERY_TICKETS_ESCALATED, 'escalated' end |
#escalated_tickets_list(response) ⇒ Object
146 147 148 |
# File 'lib/lita/handlers/zendesk.rb', line 146 def escalated_tickets_list(response) ticket_list response, QUERY_TICKETS_ESCALATED, 'escalated' end |
#init ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/lita/handlers/zendesk.rb', line 27 def init @base_url = "https://#{config.subdomain.to_s}.zendesk.com" @version_url = "https://#{config.subdomain.to_s}.zendesk.com/#{VERSION_URL}" @tickets_url = "https://#{config.subdomain.to_s}.zendesk.com/tickets" if config.auth_type == 'password' @conn = Faraday.new(url: @version_url) do |faraday| faraday.headers['Authorization'] = "Basic #{basic_credentials}" faraday.response :json # JSON response faraday.response :logger # log requests to STDOUT faraday.adapter Faraday.default_adapter # make requests with Net::HTTP end else @conn = Faraday.new(url: @version_url) do |faraday| faraday.response :json # JSON response faraday.response :logger # log requests to STDOUT faraday.adapter Faraday.default_adapter # make requests with Net::HTTP end @conn.basic_auth("#{config.user}/token", config.token) end end |
#new_tickets(response) ⇒ Object
104 105 106 |
# File 'lib/lita/handlers/zendesk.rb', line 104 def new_tickets(response) ticket_count response, QUERY_TICKETS_NEW, 'new' end |
#new_tickets_list(response) ⇒ Object
141 142 143 |
# File 'lib/lita/handlers/zendesk.rb', line 141 def new_tickets_list(response) ticket_list response, QUERY_TICKETS_NEW, 'new' end |
#onhold_tickets(response) ⇒ Object
119 120 121 |
# File 'lib/lita/handlers/zendesk.rb', line 119 def onhold_tickets(response) ticket_count response, QUERY_TICKETS_HOLD, 'on hold' end |
#onhold_tickets_list(response) ⇒ Object
156 157 158 |
# File 'lib/lita/handlers/zendesk.rb', line 156 def onhold_tickets_list(response) ticket_list response, QUERY_TICKETS_HOLD, 'on hold' end |
#open_tickets(response) ⇒ Object
114 115 116 |
# File 'lib/lita/handlers/zendesk.rb', line 114 def open_tickets(response) ticket_count response, QUERY_TICKETS_OPEN, 'open' end |
#open_tickets_list(response) ⇒ Object
151 152 153 |
# File 'lib/lita/handlers/zendesk.rb', line 151 def open_tickets_list(response) ticket_list response, QUERY_TICKETS_OPEN, 'open' end |
#pending_tickets(response) ⇒ Object
99 100 101 |
# File 'lib/lita/handlers/zendesk.rb', line 99 def pending_tickets(response) ticket_count response, QUERY_TICKETS_PENDING, 'pending' end |
#pending_tickets_list(response) ⇒ Object
136 137 138 |
# File 'lib/lita/handlers/zendesk.rb', line 136 def pending_tickets_list(response) ticket_list response, QUERY_TICKETS_PENDING, 'pending' end |
#ticket_count(response, url, ticket_type = '') ⇒ Object
61 62 63 64 65 66 67 |
# File 'lib/lita/handlers/zendesk.rb', line 61 def ticket_count(response, url, ticket_type = '') res = zendesk_request url ticket_count = res.body['count'] ticket_word = ticket_count == 1 ? 'ticket' : 'tickets' ticket_desc = ticket_type == '' ? '' : "#{ticket_type} " response.reply "#{ticket_count} #{ticket_desc}#{ticket_word}." end |
#ticket_details(response) ⇒ Object
163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
# File 'lib/lita/handlers/zendesk.rb', line 163 def ticket_details(response) ticket_id = response.matches[0][0] url = "#{QUERY_TICKETS_ALL}/#{ticket_id}.json" res = zendesk_request url data = res.body = "Ticket #{data['ticket']['id']}: #{@tickets_url}/#{data['ticket']['id']}" += "\nStatus: #{data['ticket']['status'].upcase}" += "\nUpdated: " + data['ticket']['updated_at'] += "\nAdded: #{data['ticket']['created_at']}" += "\nSubject: #{data['ticket']['subject']}" += "\nDescription:\n-----\n#{data['ticket']['description']}\n-----\n" response.reply end |
#ticket_list(response, url, ticket_type = '') ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/lita/handlers/zendesk.rb', line 69 def ticket_list(response, url, ticket_type = '') res = zendesk_request url tickets = res.body['results'] tickets.each do |ticket| response.reply "Ticket #{ticket['id']} is #{ticket['status']}: #{@tickets_url}/#{ticket['id']} - #{ticket['subject']}" end ticket_length = tickets.length ticket_count = res.body['count'] ticket_word = ticket_count == 1 ? 'ticket' : 'tickets' ticket_desc = ticket_type == '' ? '' : "#{ticket_type} " response.reply "Listing #{ticket_length} of #{ticket_count} #{ticket_desc}#{ticket_word}." end |
#tickets(count) ⇒ Object
82 83 84 |
# File 'lib/lita/handlers/zendesk.rb', line 82 def tickets(count) count == 1 ? 'ticket' : 'tickets' end |
#total_tickets(response) ⇒ Object
94 95 96 |
# File 'lib/lita/handlers/zendesk.rb', line 94 def total_tickets(response) ticket_count response, QUERY_TICKETS_ALL, 'total' end |
#total_tickets_list(response) ⇒ Object
131 132 133 |
# File 'lib/lita/handlers/zendesk.rb', line 131 def total_tickets_list(response) ticket_list response, QUERY_TICKETS_ALL, 'total' end |
#unsolved_tickets(response) ⇒ Object
89 90 91 |
# File 'lib/lita/handlers/zendesk.rb', line 89 def unsolved_tickets(response) ticket_count response, QUERY_TICKETS_UNSOLVED, 'unsolved' end |
#unsolved_tickets_list(response) ⇒ Object
126 127 128 |
# File 'lib/lita/handlers/zendesk.rb', line 126 def unsolved_tickets_list(response) ticket_list response, QUERY_TICKETS_UNSOLVED, 'unsolved' end |
#zendesk_request(url) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/lita/handlers/zendesk.rb', line 53 def zendesk_request(url) init unless @conn if url.index('http') != 0 url = "#{@version_url}/#{url}" end @conn.get url end |