-
-
Notifications
You must be signed in to change notification settings - Fork 217
/
method.erb
68 lines (66 loc) · 2.55 KB
/
method.erb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# frozen_string_literal: true
# This file was auto-generated by lib/tasks/web.rake
module Slack
module Web
module Api
module Endpoints
module <%= group.gsub(".", "_").camelize %>
<% names.sort.each_with_index do |(name, data), index| %>
<% next if data['mixin'] %>
<% if index > 0 %>
<% end %>
#
<% data['desc'].split("\n").each_with_index do |line, index| %>
<% line += ' (undocumented)' if data['undocumented'] && index == 0 %>
# <%= line %>
<% end %>
#
<% data['args'].each do |arg_name, arg_v| %>
# @option options [<%= arg_v['type'] %>] :<%= arg_name %>
<% arg_v['desc'].lines.each do |l| %>
<% if l.strip.length > 0 %>
# <%= l.strip %>
<% else %>
#
<% end %>
<% end %>
<% end %>
<% if data['undocumented'] %>
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/undocumented/<%= group %>/<%= group %>.<%= name %>.json
<% else %>
# @see https://api.slack.com/methods/<%= group %>.<%= name %>
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/<%= group %>/<%= group %>.<%= name %>.json
<% end %>
def <%= group.gsub(".", "_") %>_<%= name %>(options = {})
<% data['args'].select{ |k, v| v['required'] }.each do |arg_name, arg_v| %>
throw ArgumentError.new('Required arguments :<%= arg_name %> missing') if options[:<%= arg_name %>].nil?
<% end %>
<% if data['group'] == 'groups' && data['args']['channel'] && !data['args']['channel']['desc'].include?('Can be an encoded ID, or a name.') %>
options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
<% elsif data['args']['channel'] && !data['args']['channel']['desc'].include?('Can be an encoded ID, or a name.') %>
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
<% end %>
<% if data['args']['user'] %>
options = options.merge(user: users_id(options)['user']['id']) if options[:user]
<% end %>
<% if data['undocumented'] %>
logger.warn('The <%= group %>.<%= name %> method is undocumented.')
<% end %>
<% if data['args'].keys.include?('cursor') %>
if block_given?
Pagination::Cursor.new(self, :<%= group.gsub(".", "_") %>_<%= name %>, options).each do |page|
yield page
end
else
post('<%= group %>.<%= name %>', options)
end
<% else %>
post('<%= group %>.<%= name %>', options)
<% end %>
end
<% end %>
end
end
end
end
end