class Gist::Client

Constants

API_URL

Attributes

access_token[RW]

Public Class Methods

new(access_token) click to toggle source
# File lib/gist/client.rb, line 9
def initialize(access_token)
  @access_token = access_token
end

Public Instance Methods

assign_conversation(assignee_id: nil, teammate_id: , id:) click to toggle source
# File lib/gist/client.rb, line 57
def assign_conversation(assignee_id: nil, teammate_id: , id:)
    payload = {
            teammate_id: teammate_id,
            assignee_id: assignee_id
    }
    connect(payload: payload, method: :patch, endpoint: "conversations/#{id}/assign")
end
close_conversation(teammate_id:, id:) click to toggle source
# File lib/gist/client.rb, line 82
def close_conversation(teammate_id:, id:)
    payload = {
            teammate_id: teammate_id,
            state: "closed"
    }
    connect(payload: payload, method: :patch, endpoint: "conversations/#{id}")
end
connect(payload: {}, params: {}, method:, endpoint:) click to toggle source
# File lib/gist/client.rb, line 13
def connect(payload: {}, params: {}, method:, endpoint:)
    RestClient::Request.execute(
                      method: method,
                      url: "#{API_URL}/#{endpoint}",
                      payload: payload.to_json,
                      headers: {
                         content_type: 'application/json',
                         Authorization: "Bearer #{@access_token}",
                         params: params
                      }) do |response, request, result|
                      case response.code
                      when 400
                        [ :error, JSON.parse(response.to_str) ]
                      when 200
                        [ :success, JSON.parse(response.to_str) ]
                      else
                        fail "Invalid response #{response.to_str} received."
                      end
                    end

            rescue RestClient::Unauthorized, RestClient::Forbidden => err
              JSON.parse(err.response.to_str)
end
create_conversation(user_id: nil, email: nil, id:, body:, from:) click to toggle source
# File lib/gist/client.rb, line 37
def create_conversation(user_id: nil, email: nil, id:, body:, from:)
    payload = {
          from: {
            id: id,
            user_id: user_id,
            email: email
          },
          body: body
    }
    connect(payload: payload, method: :post, endpoint: "conversations")
end
delete_conversation(id:) click to toggle source
# File lib/gist/client.rb, line 53
def delete_conversation(id:)
    connect(method: :delete, endpoint: "conversations/#{id}")
end
get_conversation(id:) click to toggle source
# File lib/gist/client.rb, line 49
def get_conversation(id:)
    connect(method: :get, endpoint: "conversations/#{id}")
end
list_conversations(order: "desc", status: "all", sort: "updated_at") click to toggle source
# File lib/gist/client.rb, line 98
def list_conversations(order: "desc", status: "all", sort: "updated_at")
    params = {
            order: order,
            status: status,
            sort: sort
    }
    connect(params: params, method: :get, endpoint: "conversations")
end
prioritize_conversation(priority: "priority", teammate_id:, id:) click to toggle source
# File lib/gist/client.rb, line 90
def prioritize_conversation(priority: "priority", teammate_id:, id:)
    payload = {
            teammate_id: teammate_id,
            priority: priority
    }
    connect(payload: payload, method: :patch, endpoint: "conversations/#{id}/priority")
end
reopen_conversation(teammate_id:, id:) click to toggle source
# File lib/gist/client.rb, line 74
def reopen_conversation(teammate_id:, id:)
    payload = {
            teammate_id: teammate_id,
            state: "open"
    }
    connect(payload: payload, method: :patch, endpoint: "conversations/#{id}")
end
reply_to_contact(user_id: nil, email: nil, message_type: "reply", id: nil, body:, conversation_id:) click to toggle source
# File lib/gist/client.rb, line 111
def reply_to_contact(user_id: nil, email: nil, message_type: "reply", id: nil, body:, conversation_id:)
    payload = {
            message_type: message_type,
          from: {
            id: id,
            user_id: user_id,
            email: email,
            type: contact
          },
          body: body
    }
    connect(payload: payload, method: :get, endpoint: "conversations/#{conversation_id}/messages")
end
reply_to_teammate(message_type: "reply", teammate_id: , body:, conversation_id:) click to toggle source
# File lib/gist/client.rb, line 125
def reply_to_teammate(message_type: "reply", teammate_id: , body:, conversation_id:)
    payload = {
            message_type: message_type,
          from: {
            type: "teammate",
            teammate_id: teammate_id
          },
          body: body
    }
    connect(payload: payload, method: :get, endpoint: "conversations/#{conversation_id}/messages")
end
retrieve_conversation_count() click to toggle source
# File lib/gist/client.rb, line 107
def retrieve_conversation_count
    connect(method: :get, endpoint: "conversations/count")
end
snooze_conversation(snooze_until: nil, teammate_id:, id:) click to toggle source
# File lib/gist/client.rb, line 65
def snooze_conversation(snooze_until: nil, teammate_id:, id:)
    payload = {
            teammate_id: teammate_id,
            state: "snoozed",
            snooze_until: snooze_until
    }
    connect(payload: payload, method: :patch, endpoint: "conversations/#{id}")
end