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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +21 -10
- data/README.md +20 -17
- data/closeio.gemspec +10 -6
- data/lib/closeio.rb +1 -42
- data/lib/closeio/client.rb +59 -0
- data/lib/closeio/resources/activity.rb +81 -0
- data/lib/closeio/resources/bulk_action.rb +34 -0
- data/lib/closeio/resources/contact.rb +37 -0
- data/lib/closeio/resources/custom_field.rb +33 -0
- data/lib/closeio/resources/email_template.rb +32 -0
- data/lib/closeio/resources/lead.rb +40 -0
- data/lib/closeio/resources/lead_status.rb +29 -0
- data/lib/closeio/resources/opportunity.rb +37 -0
- data/lib/closeio/resources/opportunity_status.rb +29 -0
- data/lib/closeio/resources/organization.rb +15 -0
- data/lib/closeio/resources/paginated_list.rb +4 -0
- data/lib/closeio/resources/report.rb +19 -0
- data/lib/closeio/resources/smart_view.rb +33 -0
- data/lib/closeio/resources/task.rb +37 -0
- data/lib/closeio/resources/user.rb +15 -0
- data/lib/closeio/version.rb +1 -1
- metadata +86 -35
- data/.document +0 -5
- data/lib/closeio/activity_report.rb +0 -20
- data/lib/closeio/base.rb +0 -92
- data/lib/closeio/bulk_action.rb +0 -25
- data/lib/closeio/config.rb +0 -23
- data/lib/closeio/contact.rb +0 -3
- data/lib/closeio/custom_field.rb +0 -8
- data/lib/closeio/custom_report.rb +0 -15
- data/lib/closeio/email_activity.rb +0 -8
- data/lib/closeio/email_template.rb +0 -3
- data/lib/closeio/lead.rb +0 -28
- data/lib/closeio/lead_status.rb +0 -7
- data/lib/closeio/note_activity.rb +0 -8
- data/lib/closeio/opportunity.rb +0 -15
- data/lib/closeio/opportunity_status.rb +0 -7
- data/lib/closeio/organization.rb +0 -8
- data/lib/closeio/paginated_list.rb +0 -27
- data/lib/closeio/railtie.rb +0 -12
- data/lib/closeio/saved_search.rb +0 -7
- data/lib/closeio/status_report.rb +0 -11
- data/lib/closeio/task.rb +0 -3
- data/lib/closeio/user.rb +0 -7
data/.document
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
module Closeio
|
2
|
-
class ActivityReport < Base
|
3
|
-
attr_reader :date_start, :date_end, :user_id
|
4
|
-
|
5
|
-
def initialize(org_id, date_start, date_end, user_id=nil)
|
6
|
-
@path = "/report/activity/#{org_id}"
|
7
|
-
@date_start = date_start
|
8
|
-
@date_end = date_end
|
9
|
-
@user_id = user_id
|
10
|
-
end
|
11
|
-
|
12
|
-
def run
|
13
|
-
query_params = {date_start: date_start, date_end: date_end}
|
14
|
-
query_params.merge!(user_id: user_id) if user_id
|
15
|
-
|
16
|
-
get("#{@path}/", query: query_params)
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
data/lib/closeio/base.rb
DELETED
@@ -1,92 +0,0 @@
|
|
1
|
-
module Closeio
|
2
|
-
class Base < OpenStruct
|
3
|
-
|
4
|
-
include HTTParty
|
5
|
-
base_uri 'https://app.close.io/api/v1'
|
6
|
-
headers 'Content-Type' => 'application/json'
|
7
|
-
#debug_output $stdout
|
8
|
-
format :json
|
9
|
-
|
10
|
-
extend Forwardable
|
11
|
-
def_delegators 'self.class', :delete, :get, :post, :put, :resource_path, :bad_response
|
12
|
-
|
13
|
-
attr_reader :data
|
14
|
-
|
15
|
-
def initialize(attrs={})
|
16
|
-
if attrs['data']
|
17
|
-
super attrs['data']
|
18
|
-
else
|
19
|
-
super Hash[attrs]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def save
|
24
|
-
put "#{resource_path}#{self.id}/", body: self.to_h.to_json
|
25
|
-
end
|
26
|
-
|
27
|
-
class << self
|
28
|
-
def descendants
|
29
|
-
ObjectSpace.each_object(Class).select { |klass| klass < self }
|
30
|
-
end
|
31
|
-
|
32
|
-
def configure(api_key)
|
33
|
-
@default_options.merge!(basic_auth: {
|
34
|
-
username: api_key,
|
35
|
-
password: ''
|
36
|
-
})
|
37
|
-
end
|
38
|
-
|
39
|
-
def bad_response(response)
|
40
|
-
raise "Unauthorized" if response.values.include? "Unauthorized"
|
41
|
-
raise response.inspect
|
42
|
-
end
|
43
|
-
|
44
|
-
def all(response=nil, opts={})
|
45
|
-
res = response || get(resource_path, opts)
|
46
|
-
|
47
|
-
if res.success?
|
48
|
-
res['data'].nil? ? [] : res['data'].map{|obj| new(obj)}
|
49
|
-
else
|
50
|
-
bad_response(res)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
# Closeio::Lead.create name: "Bluth Company", contacts: [{name: "Buster Bluth", emails: [{email: "cartographer@bluthcompany.com"}]}]
|
55
|
-
def create(opts={})
|
56
|
-
res = post(resource_path, body: opts.to_json)
|
57
|
-
res.success? ? new(res) : bad_response(res)
|
58
|
-
end
|
59
|
-
|
60
|
-
#
|
61
|
-
# Closeio::Lead.update '39292', name: "Bluth Company", contacts: [{name: "Buster Bluth", emails: [{email: "cartographer@bluthcompany.com"}]}]
|
62
|
-
#
|
63
|
-
def update(id, opts={})
|
64
|
-
put "#{resource_path}#{id}/", body: opts.to_json
|
65
|
-
end
|
66
|
-
|
67
|
-
def destroy(id)
|
68
|
-
delete "#{resource_path}#{id}/"
|
69
|
-
end
|
70
|
-
|
71
|
-
def find(id)
|
72
|
-
res = get "#{resource_path}#{id}/"
|
73
|
-
res.ok? ? new(res) : bad_response(res)
|
74
|
-
end
|
75
|
-
|
76
|
-
def where(opts={})
|
77
|
-
res = get(resource_path, query: opts)
|
78
|
-
|
79
|
-
if res.success?
|
80
|
-
res['data'].nil? ? [] : res['data'].map{|obj| new(obj)}
|
81
|
-
else
|
82
|
-
bad_response res
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def resource_path
|
87
|
-
klass = name.split('::').last.gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase
|
88
|
-
return "/#{klass}/"
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
data/lib/closeio/bulk_action.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
module Closeio
|
2
|
-
class BulkAction < Base
|
3
|
-
def initialize(query, value)
|
4
|
-
@query = query
|
5
|
-
@value = value
|
6
|
-
@path = "#{resource_path}edit/"
|
7
|
-
end
|
8
|
-
|
9
|
-
def clear_custom_field
|
10
|
-
post(@path, body: {
|
11
|
-
query: @query,
|
12
|
-
type: "clear_custom_field",
|
13
|
-
custom_field_name: @value}.to_json
|
14
|
-
)
|
15
|
-
end
|
16
|
-
|
17
|
-
def set_lead_status
|
18
|
-
post(@path, body: {
|
19
|
-
query: @query,
|
20
|
-
type: "set_lead_status",
|
21
|
-
lead_status_id: @value}.to_json
|
22
|
-
)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/lib/closeio/config.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Closeio
|
2
|
-
module Config
|
3
|
-
|
4
|
-
class << self
|
5
|
-
attr_accessor :config
|
6
|
-
attr_accessor :api_key
|
7
|
-
end
|
8
|
-
|
9
|
-
%w(api_key).each do |method_name|
|
10
|
-
define_singleton_method(method_name) do
|
11
|
-
@config.fetch(method_name)
|
12
|
-
end
|
13
|
-
define_singleton_method("#{method_name}=") do |value|
|
14
|
-
if @config.blank?
|
15
|
-
@config = {method_name => value}
|
16
|
-
else
|
17
|
-
@config[method_name] = value
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|
data/lib/closeio/contact.rb
DELETED
data/lib/closeio/custom_field.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
module Closeio
|
2
|
-
class CustomReport < Base
|
3
|
-
def self.resource_path
|
4
|
-
return "/report/custom/"
|
5
|
-
end
|
6
|
-
|
7
|
-
def self.search(organization_id, opt={})
|
8
|
-
get "#{resource_path}#{organization_id}/", query: opts
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.leads organization_id, opts={}
|
12
|
-
get "#{resource_path}lead/#{organization_id}/", query: opts
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
data/lib/closeio/lead.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
module Closeio
|
2
|
-
class Lead < Base
|
3
|
-
#
|
4
|
-
# Options: '_limit' => 1000, 'query' => 'custom.status:2'
|
5
|
-
#
|
6
|
-
def self.where opts={}
|
7
|
-
res = get(resource_path, query: opts)
|
8
|
-
|
9
|
-
if res.success?
|
10
|
-
res['data'].nil? ? [] : res['data'].map{|obj| new(obj)}
|
11
|
-
else
|
12
|
-
bad_response res
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def emails
|
17
|
-
Closeio::EmailActivity.where lead_id: self.id
|
18
|
-
end
|
19
|
-
|
20
|
-
def notes
|
21
|
-
Closeio::NoteActivity.where lead_id: self.id
|
22
|
-
end
|
23
|
-
|
24
|
-
def contact
|
25
|
-
self.contacts.first
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
data/lib/closeio/lead_status.rb
DELETED
data/lib/closeio/opportunity.rb
DELETED
data/lib/closeio/organization.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
module Closeio
|
2
|
-
class PaginatedList < ::Array
|
3
|
-
attr_reader :total, :pages, :per_page, :page
|
4
|
-
def initialize(results)
|
5
|
-
@total = results['total']
|
6
|
-
@pages = results['pages']
|
7
|
-
@per_page = results['per_page']
|
8
|
-
@page = results['page']
|
9
|
-
|
10
|
-
result_key, result_class =
|
11
|
-
if results.has_key?('shots')
|
12
|
-
['shots', Closeio::Shot]
|
13
|
-
elsif results.has_key?('lead')
|
14
|
-
['leads', Closeio::Lead]
|
15
|
-
else
|
16
|
-
['comments', Closeio::Comment]
|
17
|
-
end
|
18
|
-
|
19
|
-
super((results[result_key] || []).map { |attrs| result_class.new attrs })
|
20
|
-
end
|
21
|
-
|
22
|
-
def inspect
|
23
|
-
ivar_str = instance_variables.map {|iv| "#{iv}=#{instance_variable_get(iv).inspect}"}.join(", ")
|
24
|
-
"#<#{self.class.inspect} #{ivar_str}, @contents=#{super}>"
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
data/lib/closeio/railtie.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
module Closeio
|
2
|
-
class Railtie < Rails::Railtie
|
3
|
-
|
4
|
-
initializer "setup closeio" do
|
5
|
-
config_file = Rails.root.join("config", "closeio.yml")
|
6
|
-
if config_file.file?
|
7
|
-
Closeio::Config.config = YAML.load(ERB.new(config_file.read).result)[Rails.env]
|
8
|
-
Closeio::Base.basic_auth Closeio::Config.api_key, ''
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
data/lib/closeio/saved_search.rb
DELETED
data/lib/closeio/task.rb
DELETED