rubyzoho 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
data/lib/zoho_api.rb CHANGED
@@ -21,7 +21,7 @@ module ZohoApi
21
21
  @@module_fields = {}
22
22
  @@users = []
23
23
 
24
- #debug_output $stderr
24
+ debug_output $stderr
25
25
 
26
26
  attr_reader :auth_token, :module_fields
27
27
 
@@ -36,6 +36,7 @@ module ZohoApi
36
36
  element = x.add_element module_name
37
37
  row = element.add_element 'row', { 'no' => '1'}
38
38
  fields_values_hash.each_pair { |k, v| add_field(row, ApiUtils.symbol_to_string(k), v) }
39
+ pp x.to_s
39
40
  r = self.class.post(create_url(module_name, 'insertRecords'),
40
41
  :query => { :newFormat => 1, :authtoken => @auth_token,
41
42
  :scope => 'crmapi', :xmlData => x },
@@ -47,12 +48,21 @@ module ZohoApi
47
48
 
48
49
  def add_field(row, field, value)
49
50
  r = (REXML::Element.new 'FL')
50
- r.attributes['val'] = field
51
+ adjust_tag_case(field)
52
+ r.attributes['val'] = adjust_tag_case(field)
51
53
  r.add_text(value.to_s)
52
54
  row.elements << r
53
55
  row
54
56
  end
55
57
 
58
+ def adjust_tag_case(tag)
59
+ return tag if tag == 'id'
60
+ return tag.upcase if tag.downcase.rindex('id')
61
+ u_tags = %w[SEMODULE RELATED\ TO]
62
+ return tag.upcase if u_tags.index(tag.upcase)
63
+ tag
64
+ end
65
+
56
66
  def attach_file(module_name, record_id, file_path)
57
67
  mime_type = (MIME::Types.type_for(file_path)[0] || MIME::Types["application/octet-stream"][0])
58
68
  url = URI.parse(create_url(module_name, 'uploadFile') + "?authtoken=#{@auth_token}&scope=crmapi&id=#{record_id}")
@@ -69,7 +79,6 @@ module ZohoApi
69
79
 
70
80
  def add_file(module_name, record_id, file_path)
71
81
  url = URI.parse(create_url(module_name, 'uploadFile'))
72
- r = nil
73
82
  mime_type = (MIME::Types.type_for(file_path)[0] || MIME::Types["application/octet-stream"][0])
74
83
  f = File.open(file_path)
75
84
  req = Net::HTTP::Post::Multipart.new url.path,
@@ -116,6 +125,10 @@ module ZohoApi
116
125
 
117
126
  def fields(module_name)
118
127
  return user_fields if module_name == 'Users'
128
+ fields_from_api(module_name) if fields_from_record(module_name).nil?
129
+ end
130
+
131
+ def fields_from_api(module_name)
119
132
  mod_name = ApiUtils.string_to_symbol(module_name)
120
133
  return @@module_fields[mod_name] unless @@module_fields[mod_name].nil?
121
134
  r = self.class.post(create_url(module_name, 'getFields'),
@@ -125,6 +138,15 @@ module ZohoApi
125
138
  update_module_fields(mod_name, module_name, r)
126
139
  end
127
140
 
141
+ def fields_from_record(module_name)
142
+ mod_name = ApiUtils.string_to_symbol(module_name)
143
+ return @@module_fields[mod_name] unless @@module_fields[mod_name].nil?
144
+ r = first(module_name)
145
+ return nil if r.nil?
146
+ @@module_fields[mod_name] = r.first.keys
147
+ @@module_fields[mod_name]
148
+ end
149
+
128
150
  def first(module_name)
129
151
  some(module_name, 1, 1)
130
152
  end
@@ -172,6 +194,7 @@ module ZohoApi
172
194
  end
173
195
 
174
196
  def valid_related?(module_name, field)
197
+ return nil if field.downcase == 'smownerid'
175
198
  valid_relationships = {
176
199
  'Leads' => %w(email),
177
200
  'Accounts' => %w(accountid accountname),
data/rubyzoho.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rubyzoho"
8
- s.version = "0.1.4"
8
+ s.version = "0.1.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["amalc"]
12
- s.date = "2013-02-19"
12
+ s.date = "2013-02-20"
13
13
  s.description = ""
14
14
  s.email = ""
15
15
  s.extra_rdoc_files = [
@@ -229,29 +229,37 @@ describe RubyZoho::Crm do
229
229
  r.each { |c| RubyZoho::Crm::Task.delete(c.activityid) }
230
230
  end
231
231
 
232
- it 'should save an event record' do
233
- pending
234
- #accounts = RubyZoho::Crm::Account.all
235
- #pp a = accounts.first
236
- #events = RubyZoho::Crm::Event.all
237
- #pp ev = events.first
238
- #RubyZoho::Crm::Event.update(
239
- # :id => ev.activityid,
240
- # :subject => "Hello Dolly #{Time.now}.to_s"
241
- #)
242
- pp e = RubyZoho::Crm::Event.new(
243
- :event_owner => 'Wayne Giles',
244
- :smownerid => '748054000000056023',
232
+ it 'should save an task record related to an account' do
233
+ #pending
234
+ pp a = RubyZoho::Crm::Account.all.first
235
+ u = RubyZoho::Crm::User.all.first
236
+ c = RubyZoho::Crm::Contact.all.last
237
+ e = RubyZoho::Crm::Task.new(
238
+ :task_owner => u.user_name,
239
+ :subject => "Task should be related to #{a.account_name}",
240
+ :description => 'Nothing',
241
+ :smownerid => u.id,
242
+ :status => 'Not Started',
243
+ :priority => 'High',
244
+ :send_notification_email => 'false',
245
+ :due_date => '2014-02-16 16:00:00',
245
246
  :start_datetime => '2013-02-16 16:00:00',
246
247
  :end_datetime => '2014-02-16 16:00:00',
247
- :subject => 'Test Event',
248
- :related_to => "Potential One",
249
- :relatedtoid => '748054000000123057',
250
- :semodule => "Potentials",
251
- :contact_name => "Wayne Smith",
252
- :contactid => "748054000000097043"
248
+ :related_to => a.account_name,
249
+ :relatedtoid => a.accountid,
250
+ :semodule => 'Accounts',
251
+ :contact_name => "#{c.first_name} #{c.last_name}",
252
+ :contactid => c.contactid
253
253
  )
254
- e.save
254
+ pp e
255
+ pp e.save
256
+ end
257
+
258
+ it 'should get tasks by user' do
259
+ #pp u = RubyZoho::Crm::User.all.first
260
+ #pp tasks = RubyZoho::Crm::Task.find_by_smownerid(u.id)
261
+ pp tasks = RubyZoho::Crm::Task.all
262
+ tasks.map { |t| RubyZoho::Crm::Task.delete(t.activityid)} unless tasks.nil?
255
263
  end
256
264
 
257
265
  it 'should sort contact records' do
@@ -225,6 +225,10 @@ describe ZohoApi do
225
225
  r.map { |t| @zoho.delete_record('Tasks', t[:activityid]) }
226
226
  end
227
227
 
228
+ it 'should update fields from a record' do
229
+ @zoho.module_fields.count.should be >= 7
230
+ end
231
+
228
232
  it 'should update a contact' do
229
233
  @zoho.add_record('Contacts', @h_smith)
230
234
  contact = @zoho.find_records('Contacts', :email, '=', @h_smith[:email])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyzoho
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-19 00:00:00.000000000 Z
12
+ date: 2013-02-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httmultiparty