class Pipedrive::API PIPEDRIVE_ALL_NOT_DELETED_DEALS = 'all_not_deleted' PIPEDRIVE_DEALS_URL = [PIPEDRIVE_API_URL, 'deals'].join("/") PIPEDRIVE_PEOPLE_URL = [PIPEDRIVE_API_URL, 'persons'].join("/") PIPEDRIVE_ORGANIZATIONS_URL = [PIPEDRIVE_API_URL, 'organizations'].join("/") def self.get_persons_owned_by_user(user_id) url = PIPEDRIVE_PEOPLE_URL params = { user_id: user_id } self.get(url, params) end def self.get_deals_for_person(person_id) url = [PIPEDRIVE_PEOPLE_URL, person_id, "deals"].join('/') params = { status: PIPEDRIVE_ALL_NOT_DELETED_DEALS } self.get(url, params) end def self.put_deal(deal_id, params) url = [PIPEDRIVE_DEALS_URL, deal_id].join("/") self.put(url, params) end def self.post_deal(params) self.post(PIPEDRIVE_DEALS_URL, params) end def self.put_person(person_id, params) url = [PIPEDRIVE_PEOPLE_URL, person_id].join("/") self.put(url, params) end def self.post_person(params) self.post(PIPEDRIVE_PEOPLE_URL, params) end def self.post_organization(params) self.post(PIPEDRIVE_ORGANIZATIONS_URL, params) end private def self.get(url, params) params.merge!({ start: 0, limit: 500, api_token: token }) response = Typhoeus.get(url, params: params) if response.success? JSON.parse(response.body)['data'] end end def self.put(url, params) Typhoeus.put( url, params: { api_token: token }, body: params.to_json, headers: { 'content-type' => 'application/json' } ) end def self.post(url, params) Typhoeus.post( url, params: { api_token: token }, body: params.to_json, headers: { 'content-type' => 'application/json' } ) end def self.token Rails.application.secrets.pipedrive[:key] end end