nutshell-crm 0.0.5 → 0.0.6.alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (260) hide show
  1. data/.rbenv-version +1 -0
  2. data/.travis.yml +8 -0
  3. data/CHANGELOG.md +5 -0
  4. data/README.md +37 -0
  5. data/Rakefile +14 -3
  6. data/lib/nutshell-crm.rb +92 -5
  7. data/lib/nutshell-crm/version.rb +1 -1
  8. data/nutshell-crm.gemspec +1 -0
  9. data/spec/nutshell-crm_spec.rb +17 -8
  10. data/vendor/bundle/bin/rake +19 -0
  11. data/vendor/bundle/gems/json-1.6.4/.gitignore +8 -0
  12. data/vendor/bundle/gems/json-1.6.4/.travis.yml +15 -0
  13. data/vendor/bundle/gems/json-1.6.4/CHANGES +227 -0
  14. data/vendor/bundle/gems/json-1.6.4/COPYING +58 -0
  15. data/vendor/bundle/gems/json-1.6.4/COPYING-json-jruby +57 -0
  16. data/vendor/bundle/gems/json-1.6.4/GPL +340 -0
  17. data/vendor/bundle/gems/json-1.6.4/Gemfile +11 -0
  18. data/vendor/bundle/gems/json-1.6.4/README-json-jruby.markdown +33 -0
  19. data/vendor/bundle/gems/json-1.6.4/README.rdoc +358 -0
  20. data/vendor/bundle/gems/json-1.6.4/Rakefile +408 -0
  21. data/vendor/bundle/gems/json-1.6.4/TODO +1 -0
  22. data/vendor/bundle/gems/json-1.6.4/VERSION +1 -0
  23. data/{README → vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/.keep} +0 -0
  24. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log +52 -0
  25. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat +1000 -0
  26. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat +1001 -0
  27. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat +900 -0
  28. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat +901 -0
  29. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat +1000 -0
  30. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat +1001 -0
  31. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log +261 -0
  32. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat +1000 -0
  33. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat +1001 -0
  34. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat +1000 -0
  35. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat +1001 -0
  36. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat +1000 -0
  37. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat +1001 -0
  38. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log +262 -0
  39. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat +1000 -0
  40. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat +1001 -0
  41. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log +82 -0
  42. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log +34 -0
  43. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat +900 -0
  44. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat +901 -0
  45. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log +81 -0
  46. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat +1000 -0
  47. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat +1001 -0
  48. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log +82 -0
  49. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat +1000 -0
  50. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat +1001 -0
  51. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log +82 -0
  52. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat +1000 -0
  53. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat +1001 -0
  54. data/vendor/bundle/gems/json-1.6.4/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log +82 -0
  55. data/vendor/bundle/gems/json-1.6.4/benchmarks/data/.keep +0 -0
  56. data/vendor/bundle/gems/json-1.6.4/benchmarks/generator2_benchmark.rb +222 -0
  57. data/vendor/bundle/gems/json-1.6.4/benchmarks/generator_benchmark.rb +224 -0
  58. data/vendor/bundle/gems/json-1.6.4/benchmarks/ohai.json +1216 -0
  59. data/vendor/bundle/gems/json-1.6.4/benchmarks/ohai.ruby +1 -0
  60. data/vendor/bundle/gems/json-1.6.4/benchmarks/parser2_benchmark.rb +251 -0
  61. data/vendor/bundle/gems/json-1.6.4/benchmarks/parser_benchmark.rb +259 -0
  62. data/vendor/bundle/gems/json-1.6.4/data/example.json +1 -0
  63. data/vendor/bundle/gems/json-1.6.4/data/index.html +38 -0
  64. data/vendor/bundle/gems/json-1.6.4/data/prototype.js +4184 -0
  65. data/vendor/bundle/gems/json-1.6.4/diagrams/.keep +0 -0
  66. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/fbuffer/fbuffer.h +156 -0
  67. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/Makefile +187 -0
  68. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/extconf.rb +13 -0
  69. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/generator.bundle +0 -0
  70. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/generator.c +1384 -0
  71. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/generator.h +161 -0
  72. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/generator/generator.o +0 -0
  73. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/json/ext/generator.bundle +0 -0
  74. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/json/ext/parser.bundle +0 -0
  75. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/Makefile +187 -0
  76. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/extconf.rb +13 -0
  77. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.bundle +0 -0
  78. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.c +2203 -0
  79. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.h +77 -0
  80. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.o +0 -0
  81. data/vendor/bundle/gems/json-1.6.4/ext/json/ext/parser/parser.rl +926 -0
  82. data/vendor/bundle/gems/json-1.6.4/install.rb +19 -0
  83. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/ByteListTranscoder.java +167 -0
  84. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/Generator.java +437 -0
  85. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/GeneratorMethods.java +232 -0
  86. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/GeneratorService.java +43 -0
  87. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/GeneratorState.java +522 -0
  88. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/OptionsReader.java +113 -0
  89. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/Parser.java +2640 -0
  90. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/Parser.rl +964 -0
  91. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/ParserService.java +35 -0
  92. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/RuntimeInfo.java +121 -0
  93. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/StringDecoder.java +166 -0
  94. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/StringEncoder.java +106 -0
  95. data/vendor/bundle/gems/json-1.6.4/java/src/json/ext/Utils.java +89 -0
  96. data/vendor/bundle/gems/json-1.6.4/json-java.gemspec +22 -0
  97. data/vendor/bundle/gems/json-1.6.4/json.gemspec +40 -0
  98. data/vendor/bundle/gems/json-1.6.4/json_pure.gemspec +42 -0
  99. data/vendor/bundle/gems/json-1.6.4/lib/json.rb +62 -0
  100. data/vendor/bundle/gems/json-1.6.4/lib/json/add/bigdecimal.rb +21 -0
  101. data/vendor/bundle/gems/json-1.6.4/lib/json/add/complex.rb +22 -0
  102. data/vendor/bundle/gems/json-1.6.4/lib/json/add/core.rb +11 -0
  103. data/vendor/bundle/gems/json-1.6.4/lib/json/add/date.rb +34 -0
  104. data/vendor/bundle/gems/json-1.6.4/lib/json/add/date_time.rb +50 -0
  105. data/vendor/bundle/gems/json-1.6.4/lib/json/add/exception.rb +31 -0
  106. data/vendor/bundle/gems/json-1.6.4/lib/json/add/ostruct.rb +31 -0
  107. data/vendor/bundle/gems/json-1.6.4/lib/json/add/range.rb +29 -0
  108. data/vendor/bundle/gems/json-1.6.4/lib/json/add/rational.rb +22 -0
  109. data/vendor/bundle/gems/json-1.6.4/lib/json/add/regexp.rb +30 -0
  110. data/vendor/bundle/gems/json-1.6.4/lib/json/add/struct.rb +30 -0
  111. data/vendor/bundle/gems/json-1.6.4/lib/json/add/symbol.rb +25 -0
  112. data/vendor/bundle/gems/json-1.6.4/lib/json/add/time.rb +35 -0
  113. data/vendor/bundle/gems/json-1.6.4/lib/json/common.rb +470 -0
  114. data/vendor/bundle/gems/json-1.6.4/lib/json/ext.rb +21 -0
  115. data/vendor/bundle/gems/json-1.6.4/lib/json/ext/.keep +0 -0
  116. data/vendor/bundle/gems/json-1.6.4/lib/json/pure.rb +21 -0
  117. data/vendor/bundle/gems/json-1.6.4/lib/json/pure/generator.rb +468 -0
  118. data/vendor/bundle/gems/json-1.6.4/lib/json/pure/parser.rb +359 -0
  119. data/vendor/bundle/gems/json-1.6.4/lib/json/version.rb +8 -0
  120. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail1.json +1 -0
  121. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail10.json +1 -0
  122. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail11.json +1 -0
  123. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail12.json +1 -0
  124. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail13.json +1 -0
  125. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail14.json +1 -0
  126. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail18.json +1 -0
  127. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail19.json +1 -0
  128. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail2.json +1 -0
  129. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail20.json +1 -0
  130. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail21.json +1 -0
  131. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail22.json +1 -0
  132. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail23.json +1 -0
  133. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail24.json +1 -0
  134. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail25.json +1 -0
  135. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail27.json +2 -0
  136. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail28.json +2 -0
  137. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail3.json +1 -0
  138. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail4.json +1 -0
  139. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail5.json +1 -0
  140. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail6.json +1 -0
  141. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail7.json +1 -0
  142. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail8.json +1 -0
  143. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/fail9.json +1 -0
  144. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass1.json +56 -0
  145. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass15.json +1 -0
  146. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass16.json +1 -0
  147. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass17.json +1 -0
  148. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass2.json +1 -0
  149. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass26.json +1 -0
  150. data/vendor/bundle/gems/json-1.6.4/tests/fixtures/pass3.json +6 -0
  151. data/vendor/bundle/gems/json-1.6.4/tests/setup_variant.rb +11 -0
  152. data/vendor/bundle/gems/json-1.6.4/tests/test_json.rb +527 -0
  153. data/vendor/bundle/gems/json-1.6.4/tests/test_json_addition.rb +188 -0
  154. data/vendor/bundle/gems/json-1.6.4/tests/test_json_encoding.rb +65 -0
  155. data/vendor/bundle/gems/json-1.6.4/tests/test_json_fixtures.rb +35 -0
  156. data/vendor/bundle/gems/json-1.6.4/tests/test_json_generate.rb +249 -0
  157. data/vendor/bundle/gems/json-1.6.4/tests/test_json_string_matching.rb +40 -0
  158. data/vendor/bundle/gems/json-1.6.4/tests/test_json_unicode.rb +72 -0
  159. data/vendor/bundle/gems/json-1.6.4/tools/fuzz.rb +139 -0
  160. data/vendor/bundle/gems/json-1.6.4/tools/server.rb +62 -0
  161. data/vendor/bundle/gems/rake-0.9.2.2/.gemtest +0 -0
  162. data/vendor/bundle/gems/rake-0.9.2.2/CHANGES +522 -0
  163. data/vendor/bundle/gems/rake-0.9.2.2/MIT-LICENSE +21 -0
  164. data/vendor/bundle/gems/rake-0.9.2.2/README.rdoc +197 -0
  165. data/vendor/bundle/gems/rake-0.9.2.2/Rakefile +369 -0
  166. data/vendor/bundle/gems/rake-0.9.2.2/TODO +20 -0
  167. data/vendor/bundle/gems/rake-0.9.2.2/bin/rake +33 -0
  168. data/vendor/bundle/gems/rake-0.9.2.2/install.rb +90 -0
  169. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake.rb +69 -0
  170. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/alt_system.rb +109 -0
  171. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/application.rb +595 -0
  172. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/classic_namespace.rb +11 -0
  173. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/clean.rb +32 -0
  174. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/cloneable.rb +25 -0
  175. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/compositepublisher.rb +21 -0
  176. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/ftptools.rb +150 -0
  177. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/publisher.rb +73 -0
  178. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/rubyforgepublisher.rb +16 -0
  179. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/sshpublisher.rb +50 -0
  180. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/contrib/sys.rb +191 -0
  181. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/default_loader.rb +10 -0
  182. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/dsl_definition.rb +176 -0
  183. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/early_time.rb +18 -0
  184. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ext/core.rb +27 -0
  185. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ext/module.rb +39 -0
  186. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ext/string.rb +167 -0
  187. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ext/time.rb +14 -0
  188. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_creation_task.rb +24 -0
  189. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_list.rb +403 -0
  190. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_task.rb +47 -0
  191. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_utils.rb +114 -0
  192. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/file_utils_ext.rb +145 -0
  193. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/gempackagetask.rb +15 -0
  194. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb +51 -0
  195. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/invocation_exception_mixin.rb +16 -0
  196. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/loaders/makefile.rb +40 -0
  197. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/multi_task.rb +16 -0
  198. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/name_space.rb +25 -0
  199. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/packagetask.rb +185 -0
  200. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/pathmap.rb +1 -0
  201. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/pseudo_status.rb +24 -0
  202. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/rake_module.rb +29 -0
  203. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb +22 -0
  204. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/rdoctask.rb +234 -0
  205. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/ruby182_test_unit_fix.rb +25 -0
  206. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
  207. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/runtest.rb +21 -0
  208. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/task.rb +327 -0
  209. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/task_argument_error.rb +7 -0
  210. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/task_arguments.rb +78 -0
  211. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/task_manager.rb +307 -0
  212. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/tasklib.rb +22 -0
  213. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/testtask.rb +191 -0
  214. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/version.rb +8 -0
  215. data/vendor/bundle/gems/rake-0.9.2.2/lib/rake/win32.rb +55 -0
  216. data/vendor/bundle/gems/rake-0.9.2.2/test/file_creation.rb +34 -0
  217. data/vendor/bundle/gems/rake-0.9.2.2/test/helper.rb +492 -0
  218. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake.rb +40 -0
  219. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_application.rb +489 -0
  220. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_application_options.rb +335 -0
  221. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_clean.rb +14 -0
  222. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_definitions.rb +80 -0
  223. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_directory_task.rb +46 -0
  224. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_dsl.rb +77 -0
  225. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_early_time.rb +31 -0
  226. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_extension.rb +59 -0
  227. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_creation_task.rb +56 -0
  228. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_list.rb +628 -0
  229. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_list_path_map.rb +8 -0
  230. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_task.rb +102 -0
  231. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_file_utils.rb +305 -0
  232. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_ftp_file.rb +59 -0
  233. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_functional.rb +450 -0
  234. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_invocation_chain.rb +52 -0
  235. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_makefile_loader.rb +44 -0
  236. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_multi_task.rb +51 -0
  237. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_name_space.rb +43 -0
  238. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_package_task.rb +79 -0
  239. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_path_map.rb +157 -0
  240. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_path_map_explode.rb +34 -0
  241. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_path_map_partial.rb +18 -0
  242. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_pseudo_status.rb +21 -0
  243. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_rake_test_loader.rb +21 -0
  244. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_rdoc_task.rb +83 -0
  245. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_require.rb +40 -0
  246. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_rules.rb +327 -0
  247. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task.rb +267 -0
  248. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_argument_parsing.rb +103 -0
  249. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_arguments.rb +88 -0
  250. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_lib.rb +9 -0
  251. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_manager.rb +157 -0
  252. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_manager_argument_resolution.rb +36 -0
  253. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_task_with_arguments.rb +173 -0
  254. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_test_task.rb +120 -0
  255. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_top_level_functions.rb +111 -0
  256. data/vendor/bundle/gems/rake-0.9.2.2/test/test_rake_win32.rb +72 -0
  257. data/vendor/bundle/gems/rake-0.9.2.2/test/test_sys.rb +20 -0
  258. data/vendor/bundle/specifications/json-1.6.4.gemspec +39 -0
  259. data/vendor/bundle/specifications/rake-0.9.2.2.gemspec +34 -0
  260. metadata +285 -18
@@ -0,0 +1 @@
1
+ 1.9.2-p290
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 1.9.3
5
+ - 1.9.2
6
+ - 1.8.7
7
+
8
+ env: NUTSHELL_USERNAME=mshafrir@gmail.com NUTSHELL_APIKEY=1d58ccb0eeba08916ed379bc3607c6999e343412
@@ -0,0 +1,5 @@
1
+ ## v0.0.5
2
+ ## v0.0.4
3
+ ## v0.0.3
4
+ ## v0.0.2
5
+ ## v0.0.1
@@ -0,0 +1,37 @@
1
+ # Nutshell CRM [![Build Status](https://secure.travis-ci.org/mshafrir/nutshell-crm.png)](http://travis-ci.org/mshafrir/nutshell-crm)
2
+
3
+ Author: [mshafrir@gmail.com](mailto:mshafrir@gmail.com)
4
+
5
+ ## Description ##
6
+
7
+ Nutshell Crm is a Ruby wrapper for the Nutshell Crm API.
8
+
9
+ [Nutshell API Reference](http://www.nutshell.com/api/)
10
+
11
+ ## Reference ##
12
+
13
+ - {NutshellCrm::Client}
14
+
15
+ ## Example Usage ##
16
+
17
+ require "nutshell-crm"
18
+
19
+ # Instantiate the Nutshell client.
20
+ nutshell = NutshellCrm::Client.new "user@example.com", "MY_API_KEY"
21
+
22
+ # Get the first open lead with stub data (default).
23
+ nutshell.find_leads({status: 0}).first
24
+ #=> {"stub"=>true, "id"=>1001, "entityType"=>"Leads", "name"=>"Lead\u20131001", "status"=>0, "primaryAccountName"=>nil}
25
+
26
+ # Enable non-stub responses.
27
+ nutshell.stub_responses = false
28
+
29
+ # Get the first open lead with full data.
30
+ nutshell.find_leads({status: 0}).first
31
+ #=> {"id"=>1001, "entityType"=>"Leads", "name"=>"Lead\u20131001", "status"=>0, "primaryAccountName"=>nil, "creator"=>{}}
32
+
33
+
34
+
35
+ ## Install ##
36
+
37
+ gem install nutshell-crm
data/Rakefile CHANGED
@@ -1,5 +1,16 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake'
3
+ require 'rake/task'
4
+ require 'rake/testtask'
2
5
 
3
- task :test do
4
- exec "bundle exec rspec spec/nutshell-crm_spec.rb"
6
+ task :local_test do
7
+ exec 'rbenv local 1.9.2-p290 && bundle exec rspec spec/nutshell-crm_spec.rb && rbenv local 1.9.3'
8
+ end
9
+
10
+ task :doc do
11
+ exec 'yardoc && cp -vR doc/ ../nutshell-crm-docs && cd ../nutshell-crm-docs && git add . && git commit -am "Update documentation." && git push origin gh-pages'
12
+ end
13
+
14
+ task :default do
15
+ exec 'bundle exec rspec'
5
16
  end
@@ -6,10 +6,21 @@ require 'httparty'
6
6
  # @author Michael Shafrir
7
7
  module NutshellCrm
8
8
  class Client
9
- attr_accessor :api_url, :stub_responses
9
+
10
+ attr_accessor :api_url
11
+
12
+ # Global setting for stubResponses parameter.
13
+ attr_accessor :stub_responses
14
+
10
15
  include HTTParty
11
16
  format :json
12
17
 
18
+ # A new instance of the NutshellCrm client.
19
+ # Configure at https://app01.nutshell.com/setup/api-key
20
+ #
21
+ # @param [String] username
22
+ # @param [String] api_key
23
+ # API key
13
24
  def initialize(username, api_key)
14
25
  @username = username
15
26
  @api_key = api_key
@@ -20,270 +31,335 @@ module NutshellCrm
20
31
  @api_url = "https://#{api_host}/api/v1/json"
21
32
  end
22
33
 
34
+ # Saves the given e-mail message.
35
+ #
36
+ # @param [String] e-mail in RFC 822 format
23
37
  def add_email(email_string)
24
38
  exec_request build_payload({:emailString => email_string})
25
39
  end
26
40
 
27
41
  # Gets all of the custom fields available for Leads, Accounts and Contacts, including appropriate meta-information.
28
42
  #
29
- # @return [json] the custom fields available for Leads, Accounts and Contacts, including appropriate meta-information
43
+ # @return [Object] the custom fields available for Leads, Accounts and Contacts, including appropriate meta-information
30
44
  def describe_custom_fields
31
45
  exec_request build_payload
32
46
  end
33
47
 
48
+ # Edit an account.
49
+ #
50
+ # @param [Integer] account_id
51
+ # account ID to edit
52
+ # @param [String] rev
53
+ # the revision
54
+ # @param [Hash] account
55
+ # updated account information
34
56
  def edit_account(account_id, rev, account)
35
57
  exec_request build_payload({:accountId => account_id, :rev => rev, :account => account})
36
58
  end
37
59
 
60
+ # Edit an activity.
38
61
  def edit_activity(activity_id, rev, activity)
39
62
  exec_request build_payload({:activityId => activity_id, :rev => rev, :activity => activity})
40
63
  end
41
64
 
65
+ # Edit a contact.
42
66
  def edit_contact(contact_id, rev, contact)
43
67
  exec_request build_payload({:contactId => contact_id, :rev => rev, :contact => contact})
44
68
  end
45
69
 
70
+ # Edit a lead.
46
71
  def edit_lead(lead_id, rev, lead)
47
72
  exec_request build_payload({:leadId => lead_id, :rev => rev, :lead => lead})
48
73
  end
49
74
 
75
+ # Update a process step.
50
76
  def edit_step(step_id, rev, step)
51
77
  exec_request build_payload({:stepId => step_id, :rev => rev, :step => step})
52
78
  end
53
79
 
80
+ # Find accounts matching a specified query.
54
81
  def find_accounts(query, order_by = nil, order_direction = nil, limit = nil, page = nil, stub_responses = nil)
55
82
  params = {:query => query, :orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page, :stubResponses => stub_responses}
56
83
  payload = build_payload params
57
84
  exec_request(payload)
58
85
  end
59
86
 
87
+ # Get all active account types (to be applied to an account).
60
88
  def find_account_types(order_by = nil, order_direction = nil, limit = nil, page = nil)
61
89
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
62
90
  payload = build_payload params
63
91
  exec_request(payload)
64
92
  end
65
93
 
94
+ # Find activities matching a specified query.
66
95
  def find_activities(query, order_by = nil, order_direction = nil, limit = nil, page = nil, stub_responses = nil)
67
96
  params = {:query => query, :orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page, :stubResponses => stub_responses}
68
97
  payload = build_payload params
69
98
  exec_request(payload)
70
99
  end
71
100
 
101
+ # Get all active activity types.
72
102
  def find_activity_types(order_by = nil, order_direction = nil, limit = nil, page = nil)
73
103
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
74
104
  payload = build_payload params
75
105
  exec_request(payload)
76
106
  end
77
107
 
108
+ # Get all active Competitors.
78
109
  def find_competitors(order_by = nil, order_direction = nil, limit = nil, page = nil)
79
110
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
80
111
  payload = build_payload params
81
112
  exec_request(payload)
82
113
  end
83
114
 
115
+ # Find contacts associated with a specified account or lead.
84
116
  def find_contacts(query, order_by = nil, order_direction = nil, limit = nil, page = nil, stub_responses = nil)
85
117
  params = {:query => query, :orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page, :stubResponses => stub_responses}
86
118
  payload = build_payload params
87
119
  exec_request(payload)
88
120
  end
89
121
 
122
+ # Get all active Delays (seen in Step responses in availableDelayIds).
90
123
  def find_delays(order_by = nil, order_direction = nil, limit = nil, page = nil)
91
124
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
92
125
  payload = build_payload params
93
126
  exec_request(payload)
94
127
  end
95
128
 
129
+ # Get all active Industries (to be applied to an account)
96
130
  def find_industries(order_by = nil, order_direction = nil, limit = nil, page = nil)
97
131
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
98
132
  payload = build_payload params
99
133
  exec_request(payload)
100
134
  end
101
135
 
136
+ # Get all possible outcomes for a closed lead.
102
137
  def find_lead_outcomes(order_by = nil, order_direction = nil, limit = nil, page = nil)
103
138
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
104
139
  payload = build_payload params, 'findLead_Outcomes'
105
140
  exec_request(payload)
106
141
  end
107
142
 
143
+ # Find leads matching a specified query.
108
144
  def find_leads(query, order_by = nil, order_direction = nil, limit = nil, page = nil, stub_responses = nil)
109
145
  params = {:query => query, :orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page, :stubResponses => stub_responses}
110
146
  payload = build_payload params
111
147
  exec_request(payload)
112
148
  end
113
149
 
150
+ # Get all active markets.
114
151
  def find_markets(order_by = nil, order_direction = nil, limit = nil, page = nil)
115
152
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
116
153
  payload = build_payload params
117
154
  exec_request(payload)
118
155
  end
119
156
 
157
+ # Get all active milestones.
120
158
  def find_milestones(order_by = nil, order_direction = nil, limit = nil, page = nil)
121
159
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
122
160
  payload = build_payload params
123
161
  exec_request(payload)
124
162
  end
125
163
 
164
+ # Get all active Origins.
126
165
  def find_origins(order_by = nil, order_direction = nil, limit = nil, page = nil)
127
166
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
128
167
  payload = build_payload params
129
168
  exec_request(payload)
130
169
  end
131
170
 
171
+ # Get all active products.
132
172
  def find_products(order_by = nil, order_direction = nil, limit = nil, page = nil, stub_responses = nil)
133
173
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page, :stubResponses => stub_responses}
134
174
  payload = build_payload params
135
175
  exec_request(payload)
136
176
  end
137
177
 
178
+ # Return all publicly-visible settings.
138
179
  def find_settings(order_by = nil, order_direction = nil, limit = nil, page = nil)
139
180
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
140
181
  payload = build_payload params
141
182
  exec_request(payload)
142
183
  end
143
184
 
185
+ # Get all active Sources.
144
186
  def find_sources(order_by = nil, order_direction = nil, limit = nil, page = nil)
145
187
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
146
188
  payload = build_payload params
147
189
  exec_request(payload)
148
190
  end
149
191
 
192
+ # Get all active tags.
150
193
  def find_tags
151
194
  exec_request build_payload
152
195
  end
153
196
 
197
+ # Get all active Teams.
154
198
  def find_teams(order_by = nil, order_direction = nil, limit = nil, page = nil)
155
199
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
156
200
  payload = build_payload params
157
201
  exec_request(payload)
158
202
  end
159
203
 
204
+ # Get all territories.
160
205
  def find_territories(order_by = nil, order_direction = nil, limit = nil, page = nil)
161
206
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
162
207
  payload = build_payload params
163
208
  exec_request(payload)
164
209
  end
165
210
 
211
+ # Find timeline events (Activities, Emails and Notes) for an Entity.
166
212
  def find_timeline(query, order_by = nil, order_direction = nil, limit = nil, page = nil, stub_responses = nil)
167
213
  params = {:query => query, :orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page, :stubResponses => stub_responses}
168
214
  payload = build_payload params
169
215
  exec_request(payload)
170
216
  end
171
217
 
218
+ # Get all active Users.
172
219
  def find_users(order_by = nil, order_direction = nil, limit = nil, page = nil)
173
220
  params = {:orderBy => order_by, :orderDirection => order_direction, :limit => limit, :page => page}
174
221
  payload = build_payload params
175
222
  exec_request(payload)
176
223
  end
177
224
 
225
+ # Get the specified Account.
178
226
  def get_account(account_id, rev = nil)
179
227
  params = {:accountId => account_id, :rev => rev}
180
228
  exec_request build_payload(params)
181
229
  end
182
230
 
231
+ # Get the specified Activity.
183
232
  def get_activity(activity_id, rev = nil)
184
233
  params = {:activityId => activity_id, :rev => rev}
185
234
  exec_request build_payload(params)
186
235
  end
187
236
 
237
+ # Returns graph data and overview information for various sales analytics reports.
188
238
  def getAnalyticsReport(report_type, period, filter_entity = nil, options = nil)
189
239
  params = {:reportType => report_type, :period => period, :filter => filter_entity, :options => options}
190
240
  exec_request build_payload(params)
191
241
  end
192
242
 
243
+ # Get the specified Contact.
193
244
  def get_contact(contact_id, rev = nil)
194
245
  params = {:contactId => contact_id, :rev => rev}
195
246
  exec_request build_payload(params)
196
247
  end
197
248
 
249
+ # Get the specified Email.
198
250
  def get_email(email_id, rev = nil)
199
251
  params = {:emailId => email_id, :rev => rev}
200
252
  exec_request build_payload(params)
201
253
  end
202
254
 
255
+ # Get the specified lead.
203
256
  def get_lead(lead_id, rev = nil)
204
257
  params = {:leadId => lead_id, :rev => rev}
205
258
  exec_request build_payload(params)
206
259
  end
207
260
 
261
+ # Return all mobile-related settings in a simple key-value array.
208
262
  def get_mobile_settings
209
263
  exec_request build_payload
210
264
  end
211
265
 
266
+ # Get the specified Note.
212
267
  def get_note(note_id, rev = nil)
213
268
  params = {:noteId => note_id, :rev => rev}
214
269
  exec_request build_payload(params)
215
270
  end
216
271
 
272
+ # Get all information for a product (including full price list).
217
273
  def get_product(product_id, rev = nil)
218
274
  params = {:productId => product_id, :rev => rev}
219
275
  exec_request build_payload(params)
220
276
  end
221
277
 
278
+ # Gets the last-updated times of each of the provisioning bins.
222
279
  def get_update_times
223
280
  exec_request build_payload
224
281
  end
225
282
 
283
+ # Get all info about a user.
226
284
  def get_user(user_id = nil, rev = nil)
227
285
  params = {:userId => user_id, :rev => rev}
228
286
  exec_request build_payload(params)
229
287
  end
230
288
 
289
+ # Create a new account.
231
290
  def new_account(account)
232
291
  exec_request build_payload({:account => account})
233
292
  end
234
293
 
294
+ # Create a new activity.
235
295
  def new_activity(activity)
236
296
  exec_request build_payload({:activity => activity})
237
297
  end
238
298
 
299
+ # Create a new contact.
239
300
  def new_contact(contact)
240
301
  exec_request build_payload({:contact => contact})
241
302
  end
242
303
 
304
+ # Create a new Lead.
243
305
  def new_lead(lead)
244
306
  exec_request build_payload({:lead => lead})
245
307
  end
246
308
 
309
+ # Create a new tag.
310
+ #
311
+ # @param [Hash] tag
312
+ # See {Nut_Api_Render_Model_Tag}[http://www.nutshell.com/api/detail/class_nut___api___render___model___tag.html]
247
313
  def new_tag(tag)
248
314
  exec_request build_payload({:tag => tag})
249
315
  end
250
316
 
317
+ # Return a list of Account stubs matching a given search string.
251
318
  def search_accounts(query, limit = nil)
252
319
  exec_request build_payload({:string => query, :limit => limit})
253
320
  end
254
321
 
322
+ # Works just like searchUniversal, but only searches by email address.
255
323
  def search_by_email(email_address)
256
324
  exec_request build_payload({:emailAddressString => email_address})
257
325
  end
258
326
 
327
+ # Return a list of Competitor stubs matching a given search string.
259
328
  def search_competitors(query, limit = nil)
260
329
  exec_request build_payload({:string => query, :limit => limit})
261
330
  end
262
331
 
332
+ # Return a list of Contact stubs matching a given search string.
263
333
  def search_contacts(query, limit = nil)
264
334
  exec_request build_payload({:string => query, :limit => limit})
265
335
  end
266
336
 
337
+ # Return a list of Contact and User stubs matching a given search string.
267
338
  def search_contacts_and_users(query, limit = nil)
268
339
  exec_request build_payload({:string => query, :limit => limit})
269
340
  end
270
341
 
342
+ # Return a list of Lead stubs matching a given search string.
271
343
  def search_leads(query, limit = nil)
272
344
  exec_request build_payload({:string => query, :limit => limit})
273
345
  end
274
346
 
347
+ # Return a list of Product stubs matching a given search string.
275
348
  def search_products(query, limit = nil)
276
349
  exec_request build_payload({:string => query, :limit => limit})
277
350
  end
278
351
 
352
+ # Return a list of Source stubs matching a given search string.
279
353
  def search_sources(query, limit = nil)
280
354
  exec_request build_payload({:string => query, :limit => limit})
281
355
  end
282
356
 
357
+ # Return a list of Contact, Lead, and Account stubs matching a given search string.
283
358
  def search_universal(query)
284
359
  exec_request build_payload({:string => query})
285
360
  end
286
361
 
362
+ # Return a list of User and Team stubs matching a given search string.
287
363
  def search_users_and_teams(query, limit = nil)
288
364
  exec_request build_payload({:string => query, :limit => limit})
289
365
  end
@@ -293,6 +369,12 @@ module NutshellCrm
293
369
 
294
370
  private
295
371
 
372
+ # Builds the payload for a request.
373
+ #
374
+ # @param [Hash] params
375
+ # @param [String] override_method
376
+ # needed if the Nutshell API method cannot be determined from the class method name
377
+ # @return [String] the payload in JSON format
296
378
  def build_payload(params = nil, override_method = nil)
297
379
  # Calculate the Nutshell API method name based on the Ruby method name (with a few exceptions)
298
380
  if override_method.nil?
@@ -302,7 +384,9 @@ module NutshellCrm
302
384
  method = override_method
303
385
  end
304
386
 
305
- params[:stubResponses] = @stub_responses if not(params.nil?) && params.has_key?(:stubResponses) && not(@stub_responses.nil?)
387
+ if (not params.nil?) && params.has_key?(:stubResponses) && (not @stub_responses.nil?)
388
+ params[:stubResponses] = @stub_responses
389
+ end
306
390
 
307
391
  # Create the payload
308
392
  payload = {:method => camelcase(method), :id => generate_request_id}
@@ -316,10 +400,13 @@ module NutshellCrm
316
400
 
317
401
 
318
402
  # All Nutshell API requests need a request id.
403
+ #
404
+ # @return [String] request id
319
405
  def generate_request_id
320
- Digest::MD5.hexdigest(Time.now.to_i.to_s).slice(0..8)
406
+ Digest::MD5.hexdigest(rand.to_s).slice(0..8)
321
407
  end
322
408
 
409
+ # Executes an arbitrary request.
323
410
  def exec_request(payload, override_url = nil)
324
411
  response = HTTParty.post(override_url.nil? ? @api_url : override_url,
325
412
  :basic_auth => {:username => @username, :password => @api_key},
@@ -331,7 +418,7 @@ module NutshellCrm
331
418
  error = response['error']
332
419
  error_code = error['code']
333
420
  error_msg = error['message']
334
- raise "#{error_msg} (#{error_code})"
421
+ raise "Nutshell API Error: #{error_msg} (#{error_code})"
335
422
  end
336
423
 
337
424
  response['result']