Nate-River56/chatwork-utils

View on GitHub
src/chatwork.js

Summary

Maintainability
A
1 hr
Test Coverage
import _ from 'lodash';
import chatworkRo from './chatworkRo';

/**
 * @access public
 * @desc For use Chatwork services
 * @see http://developer.chatwork.com/ja/endpoints.html
 */
export default class chatwork extends chatworkRo {
  /**
   * @return {Promise} Return response or error message.
   * @desc 自分に対するコンタクト承認依頼を承認する
   * @param {number} requestId - リクエストID
   * @see http://developer.chatwork.com/ja/endpoint_incoming_requests.html#PUT-incoming_requests-request_id
   */
  approveIncomingRequest(requestId) {
    return this.instance.put(`/incoming_requests/${requestId}`);
  }

  /**
   * @return {Promise} Return response or error message.
   * @desc 自分に対するコンタクト承認依頼をキャンセルする
   * @param {number} requestId - リクエストID
   * @see http://developer.chatwork.com/ja/endpoint_incoming_requests.html#DELETE-incoming_requests-request_id
   */
  rejectIncomingRequest(requestId) {
    return this.instance.delete(`/incoming_requests/${requestId}`);
  }

  /**
   * @return {Promise} Return response or error message.
   * @desc グループチャットを新規作成
   * @param {Object} options - オプション引数
   * @param {string} options.description - チャット概要
   * @param {number[]} options.membersAdminIds - 管理者権限のユーザー
   * @param {number[]} options.membersMemberIds - メンバー権限のユーザー
   * @param {number[]} options.membersReadonlyIds - 閲覧のみ権限のユーザー
   * @param {string} options.iconPreset - アイコン種類
   * @param {string} options.name - グループチャット名
   * @see http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms
   */
  createChatroom(options) {
    return this.instance.post('/rooms', {
      description: options.description,
      members_admin_ids: _.join(options.membersAdminIds),
      members_member_ids: _.join(options.membersMemberIds),
      members_readonly_ids: _.join(options.membersReadonlyIds),
      icon_preset: options.iconPreset,
      name: options.name,
    });
  }

  /**
   * @return {Promise} Return response or error message.
   * @desc チャットの名前、アイコンをアップデート
   * @param {number} roomId - チャットルームID
   * @param {Object} options - オプション引数
   * @param {string} options.description - グループチャットの概要説明テキスト
   * @param {string} options.iconPreset - グループチャットのアイコン種類
   * @param {string} options.name - グループチャットのチャット名
   * @see http://developer.chatwork.com/ja/endpoint_rooms.html#PUT-rooms-room_id
   */
  updateChatroom(roomId, options) {
    return this.instance.put(`/rooms/${roomId}`, {
      description: options.description,
      icon_preset: options.iconPreset,
      name: options.name,
    });
  }

  /**
   * @return {Promise} Return response or error message.
   * @desc グループチャットを退席する
   * @param {number} roomId - チャットルームID
   * @see http://developer.chatwork.com/ja/endpoint_rooms.html#DELETE-rooms-room_id
   */
  leaveChatroom(roomId) {
    return this.instance.delete(`/rooms/${roomId}`, {
      data: {
        action_type: 'leave',
      },
    });
  }

  /**
   * @return {Promise} Return response or error message.
   * @desc グループチャットを削除する
   * @param {number} roomId - チャットルームID
   * @see http://developer.chatwork.com/ja/endpoint_rooms.html#DELETE-rooms-room_id
   */
  deleteChatroom(roomId) {
    return this.instance.delete(`/rooms/${roomId}`, {
      data: {
        action_type: 'delete',
      },
    });
  }

  /**
   * @return {Promise} Return response or error message.
   * @desc チャットのメンバーを一括変更
   * @param {number} roomId - チャットルームID
   * @param {Object} options - オプション引数
   * @param {number[]} options.membersAdminIds - 管理者権限のユーザー
   * @param {number[]} options.membersMemberIds - メンバー権限のユーザー
   * @param {number[]} options.membersReadonlyIds - 閲覧のみ権限のユーザー
   * @see http://developer.chatwork.com/ja/endpoint_rooms.html#PUT-rooms-room_id-members
   */
  modifyChatroomMembers(roomId, options) {
    return this.instance.put(`/rooms/${roomId}/members`, {
      members_admin_ids: _.join(options.membersAdminIds),
      members_member_ids: _.join(options.membersMemberIds),
      members_readonly_ids: _.join(options.membersReadonlyIds),
    });
  }

  /**
   * @return {Promise} Return response or error message.
   * @desc チャットに新しいメッセージを追加
   * @param {number} roomId - チャットルームID
   * @param {string} message - メッセージ本文
   * @see http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms-room_id-messages
   */
  createMessageChatroom(roomId, message) {
    return this.instance.post(`/rooms/${roomId}/messages`, {
      body: message,
    });
  }

  /**
   * @return {Promise} Return response or error message.
   * @desc チャットに新しいタスクを追加
   * @param {number} roomId - チャットルームID
   * @param {Object} options - オプション引数
   * @param {string} options.body - タスクの内容
   * @param {number} options.limit - タスクの期限(Unix timeで入力してください)
   * @param {number[]} options.toIds - 担当者のアカウントID
   * @see http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms-room_id-messages
   */
  createTaskChatroom(roomId, options) {
    return this.instance.post(`/rooms/${roomId}/tasks`, {
      body: options.body,
      limit: options.limit,
      to_ids: _.join(options.toIds),
    });
  }
}