module Esa::ApiMethods

Constants

HTTP_REGEX

Public Instance Methods

add_comment_star(comment_id, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 108
def add_comment_star(comment_id, params = nil, headers = nil)
  send_post("/v1/teams/#{current_team!}/comments/#{comment_id}/star", params, headers)
end
add_post_star(post_number, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 96
def add_post_star(post_number, params = nil, headers = nil)
  send_post("/v1/teams/#{current_team!}/posts/#{post_number}/star", params, headers)
end
add_watch(post_number, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 120
def add_watch(post_number, params = nil, headers = nil)
  send_post("/v1/teams/#{current_team!}/posts/#{post_number}/watch", params, headers)
end
append_post(post_number, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 52
def append_post(post_number, params = nil, headers = nil)
  send_post("/v1/teams/#{current_team!}/posts/#{post_number}/append", wrap(params, :post), headers)
end
batch_move_category(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 132
def batch_move_category(params = nil, headers = nil)
  send_post("/v1/teams/#{current_team!}/categories/batch_move", params, headers)
end
cancel_invitation(code, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 157
def cancel_invitation(code, params = nil, headers = nil)
  send_delete("/v1/teams/#{current_team!}/invitations/#{code}", params, headers)
end
categories(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 128
def categories(params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/categories", params, headers)
end
comment(comment_id, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 68
def comment(comment_id, params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/comments/#{comment_id}", params, headers)
end
comment_stargazers(comment_id, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 104
def comment_stargazers(comment_id, params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/comments/#{comment_id}/stargazers", params, headers)
end
comments(post_number = nil, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 60
def comments(post_number = nil, params = nil, headers = nil)
  if post_number.nil?
    send_get("/v1/teams/#{current_team!}/comments", params, headers)
  else
    send_get("/v1/teams/#{current_team!}/posts/#{post_number}/comments", params, headers)
  end
end
create_comment(post_number, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 72
def create_comment(post_number, params = nil, headers = nil)
  send_post("/v1/teams/#{current_team!}/posts/#{post_number}/comments", wrap(params, :comment), headers)
end
create_emoji(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 165
def create_emoji(params = nil, headers = nil)
  params[:image] = Base64.strict_encode64(File.read(params[:image])) if params[:image]
  send_post("/v1/teams/#{current_team!}/emojis", wrap(params, :emoji), headers)
end
create_post(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 44
def create_post(params = nil, headers = nil)
  send_post("/v1/teams/#{current_team!}/posts", wrap(params, :post), headers)
end
create_sharing(post_number, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 84
def create_sharing(post_number, params = nil, headers = nil)
  send_post("/v1/teams/#{current_team!}/posts/#{post_number}/sharing", params, headers)
end
delete_comment(comment_id, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 80
def delete_comment(comment_id, params = nil, headers = nil)
  send_delete("/v1/teams/#{current_team!}/comments/#{comment_id}", params, headers)
end
delete_comment_star(comment_id, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 112
def delete_comment_star(comment_id, params = nil, headers = nil)
  send_delete("/v1/teams/#{current_team!}/comments/#{comment_id}/star", params, headers)
end
delete_emoji(emoji_code, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 170
def delete_emoji(emoji_code, params = nil, headers = nil)
  send_delete("/v1/teams/#{current_team!}/emojis/#{emoji_code}", params, headers)
end
delete_member(screen_name, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 32
def delete_member(screen_name, params = nil, headers = nil)
  send_delete("/v1/teams/#{current_team!}/members/#{screen_name}", params, headers)
end
delete_post(post_number, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 56
def delete_post(post_number, params = nil, headers = nil)
  send_delete("/v1/teams/#{current_team!}/posts/#{post_number}", params, headers)
end
delete_post_star(post_number, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 100
def delete_post_star(post_number, params = nil, headers = nil)
  send_delete("/v1/teams/#{current_team!}/posts/#{post_number}/star", params, headers)
end
delete_sharing(post_number, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 88
def delete_sharing(post_number, params = nil, headers = nil)
  send_delete("/v1/teams/#{current_team!}/posts/#{post_number}/sharing", params, headers)
end
delete_watch(post_number, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 124
def delete_watch(post_number, params = nil, headers = nil)
  send_delete("/v1/teams/#{current_team!}/posts/#{post_number}/watch", params, headers)
end
emojis(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 161
def emojis(params = nil, headers = nil)
  send_get("/v1/teams/#{current_team}/emojis", params, headers)
end
invitation(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 140
def invitation(params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/invitation", params, headers)
end
member(identifier, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 28
def member(identifier, params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/members/#{identifier}", params, headers)
end
members(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 24
def members(params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/members", params, headers)
end
pending_invitations(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 148
def pending_invitations(params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/invitations", params, headers)
end
post(post_number, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 40
def post(post_number, params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/posts/#{post_number}", params, headers)
end
post_stargazers(post_number, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 92
def post_stargazers(post_number, params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/posts/#{post_number}/stargazers", params, headers)
end
posts(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 36
def posts(params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/posts", params, headers)
end
regenerate_invitation(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 144
def regenerate_invitation(params = nil, headers = nil)
  send_post("/v1/teams/#{current_team!}/invitation_regenerator", params, headers)
end
send_invitation(emails, params = {}, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 152
def send_invitation(emails, params = {}, headers = nil)
  params = params.merge(member: { emails: emails } )
  send_post("/v1/teams/#{current_team!}/invitations", params, headers)
end
signed_url(file_path, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 201
def signed_url(file_path, params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/signed_url/#{file_path}", params, headers)
end
stats(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 20
def stats(params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/stats", params, headers)
end
tags(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 136
def tags(params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/tags", params, headers)
end
team(team_name, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 16
def team(team_name, params = nil, headers = nil)
  send_get("/v1/teams/#{team_name}", params, headers)
end
teams(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 12
def teams(params = nil, headers = nil)
  send_get("/v1/teams", params, headers)
end
update_comment(comment_id, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 76
def update_comment(comment_id, params = nil, headers = nil)
  send_patch("/v1/teams/#{current_team!}/comments/#{comment_id}", wrap(params, :comment), headers)
end
update_post(post_number, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 48
def update_post(post_number, params = nil, headers = nil)
  send_patch("/v1/teams/#{current_team!}/posts/#{post_number}", wrap(params, :post), headers)
end
upload_attachment(path_or_file_or_url, params = {}, headers = nil) click to toggle source

beta

# File lib/esa/api_methods.rb, line 184
def upload_attachment(path_or_file_or_url, params = {}, headers = nil)
  file = file_from(path_or_file_or_url)
  setup_params_for_upload(params, file)

  response = send_post("/v1/teams/#{current_team!}/attachments/policies", params, headers)
  return response unless response.status == 200

  attachment = response.body['attachment']
  form_data  = response.body['form'].merge(file: Faraday::FilePart.new(file, params[:type]))

  s3_response = send_s3_request(:post, attachment['endpoint'], form_data)
  return s3_response unless s3_response.status == 204

  response.body.delete('form')
  response
end
user(params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 8
def user(params = nil, headers = nil)
  send_get("/v1/user", params, headers)
end
watchers(post_number, params = nil, headers = nil) click to toggle source
# File lib/esa/api_methods.rb, line 116
def watchers(post_number, params = nil, headers = nil)
  send_get("/v1/teams/#{current_team!}/posts/#{post_number}/watchers", params, headers)
end

Private Instance Methods

content_type_from_file(file) click to toggle source
# File lib/esa/api_methods.rb, line 214
def content_type_from_file(file)
  if mime_type = MIME::Types.type_for(file.path).first
    mime_type.content_type
  end
rescue LoadError
  msg = 'Please pass content_type or install mime-types gem to guess content type from file'
  raise MissingContentTypeError, msg
end
file_from(path_or_file_or_url) click to toggle source
# File lib/esa/api_methods.rb, line 223
def file_from(path_or_file_or_url)
  path_or_file_or_url, headers_or_cookie = *path_or_file_or_url if path_or_file_or_url.is_a?(Array)

  if path_or_file_or_url.respond_to?(:read)
    path_or_file_or_url
  elsif path_or_file_or_url.is_a?(String) && HTTP_REGEX.match(path_or_file_or_url)
    remote_url = path_or_file_or_url
    headers =
      if headers_or_cookie
        headers_or_cookie.is_a?(Hash) ? headers_or_cookie : { Cookie: headers_or_cookie }
      else
        {}
      end
    response = send_simple_request(:get, remote_url, nil, headers)
    raise RemoteURLNotAvailableError, "#{remote_url} is not available." unless response.status == 200
    PathStringIO.new(File.basename(remote_url), response.body)
  else
    path = path_or_file_or_url
    File.new(path, "r+b")
  end
end
setup_params_for_upload(params, file) click to toggle source
# File lib/esa/api_methods.rb, line 245
def setup_params_for_upload(params, file)
  params[:type] = params.delete(:content_type) || content_type_from_file(file)
  params[:size] = file.size
  params[:name] = File.basename(file.path)
end
wrap(params, envelope) click to toggle source
# File lib/esa/api_methods.rb, line 207
def wrap(params, envelope)
  return params if params.nil?
  return params unless params.is_a?(Hash)
  return params if params.has_key?(envelope.to_sym) || params.has_key?(envelope.to_s)
  { envelope => params }
end