agafonovmak / pipe_rocket

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Pipedrive API wrapper for Ruby on Rails.

Installation

Add this line to your application's Gemfile:

gem 'pipe_rocket'

And then execute:

bundle

Or install it yourself as:

gem install pipe_rocket

Setup

#config/initializers/pipedrive.rb

ENV['pipedrive_api_token'] = '[YOUR_API_TOKEN]'
CUSTOM_FIELD_NAMES = {
  deal: {
    b6be1824d9...90fea09: 'name'
  }
}

CUSTOM_FIELD_NAMES - hash, which overrides custom field names from server. If you want to have same names as remote, just assign empty hash({}).

Usage

Methods

All api methods returns PipeRocket::Entity heir objects. They have attr_accessor methods for all fields, returned by API. Custom fields can be accessed by their name(not key) or by name specified in CUSTOM_FIELD_NAMES.

Via Pipedrive class you can work with the following models:

  • deals
  • deal_fields
  • notes
  • organizations
  • organization_fields
  • persons
  • person_fields
  • pipelines
  • stages

Get all records

Pipedrive.deals.all

Get record by id

Pipedrive.deals.find([id])

Create record

Pipedrive.deals.create([hash])

Update record

Pipedrive.deals.update([hash])

Get persons by email

Pipedrive.persons.find_by_email([email])

PipeRocket::Deal

deal = Pipedrive.deals.find([id]) #PipeRocket::Deal object

deal.files #File objects, attached to deal, including files from email messages.
deal.files.first.url #S3 url by which you can directly download file from Amazon.

deal.stage #PipeRocket::Stage object
deal.display_stage_name #deal stage (e.g. Sales:Contact Made)

PipeRocket::Stage

stage = Pipedrive.stages.find([id]) #PipeRocket::Stage object

stage.display_name #stage name(e.g. Sales:Contact Made)

stage.pipeline #PipeRocket::Pipeline object

Webhooks

Gem provides way to receive webhooks from Pipedrive. Endpoint url should looks like this:

host/pipedrive/[object]/[action]

For example:

host/pipedrive/deal/updated

If event happens gem send ActiveSupport::Notification like 'deal_updated' with related object.

Handle events

#config/initializers/events.rb

ActiveSupport::Notifications.subscribe '[object]_[action]' do |*args|
  event = ActiveSupport::Notifications::Event.new(*args)
  [object] = event.payload[:[object]] #PipeRocket::[object] object
end

e.g

ActiveSupport::Notifications.subscribe 'deal_updated' do |*args|
  event = ActiveSupport::Notifications::Event.new(*args)
  deal = event.payload[:deal] #PipeRocket::Deal object
end

This will work with deal, note, organization, person, pipeline, stage, user objects and all event actions.

Exceptions

If there is no connection or Pipedrive API returns error code, gem raises PipeRocket::Error. Error object has field code which contains HTTP error code(e.g. 400, 404, 408)

Credits

Sponsored by JetRockets.

enter image description here

License

Please see LICENSE for licensing details.

About

License:MIT License


Languages

Language:HTML 74.3%Language:JavaScript 9.4%Language:Ruby 8.2%Language:CSS 8.2%