SugarCRM

REST Bindings for SugarCRM!

SUMMARY:

RubyGem for interacting with SugarCRM via REST.

Description:

A less clunky way to interact with SugarCRM via REST.

I’ve built an abstraction layer on top of the SugarCRM REST API, instead of get_entry(“Users”, “1”) you can call SugarCRM::User.find(1). There is also support for collections à la SugarCRM::User.find(1).accounts.

ActiveRecord style finders are in place, with limited support for conditions and joins e.g. SugarCRM::Contacts.find_by_title(“VP of Sales”) will work, but SugarCRM::Contacts.find_by_title(“VP of Sales”, {:conditions => {:deleted => 0}}) will not.

FEATURES/PROBLEMS:

  • Supports all v2 API calls

  • Auto-generation of Module specific objects. When a connection is established, get_available_modules is called and the resultant modules are turned into SugarCRM::Module classes.

  • If you just want to use the vanilla API, you can access the methods directly on the SugarCRM.connection object.

SYNOPSIS:

require 'sugarcrm'

# Establish a connection
SugarCRM::Base.establish_connection("http://localhost/sugarcrm", 'user', 'password', {:debug => false})

# Retrieve a user by user_name
SugarCRM::User.find_by_user_name("admin")

# Retrieve all Accounts owned by a particular user.
SugarCRM::User.find_by_user_name('sarah').accounts

# Show a list of available modules
SugarCRM.modules

# Use the HTTP Connection and SugarCRM API to load the Admin user
SugarCRM.connection.get_entry("Users", 1)

# Retrieve all Accounts by user name (direct API method)
SugarCRM.connection.get_entry_list(
  "Users",
  "users.user_name = \'sarah\'",
  {
    :link_fields => [
      {
        "name"  => "accounts",
        "value" => ["id", "name"]
      }
    ]          
  } 
)

REQUIREMENTS:

  • >= activesupport 3.0.0 gem

  • json gem

INSTALL:

  • sudo gem install sugarcrm

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright © 2010 Carl Hicks. See LICENSE for details.