closeio 1.0.7 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/Gemfile +0 -1
  4. data/Gemfile.lock +21 -10
  5. data/README.md +20 -17
  6. data/closeio.gemspec +10 -6
  7. data/lib/closeio.rb +1 -42
  8. data/lib/closeio/client.rb +59 -0
  9. data/lib/closeio/resources/activity.rb +81 -0
  10. data/lib/closeio/resources/bulk_action.rb +34 -0
  11. data/lib/closeio/resources/contact.rb +37 -0
  12. data/lib/closeio/resources/custom_field.rb +33 -0
  13. data/lib/closeio/resources/email_template.rb +32 -0
  14. data/lib/closeio/resources/lead.rb +40 -0
  15. data/lib/closeio/resources/lead_status.rb +29 -0
  16. data/lib/closeio/resources/opportunity.rb +37 -0
  17. data/lib/closeio/resources/opportunity_status.rb +29 -0
  18. data/lib/closeio/resources/organization.rb +15 -0
  19. data/lib/closeio/resources/paginated_list.rb +4 -0
  20. data/lib/closeio/resources/report.rb +19 -0
  21. data/lib/closeio/resources/smart_view.rb +33 -0
  22. data/lib/closeio/resources/task.rb +37 -0
  23. data/lib/closeio/resources/user.rb +15 -0
  24. data/lib/closeio/version.rb +1 -1
  25. metadata +86 -35
  26. data/.document +0 -5
  27. data/lib/closeio/activity_report.rb +0 -20
  28. data/lib/closeio/base.rb +0 -92
  29. data/lib/closeio/bulk_action.rb +0 -25
  30. data/lib/closeio/config.rb +0 -23
  31. data/lib/closeio/contact.rb +0 -3
  32. data/lib/closeio/custom_field.rb +0 -8
  33. data/lib/closeio/custom_report.rb +0 -15
  34. data/lib/closeio/email_activity.rb +0 -8
  35. data/lib/closeio/email_template.rb +0 -3
  36. data/lib/closeio/lead.rb +0 -28
  37. data/lib/closeio/lead_status.rb +0 -7
  38. data/lib/closeio/note_activity.rb +0 -8
  39. data/lib/closeio/opportunity.rb +0 -15
  40. data/lib/closeio/opportunity_status.rb +0 -7
  41. data/lib/closeio/organization.rb +0 -8
  42. data/lib/closeio/paginated_list.rb +0 -27
  43. data/lib/closeio/railtie.rb +0 -12
  44. data/lib/closeio/saved_search.rb +0 -7
  45. data/lib/closeio/status_report.rb +0 -11
  46. data/lib/closeio/task.rb +0 -3
  47. data/lib/closeio/user.rb +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7c63d177b066994bf6ff8a3bc54c71f3d52250d6
4
- data.tar.gz: 9af97dd030bd8a0655b8f45ee0469ce3ca88e1dd
3
+ metadata.gz: 16b49e31f5b6acbc4eb3293e99a30f416b741ac8
4
+ data.tar.gz: 37b287421327a1e720791f953d3e845f424fcaf6
5
5
  SHA512:
6
- metadata.gz: 40286736e36300567fcf0eb0edf5292b23f260f79c7802c443babbafa446930c497f1bc16c625098e765b8dbe85d98328c19d1ef9417ee68077f39af14339b5b
7
- data.tar.gz: e4fbcfc3f899e6db51d4b264aa52b4cb8c7b3c022b5a09565b361883168876bf01b24200b08109612388f0f8eed35b258de068252fe13de20f67781ddd96957e
6
+ metadata.gz: 812abd08ffa6dec4fcacda892f1e605721e2dc3d48013e6db5b88812ab3a246dc66de45f7ae06ed9f3c1c13b0302338188779911d79555202cc274fd6c12e437
7
+ data.tar.gz: 7e81b77ab2775c44574274ddef182f162123efa1ca9f1c546b31b756f30b81b6537486827327326c9004146521c3d8b00746c8e97a02118966a8d1e7b9ef612a
data/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ ## 2.0.0
2
+
3
+ - Rewrote the entire gem to be threadsafe
4
+
5
+ ## 1.0.6
6
+
7
+ - Add support for Activity Report
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'rake'
4
3
  gemspec
data/Gemfile.lock CHANGED
@@ -1,29 +1,40 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- closeio (1.0.4)
5
- crack (>= 0.1.8)
6
- httparty (>= 0.11.0)
4
+ closeio (2.0.0)
5
+ faraday
6
+ faraday_middleware
7
+ hashie
8
+ json
7
9
 
8
10
  GEM
9
11
  remote: https://rubygems.org/
10
12
  specs:
13
+ addressable (2.3.7)
11
14
  crack (0.4.2)
12
15
  safe_yaml (~> 1.0.0)
13
- httparty (0.13.3)
14
- json (~> 1.8)
15
- multi_xml (>= 0.5.2)
16
+ faraday (0.9.1)
17
+ multipart-post (>= 1.2, < 3)
18
+ faraday_middleware (0.9.1)
19
+ faraday (>= 0.7.4, < 0.10)
20
+ hashie (3.4.0)
16
21
  json (1.8.2)
17
- multi_xml (0.5.5)
22
+ minitest (5.5.1)
23
+ multipart-post (2.0.0)
18
24
  rake (10.1.0)
19
25
  safe_yaml (1.0.4)
20
- test-unit (2.5.5)
26
+ vcr (2.9.3)
27
+ webmock (1.20.4)
28
+ addressable (>= 2.3.6)
29
+ crack (>= 0.3.2)
21
30
 
22
31
  PLATFORMS
23
32
  ruby
24
33
 
25
34
  DEPENDENCIES
26
- bundler (~> 1.3)
35
+ bundler
27
36
  closeio!
37
+ minitest
28
38
  rake
29
- test-unit
39
+ vcr
40
+ webmock
data/README.md CHANGED
@@ -8,30 +8,29 @@ I :heart: Close.io, so if you have problems using the gem or would like to see s
8
8
  Add this line to your application's Gemfile:
9
9
  ````ruby
10
10
  # in your Gemfile
11
- gem 'closeio'
11
+ gem 'closeio', '~2.0'
12
12
 
13
13
  # then...
14
14
  bundle install
15
-
16
- # Set your Api Key (`config/initializers/closeio.rb` or `config/environment/*.rb`)
17
- Closeio.configure("xxxxxx")
18
15
  ````
19
16
 
20
17
  ### Usage
21
18
  ````ruby
19
+ client = Closeio::Client.new("api key")
20
+
22
21
  # Find a specific lead
23
- lead = Closeio::Lead.find('lead_xxxxxxxxxxxx')
22
+ client.find_lead('lead_xxxxxxxxxxxx')
24
23
 
25
24
  # See some data about the lead
26
- lead.addresses
27
- lead.contacts
28
- lead.opportunities
25
+ lead.data.addresses
26
+ lead.data.contacts
27
+ lead.data.opportunities
29
28
 
30
29
  # Find leads that match fields
31
- Closeio::Lead.where(query: 'custom.current_system:[Simple Donation]')
30
+ client.list_leads('custom.favorite_color:"cornflower blue"')
32
31
 
33
32
  # Create a lead
34
- Closeio::Lead.create(
33
+ client.create_lead(
35
34
  name: "Bluth Company",
36
35
  contacts: [{
37
36
  name: "Buster Bluth",
@@ -40,19 +39,23 @@ Add this line to your application's Gemfile:
40
39
  )
41
40
 
42
41
  # Saved Search (SmartView)
43
- saved_search = Closeio::SavedSearch.all.first
44
- saved_search.leads
42
+ smart_view = client.list_smart_views
43
+ smart_views.leads
45
44
  ````
46
45
 
46
+ ### History
47
+
48
+ View the [changelog](https://github.com/taylorbrooks/closeio/blob/master/CHANGELOG.md)
49
+ This gem follows [Semantic Versioning](http://semver.org/)
47
50
 
48
51
  ### Contributing
49
52
 
50
- 1. Fork it
51
- 2. Create your feature branch (`git checkout -b my-new-feature`)
52
- 3. Commit your changes (`git commit -am 'Add some feature'`)
53
- 4. Push to the branch (`git push origin my-new-feature`)
54
- 5. Create new Pull Request
53
+ Everyone is encouraged to help improve this project. Here are a few ways you can help:
55
54
 
55
+ - [Report bugs](https://github.com/taylorbrooks/closeio/issues)
56
+ - Fix bugs and [submit pull requests](https://github.com/taylorbrooks/closeio/pulls)
57
+ - Write, clarify, or fix documentation
58
+ - Suggest or add new features
56
59
 
57
60
  ### Copyright
58
61
  Copyright (c) 2015 Taylor Brooks. See LICENSE for details.
data/closeio.gemspec CHANGED
@@ -15,14 +15,18 @@ Gem::Specification.new do |s|
15
15
 
16
16
  s.files = `git ls-files`.split($/)
17
17
  s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
- s.test_files = s.files.grep(%r{^(test|spec|features)/})
18
+ s.test_files = s.files.grep(%r{^(test)/})
19
19
 
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_runtime_dependency(%q<crack>, [">= 0.1.8"])
23
- s.add_runtime_dependency(%q<httparty>, [">= 0.11.0"])
22
+ s.add_runtime_dependency 'faraday'
23
+ s.add_runtime_dependency 'faraday_middleware'
24
+ s.add_runtime_dependency 'json'
25
+ s.add_runtime_dependency 'hashie'
24
26
 
25
- s.add_development_dependency "bundler", "~> 1.3"
26
- s.add_development_dependency "rake"
27
- s.add_development_dependency "test-unit"
27
+ s.add_development_dependency 'bundler'
28
+ s.add_development_dependency 'rake'
29
+ s.add_development_dependency 'minitest'
30
+ s.add_development_dependency 'vcr'
31
+ s.add_development_dependency 'webmock'
28
32
  end
data/lib/closeio.rb CHANGED
@@ -1,45 +1,4 @@
1
- require 'httparty'
2
- require 'ostruct'
3
- require 'forwardable'
4
-
5
- require 'closeio/base'
6
- require 'closeio/bulk_action'
7
- require 'closeio/contact'
8
- require 'closeio/custom_field'
9
- require 'closeio/email_activity'
10
- require 'closeio/email_template'
11
- require 'closeio/lead'
12
- require 'closeio/lead_status'
13
- require 'closeio/note_activity'
14
- require 'closeio/organization'
15
- require 'closeio/opportunity'
16
- require 'closeio/opportunity_status'
17
- require 'closeio/paginated_list'
18
- require 'closeio/activity_report'
19
- require 'closeio/custom_report'
20
- require 'closeio/status_report'
21
- require 'closeio/saved_search'
22
- require 'closeio/task'
23
- require 'closeio/user'
24
- require 'closeio/version'
25
- require 'closeio/config'
26
- require 'closeio/railtie' if defined?(Rails)
1
+ require_relative 'closeio/client'
27
2
 
28
3
  module Closeio
29
- def self.configure(api_key=nil, opts={})
30
- set_api_keys(api_key, opts={})
31
- end
32
-
33
- def self.reset
34
- set_api_keys(nil)
35
- end
36
-
37
- def self.set_api_keys(api_key, opts={})
38
- hash = {basic_auth: {username: api_key, password: ''}}.merge!(opts)
39
-
40
- Closeio::Base.default_options.merge!(hash)
41
- Closeio::Base.descendants.each do |resource|
42
- resource.default_options.merge!(hash)
43
- end
44
- end
45
4
  end
@@ -0,0 +1,59 @@
1
+ require 'faraday'
2
+ require 'faraday_middleware'
3
+
4
+ Dir[File.expand_path('../resources/*.rb', __FILE__)].each{|f| require f}
5
+
6
+ module Closeio
7
+ class Client
8
+ include Closeio::Client::Activity
9
+ include Closeio::Client::BulkAction
10
+ include Closeio::Client::Contact
11
+ include Closeio::Client::CustomField
12
+ include Closeio::Client::EmailTemplate
13
+ include Closeio::Client::Lead
14
+ include Closeio::Client::LeadStatus
15
+ include Closeio::Client::Opportunity
16
+ include Closeio::Client::OpportunityStatus
17
+ include Closeio::Client::Report
18
+ include Closeio::Client::SmartView
19
+ include Closeio::Client::Task
20
+ include Closeio::Client::User
21
+
22
+ attr_reader :api_key
23
+
24
+ def initialize(api_key)
25
+ @api_key = api_key
26
+ end
27
+
28
+ def get(path, options={})
29
+ connection.get(path, options).body
30
+ end
31
+
32
+ def post(path, req_body)
33
+ connection.post do |req|
34
+ req.url(path)
35
+ req.body = req_body
36
+ end.body
37
+ end
38
+
39
+ def put(url, options={})
40
+ connection.put(path, options).body
41
+ end
42
+
43
+ def delete(url, options = {})
44
+ connection.delete(path, options).body
45
+ end
46
+
47
+ private
48
+ def connection
49
+ Faraday.new(url: "https://app.close.io/api/v1", headers: { accept: 'application/json' }) do |connection|
50
+ connection.basic_auth api_key, ''
51
+ connection.request :json
52
+ connection.response :logger
53
+ connection.use FaradayMiddleware::Mashify
54
+ connection.response :json
55
+ connection.adapter Faraday.default_adapter
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,81 @@
1
+ module Closeio
2
+ class Client
3
+ module Activity
4
+
5
+ def list_activities(options={})
6
+ get(activity_path, options)
7
+ end
8
+
9
+ #
10
+ # Note Activities
11
+ #
12
+
13
+ def list_notes(options={})
14
+ get(note_path, options)
15
+ end
16
+
17
+ def create_note(options)
18
+ post(note_path, options)
19
+ end
20
+
21
+ def update_note(id)
22
+ get("#{note_path}#{id}/")
23
+ end
24
+
25
+ def delete_note(id)
26
+ delete("#{note_path}#{id}/")
27
+ end
28
+
29
+ #
30
+ # Email Activities
31
+ #
32
+
33
+ def list_emails(options={})
34
+ get(email_path, options)
35
+ end
36
+
37
+ def create_email(body)
38
+ post(email_path, body)
39
+ end
40
+
41
+ def update_email(id, options={})
42
+ put("#{email_path}#{id}/", options)
43
+ end
44
+
45
+ def delete_email(id)
46
+ delete("#{email_path}#{id}/")
47
+ end
48
+
49
+ #
50
+ # Call Activities
51
+ #
52
+
53
+ def create_call(options={})
54
+ post(call_path, options)
55
+ end
56
+
57
+ def delete_call(id)
58
+ delete("#{call_path}#{id}/")
59
+ end
60
+
61
+ private
62
+
63
+ def activity_path
64
+ "activity/"
65
+ end
66
+
67
+ def note_path
68
+ "activity/note/"
69
+ end
70
+
71
+ def email_path
72
+ "activity/email/"
73
+ end
74
+
75
+ def call_path
76
+ "activity/call/"
77
+ end
78
+
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,34 @@
1
+ module Closeio
2
+ class Client
3
+ module BulkAction
4
+
5
+ def list_bulk_emails
6
+ get(bulk_action_path)
7
+ end
8
+
9
+ def send_bulk_email(options={})
10
+ post("#{bulk_action_path}email/", options)
11
+ end
12
+
13
+ def bulk_delete(options={})
14
+ post("#{bulk_action_path}delete/", options)
15
+ end
16
+
17
+ def bulk_edit(options={})
18
+ # query: search query for the edit
19
+ # type:
20
+ # set_lead_status: lead_status_id
21
+ # clear_custom_field: custom_field_name
22
+ # set_custom_field: custom_field_name, custom_field_value
23
+ post("#{bulk_action_path}edit/", options)
24
+ end
25
+
26
+ private
27
+
28
+ def bulk_action_path
29
+ "bulk_action/"
30
+ end
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,37 @@
1
+ module Closeio
2
+ class Client
3
+ module Contact
4
+
5
+ def list_contacts(params=nil)
6
+ get(contact_path)
7
+ end
8
+
9
+ def find_contact(id)
10
+ get(individual_contact_path(id))
11
+ end
12
+
13
+ def create_contact
14
+ post(contact_path)
15
+ end
16
+
17
+ def update_contact
18
+ put(individual_contact_path(id))
19
+ end
20
+
21
+ def delete_contact(id)
22
+ delete(individual_contact_path(id))
23
+ end
24
+
25
+ private
26
+
27
+ def contact_path
28
+ "contact/"
29
+ end
30
+
31
+ def individual_contact_path(id)
32
+ "#{contact_path}#{id}/"
33
+ end
34
+
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,33 @@
1
+ module Closeio
2
+ class Client
3
+ module CustomField
4
+
5
+ def list_custom_fields
6
+ get(custom_field_path)
7
+ end
8
+
9
+ def lead_custom_fields(id)
10
+ get("#{custom_field_path}#{id}/")
11
+ end
12
+
13
+ def create_custom_field(options={})
14
+ post(custom_field_path, options)
15
+ end
16
+
17
+ def update_custom_field(id, options={})
18
+ put("#{custom_field_path}#{id}/", options)
19
+ end
20
+
21
+ def delete_custom_field(id)
22
+ delete("#{custom_field_path}#{id}/")
23
+ end
24
+
25
+ private
26
+
27
+ def custom_field_path
28
+ "/custom_fields/lead/"
29
+ end
30
+
31
+ end
32
+ end
33
+ end