Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
kiwi-taskworld / lib / kiwi / taskworld / client.rb
Size: Mime:
# frozen_string_literal: true

require_relative './endpoints/task'
require_relative './endpoints/message'
require_relative './endpoints/channel'
require_relative './endpoints/user'

module Kiwi
  module Taskworld
    # Taskworld Client
    class Client
      include HTTParty
      include Taskworld::Endpoints::Task
      include Taskworld::Endpoints::Message
      include Taskworld::Endpoints::Channel
      include Taskworld::Endpoints::User

      base_uri 'https://asia-api.taskworld.com'

      attr_accessor :space_id, :project_id, :list_id

      def initialize(email: Taskworld.configuration.email,
                     password: Taskworld.configuration.password)

        @space_id ||= Taskworld.configuration.space_id
        @project_id ||= Taskworld.configuration.project_id
        @list_id ||= Taskworld.configuration.list_id

        auth(email, password)
      end

      private

      def auth(email, password)
        opts = {
          email: email,
          password: password
        }.to_json

        response = post('/v1/auth', body: opts)
        @access_token = response.dig('access_token')
        @default_space_id = response.dig('default_space_id')
        @workspaces = response.dig('workspaces')
      end

      def post(uri, opts)
        opts[:headers] = { 'Content-Type' => 'application/json' }
        # logger.debug "Taskworld Request => POST #{uri} #{opts[:body]}"
        resp = self.class.post(uri, opts)
        # logger.debug "Taskworld Response => #{resp.code} #{resp}"
        resp.parsed_response
      end
    end
  end
end