active_call-zoho_crm 0.1.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.
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ZohoCrm::Record::UpsertService < ZohoCrm::BaseService
4
+ attr_reader :module_name, :data, :duplicate_check_fields, :skip_feature_execution, :trigger
5
+
6
+ validates :module_name, :data, presence: true
7
+
8
+ after_call :set_facade
9
+
10
+ delegate_missing_to :@facade
11
+
12
+ def initialize(module_name:, data:, duplicate_check_fields: [], skip_feature_execution: [], trigger: [])
13
+ @module_name = module_name
14
+ @data = data.is_a?(Array) ? data : [data]
15
+ @duplicate_check_fields = duplicate_check_fields
16
+ @skip_feature_execution = skip_feature_execution
17
+ @trigger = trigger
18
+ end
19
+
20
+ # Create a record.
21
+ #
22
+ # ==== Examples
23
+ #
24
+ # service = ZohoCrm::Record::UpsertService.call(
25
+ # module_name: 'Contacts',
26
+ # data: {
27
+ # 'Email' => 'eric.cartman@example.com',
28
+ # 'First_Name' => 'Eric',
29
+ # 'Last_Name' => 'Cartman Theodore 2nd'
30
+ # },
31
+ # duplicate_check_fields: ['Email']
32
+ # )
33
+ #
34
+ # service.success? # => true
35
+ # service.errors # => #<ActiveModel::Errors []>
36
+ #
37
+ # service.response # => #<Faraday::Response ...>
38
+ # service.response.status # => 200
39
+ # service.response.body # => {}
40
+ #
41
+ # service.facade # => #<ZohoCrm::Record::Facade ...>
42
+ # service.facade.attributes
43
+ # service.attributes
44
+ #
45
+ # POST /crm/v7/:module_name/upsert
46
+ def call
47
+ connection.post("#{module_name}/upsert", **params)
48
+ end
49
+
50
+ private
51
+
52
+ def params
53
+ {
54
+ data: data,
55
+ duplicate_check_fields: duplicate_check_fields,
56
+ skip_feature_execution: skip_feature_execution,
57
+ trigger: trigger
58
+ }.compact_blank
59
+ end
60
+
61
+ def set_facade
62
+ @facade = ZohoCrm::Record::Facade.new(response.body)
63
+ end
64
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ZohoCrm
4
+ VERSION = '0.1.0'
5
+ end
data/lib/zoho_crm.rb ADDED
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_call'
4
+ require 'active_call/api'
5
+
6
+ loader = Zeitwerk::Loader.for_gem
7
+ loader.ignore("#{__dir__}/active_call-zoho_crm.rb")
8
+ loader.ignore("#{__dir__}/zoho_crm/error.rb")
9
+ loader.collapse("#{__dir__}/zoho_crm/concerns")
10
+ loader.setup
11
+
12
+ require_relative 'zoho_crm/error'
13
+ require_relative 'zoho_crm/version'
14
+
15
+ module ZohoCrm; end
data/sig/zoho_crm.rbs ADDED
@@ -0,0 +1,4 @@
1
+ module ZohoCrm
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: active_call-zoho_crm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Kobus Joubert
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2025-04-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: active_call-api
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.1'
27
+ description: Zoho CRM exposes the Zoho CRM API endpoints through service objects.
28
+ email:
29
+ - kobus@translate3d.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rspec"
35
+ - ".rubocop.yml"
36
+ - CHANGELOG.md
37
+ - LICENSE.txt
38
+ - README.md
39
+ - Rakefile
40
+ - lib/active_call-zoho_crm.rb
41
+ - lib/zoho_crm.rb
42
+ - lib/zoho_crm/access_token/facade.rb
43
+ - lib/zoho_crm/access_token/get_service.rb
44
+ - lib/zoho_crm/base_service.rb
45
+ - lib/zoho_crm/concerns/enumerable.rb
46
+ - lib/zoho_crm/error.rb
47
+ - lib/zoho_crm/grant_token/facade.rb
48
+ - lib/zoho_crm/grant_token/get_service.rb
49
+ - lib/zoho_crm/organization/facade.rb
50
+ - lib/zoho_crm/organization/get_service.rb
51
+ - lib/zoho_crm/record/create_service.rb
52
+ - lib/zoho_crm/record/delete_service.rb
53
+ - lib/zoho_crm/record/facade.rb
54
+ - lib/zoho_crm/record/get_service.rb
55
+ - lib/zoho_crm/record/list_service.rb
56
+ - lib/zoho_crm/record/search_service.rb
57
+ - lib/zoho_crm/record/update_service.rb
58
+ - lib/zoho_crm/record/upsert_service.rb
59
+ - lib/zoho_crm/version.rb
60
+ - sig/zoho_crm.rbs
61
+ homepage: https://github.com/kobusjoubert/zoho_crm
62
+ licenses:
63
+ - MIT
64
+ metadata:
65
+ allowed_push_host: https://rubygems.org
66
+ rubygems_mfa_required: 'true'
67
+ homepage_uri: https://github.com/kobusjoubert/zoho_crm
68
+ source_code_uri: https://github.com/kobusjoubert/zoho_crm
69
+ changelog_uri: https://github.com/kobusjoubert/zoho_crm/blob/main/CHANGELOG.md
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 3.1.0
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubygems_version: 3.3.27
86
+ signing_key:
87
+ specification_version: 4
88
+ summary: Zoho CRM
89
+ test_files: []