infopark_crm_connector 0.9.2 → 1.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.
- data/.yardopts +8 -0
- data/CHANGELOG.markdown +94 -0
- data/LICENSE +2 -0
- data/README.markdown +110 -0
- data/lib/crm_connector.rb +11 -15
- data/lib/crm_connector/account.rb +31 -2
- data/lib/crm_connector/activity.rb +61 -3
- data/lib/crm_connector/configuration.rb +2 -4
- data/lib/crm_connector/contact.rb +123 -3
- data/lib/crm_connector/core/continuation_support.rb +2 -1
- data/lib/crm_connector/core/enumerator.rb +20 -11
- data/lib/crm_connector/core/known_attributes.rb +3 -1
- data/lib/crm_connector/core/resource.rb +108 -16
- data/lib/crm_connector/core/search_support.rb +3 -1
- data/lib/crm_connector/custom_type.rb +20 -3
- data/lib/crm_connector/{default.rb → errors.rb} +1 -1
- data/lib/crm_connector/errors/authentication_failed.rb +10 -0
- data/lib/crm_connector/errors/base.rb +8 -0
- data/lib/crm_connector/event.rb +37 -2
- data/lib/crm_connector/event_contact.rb +38 -2
- data/lib/crm_connector/mailing.rb +35 -2
- data/lib/crm_connector/role.rb +7 -2
- data/lib/crm_connector/system.rb +14 -8
- metadata +22 -53
- data/CHANGELOG.rdoc +0 -87
- data/README.rdoc +0 -59
- data/lib/crm_connector/base.rb +0 -4
- data/lib/crm_connector/core/base.rb +0 -111
- data/lib/crm_connector/debugging.rb +0 -21
- data/lib/crm_connector/default/account.rb +0 -30
- data/lib/crm_connector/default/activity.rb +0 -54
- data/lib/crm_connector/default/contact.rb +0 -112
- data/lib/crm_connector/default/custom_type.rb +0 -24
- data/lib/crm_connector/default/event.rb +0 -23
- data/lib/crm_connector/default/event_contact.rb +0 -57
- data/lib/crm_connector/default/mailing.rb +0 -33
- data/lib/crm_connector/default/resource.rb +0 -10
- data/lib/crm_connector/default/role.rb +0 -9
- data/lib/crm_connector/inheriting_resource.rb +0 -30
- data/lib/crm_connector/resource.rb +0 -15
data/lib/crm_connector/system.rb
CHANGED
@@ -1,16 +1,22 @@
|
|
1
1
|
module Infopark; module Crm
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
# TBD sync with web service
|
6
|
-
#++
|
2
|
+
|
3
|
+
##
|
4
|
+
# @note Implementation and naming may change
|
7
5
|
class System
|
6
|
+
|
7
|
+
##
|
8
|
+
# Reads the definition of all WebCRM templates.
|
9
|
+
# @return [Hash]
|
10
|
+
# @webcrm_rest_url <code>GET /api/templates</code>
|
8
11
|
def self.templates
|
9
12
|
response = base.connection.get(path, base.headers)
|
10
13
|
return response['templates'] if response.kind_of? Hash # ActiveResource 3.0
|
11
14
|
base.format.decode(response.body)
|
12
15
|
end
|
13
16
|
|
17
|
+
##
|
18
|
+
# Sets the definition of all WebCRM templates
|
19
|
+
# @param hash [Hash] the new definition of all WebCRM templates
|
14
20
|
def self.templates=(hash)
|
15
21
|
data = {'templates' => hash}
|
16
22
|
base.connection.put(path, base.format.encode(data), base.headers)
|
@@ -18,11 +24,11 @@ module Infopark; module Crm
|
|
18
24
|
|
19
25
|
private
|
20
26
|
|
21
|
-
def self.base
|
22
|
-
Infopark::Crm::Resource
|
27
|
+
def self.base
|
28
|
+
Infopark::Crm::Core::Resource
|
23
29
|
end
|
24
30
|
|
25
|
-
def self.path
|
31
|
+
def self.path
|
26
32
|
base.prefix + 'templates'
|
27
33
|
end
|
28
34
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: infopark_crm_connector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
|
+
- 1
|
7
8
|
- 0
|
8
|
-
-
|
9
|
-
|
10
|
-
version: 0.9.2
|
9
|
+
- 0
|
10
|
+
version: 1.0.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Infopark AG
|
@@ -15,12 +15,10 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-09-14 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
|
22
|
-
prerelease: false
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
24
22
|
none: false
|
25
23
|
requirements:
|
26
24
|
- - ">="
|
@@ -29,12 +27,12 @@ dependencies:
|
|
29
27
|
segments:
|
30
28
|
- 3
|
31
29
|
version: "3"
|
30
|
+
prerelease: false
|
31
|
+
requirement: *id001
|
32
32
|
type: :runtime
|
33
|
-
|
33
|
+
name: activeresource
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
|
-
|
36
|
-
prerelease: false
|
37
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
35
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
38
36
|
none: false
|
39
37
|
requirements:
|
40
38
|
- - ">="
|
@@ -44,65 +42,41 @@ dependencies:
|
|
44
42
|
- 2
|
45
43
|
- 3
|
46
44
|
version: "2.3"
|
47
|
-
type: :runtime
|
48
|
-
version_requirements: *id002
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: logger
|
51
45
|
prerelease: false
|
52
|
-
requirement:
|
53
|
-
none: false
|
54
|
-
requirements:
|
55
|
-
- - ">="
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
hash: 3
|
58
|
-
segments:
|
59
|
-
- 0
|
60
|
-
version: "0"
|
46
|
+
requirement: *id002
|
61
47
|
type: :runtime
|
62
|
-
|
48
|
+
name: backports
|
63
49
|
description: Infopark CRM Connector
|
64
50
|
email: info@infopark.de
|
65
51
|
executables: []
|
66
52
|
|
67
53
|
extensions: []
|
68
54
|
|
69
|
-
extra_rdoc_files:
|
70
|
-
|
71
|
-
- LICENSE
|
55
|
+
extra_rdoc_files: []
|
56
|
+
|
72
57
|
files:
|
73
|
-
-
|
58
|
+
- .yardopts
|
59
|
+
- CHANGELOG.markdown
|
74
60
|
- LICENSE
|
75
|
-
- README.
|
61
|
+
- README.markdown
|
76
62
|
- lib/crm_connector.rb
|
77
63
|
- lib/crm_connector/account.rb
|
78
64
|
- lib/crm_connector/activity.rb
|
79
|
-
- lib/crm_connector/base.rb
|
80
65
|
- lib/crm_connector/configuration.rb
|
81
66
|
- lib/crm_connector/contact.rb
|
82
67
|
- lib/crm_connector/core.rb
|
83
|
-
- lib/crm_connector/core/base.rb
|
84
68
|
- lib/crm_connector/core/continuation_support.rb
|
85
69
|
- lib/crm_connector/core/enumerator.rb
|
86
70
|
- lib/crm_connector/core/known_attributes.rb
|
87
71
|
- lib/crm_connector/core/resource.rb
|
88
72
|
- lib/crm_connector/core/search_support.rb
|
89
73
|
- lib/crm_connector/custom_type.rb
|
90
|
-
- lib/crm_connector/
|
91
|
-
- lib/crm_connector/
|
92
|
-
- lib/crm_connector/
|
93
|
-
- lib/crm_connector/default/activity.rb
|
94
|
-
- lib/crm_connector/default/contact.rb
|
95
|
-
- lib/crm_connector/default/custom_type.rb
|
96
|
-
- lib/crm_connector/default/event.rb
|
97
|
-
- lib/crm_connector/default/event_contact.rb
|
98
|
-
- lib/crm_connector/default/mailing.rb
|
99
|
-
- lib/crm_connector/default/resource.rb
|
100
|
-
- lib/crm_connector/default/role.rb
|
74
|
+
- lib/crm_connector/errors.rb
|
75
|
+
- lib/crm_connector/errors/authentication_failed.rb
|
76
|
+
- lib/crm_connector/errors/base.rb
|
101
77
|
- lib/crm_connector/event.rb
|
102
78
|
- lib/crm_connector/event_contact.rb
|
103
|
-
- lib/crm_connector/inheriting_resource.rb
|
104
79
|
- lib/crm_connector/mailing.rb
|
105
|
-
- lib/crm_connector/resource.rb
|
106
80
|
- lib/crm_connector/role.rb
|
107
81
|
- lib/crm_connector/system.rb
|
108
82
|
- lib/infopark_crm_connector.rb
|
@@ -110,13 +84,8 @@ homepage: http://www.infopark.de
|
|
110
84
|
licenses: []
|
111
85
|
|
112
86
|
post_install_message:
|
113
|
-
rdoc_options:
|
114
|
-
|
115
|
-
- UTF-8
|
116
|
-
- --main
|
117
|
-
- README.rdoc
|
118
|
-
- --title
|
119
|
-
- Infopark CRM Connector 0.9.2 Documentation
|
87
|
+
rdoc_options: []
|
88
|
+
|
120
89
|
require_paths:
|
121
90
|
- lib
|
122
91
|
required_ruby_version: !ruby/object:Gem::Requirement
|
data/CHANGELOG.rdoc
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
=== Version 0.9.2 - 2012-03-19
|
2
|
-
* Security improvement for +Contact.authenticate+, +Contact.password_set+ and +contact.password_request+
|
3
|
-
|
4
|
-
=== Version 0.9.1 - 2012-02-28
|
5
|
-
* Removed +Diary+. Please use +Activity+ instead.
|
6
|
-
* Added +Mailing+
|
7
|
-
* Added +appointment_*+ and +task_*+ fields to +Activity+
|
8
|
-
* Added +role_names+ field to +Contact+
|
9
|
-
* Added +tags+ field to +Activity+, +Account+ and +Contact+
|
10
|
-
|
11
|
-
=== Version 0.9 - 2012-01-27
|
12
|
-
Initial Release of Infopark CRM Connector
|
13
|
-
|
14
|
-
==== Changes from OMC Connector to CRM Connector
|
15
|
-
* Namespace changed from <tt>OmcConector::</tt> to <tt>Infopark::Crm::</tt>
|
16
|
-
* Attribute names may have changed. For new attributes please refer to {Webservice API}[https://www.infopark.de/2486249/70-Webservice-API].
|
17
|
-
* Works only with Infopark WebCRM.
|
18
|
-
|
19
|
-
===== Changed configuration
|
20
|
-
* +live_server_groups_callback+ - replaces +contact_roles_callback+
|
21
|
-
|
22
|
-
===== New classes
|
23
|
-
* +CustomType+
|
24
|
-
* +Role+
|
25
|
-
* +System+
|
26
|
-
|
27
|
-
===== New methods
|
28
|
-
* +Account.search+
|
29
|
-
* +Activity.search+
|
30
|
-
* +Contact.search+
|
31
|
-
* +Event.search+
|
32
|
-
* +EventContact.search+
|
33
|
-
* +contact.live_server_groups+ - replaces +contact.roles+
|
34
|
-
|
35
|
-
===== Removed classes
|
36
|
-
* +AccountCollection+
|
37
|
-
* +InquiryKind+ - use +CustomType+
|
38
|
-
* +InquiryLink+
|
39
|
-
* +Inquiry+ - use +Activity+
|
40
|
-
* +Location+ - use +contact+ and +account+ properties
|
41
|
-
* +Mailing+
|
42
|
-
* +RegistrationInquiry+
|
43
|
-
* +Session+
|
44
|
-
|
45
|
-
|
46
|
-
===== Removed methods
|
47
|
-
* +account.contacts+ - use <tt>Contact.search(\:params => {\:acount_id => acount_id})</tt>
|
48
|
-
* +Account.find_by_name+ - use +Account.search+
|
49
|
-
* +account.inquiries+ - use <tt>Activity.search(:params => {:account_id => account_id})</tt>
|
50
|
-
* +account.locations+
|
51
|
-
* +contact.account_activities+ - use <tt>Activity.search(:query => {:account_id => account_id})</tt>
|
52
|
-
* +contact.activities+ - use <tt>Activity.search(:params => {:contact_id => contact_id})</tt>
|
53
|
-
* +contact.create_activity+
|
54
|
-
* +contact.create_diary+
|
55
|
-
* +contact.create_location_with_account_association+
|
56
|
-
* +contact.create_location+
|
57
|
-
* +contact.create_registration_request+
|
58
|
-
* +contact.event_participation+
|
59
|
-
* +contact.find_activity+
|
60
|
-
* +Contact.find_by_email+ - use <tt>Contact.search(:params => {:email => email})</tt>
|
61
|
-
* +Contact.find_by_login+ - use <tt>Contact.search(:params => {:login => login})</tt>
|
62
|
-
* +Contact.languages+
|
63
|
-
* +contact.location+
|
64
|
-
* +Contact.lookup_uptions+
|
65
|
-
* +contact.move_location+
|
66
|
-
* +contact.roles+ - use +contact.live_server_groups+
|
67
|
-
* +contact.serialized_attributes+ - use +contact.attributes+
|
68
|
-
* +contact.subscriptions+
|
69
|
-
* +Contact.titles+
|
70
|
-
* +contact.update_location+
|
71
|
-
* +contact.update_subscriptions+
|
72
|
-
* +contact.validate_login+ - use <tt>Contact.search(:params => {:login => login})</tt>
|
73
|
-
* <tt>event.attend(!)</tt>
|
74
|
-
* +event.contacts+ - use <tt>EventContact.search(:event_id => event_id)</tt>
|
75
|
-
* +Event.find_by_name+
|
76
|
-
* <tt>event.inquire(!)</tt>
|
77
|
-
* <tt>event.refuse(!)</tt>
|
78
|
-
* <tt>event.register(!)</tt>
|
79
|
-
* +event_contact.attend+ - use <tt>event_contact.status = 'attended'</tt>
|
80
|
-
* +event_contact.inquire+ - use <tt>event_contact.status = 'unregistered'</tt>
|
81
|
-
* +event_contact.refuse+ - use <tt>event_contact.status = 'refused'</tt>
|
82
|
-
* +event_contact.register+ - use <tt>event_contact.status = 'registered'</tt>
|
83
|
-
* +event_contact.update_details+
|
84
|
-
* +inquiry.create_diary+
|
85
|
-
* +inquiry.create_link+
|
86
|
-
* +inquiry.diaries+
|
87
|
-
* +inquiry.links+
|
data/README.rdoc
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
|
2
|
-
==Quick Start
|
3
|
-
|
4
|
-
gem 'infopark_crm_connector'
|
5
|
-
|
6
|
-
require 'infopark_crm_connector'
|
7
|
-
|
8
|
-
Infopark::Crm.configure do |configuration|
|
9
|
-
configuration.url = "https://webcrm.server/url"
|
10
|
-
configuration.login = "webcrm_user"
|
11
|
-
configuration.api_key = "api_key_of_webcrm_user"
|
12
|
-
end
|
13
|
-
|
14
|
-
# Communicate with the WebCRM
|
15
|
-
Infopark::Crm::Contact.first.last_name
|
16
|
-
|
17
|
-
See Infopark::Crm.configure for a complete list of configuration keys.
|
18
|
-
|
19
|
-
The subclasses of Infopark::Crm::Resource (which itself inherits from
|
20
|
-
ActiveResource::Base) represent the WebCRM's domain models (accounts, contacts, events etc.).
|
21
|
-
|
22
|
-
==Examples
|
23
|
-
===Contact
|
24
|
-
# Retrieve the contact identified by the login 'root'
|
25
|
-
contact = Infopark::Crm::Contact.search(:params => {:login => 'root'}).first
|
26
|
-
|
27
|
-
# Change this contact's mail address
|
28
|
-
contact.update_attribute(:email, 'root@example.com')
|
29
|
-
|
30
|
-
# Send a new password request mail to the contact's address
|
31
|
-
contact.password_request
|
32
|
-
|
33
|
-
===Activity
|
34
|
-
|
35
|
-
# Configure a new activity kind
|
36
|
-
Infopark::Crm::CustomType.create(:name => 'contact form', :kind => 'Activity',
|
37
|
-
:states => ['new'])
|
38
|
-
|
39
|
-
# Create a new activity
|
40
|
-
activity = Infopark::Crm::Activity.new(:kind => 'contact form')
|
41
|
-
|
42
|
-
# Set properties of this activity
|
43
|
-
activity.title = 'Sprechen Sie Deutsch?'
|
44
|
-
|
45
|
-
# Switch to a different request locale
|
46
|
-
Infopark::Crm.configure {|c| c.locale = 'de'}
|
47
|
-
|
48
|
-
# Post the activity (which is going to fail)
|
49
|
-
activity.save
|
50
|
-
# => false
|
51
|
-
|
52
|
-
# Get to know what's missing
|
53
|
-
activity.errors.messages
|
54
|
-
# => {:state=>["ist kein gültiger Wert"]}
|
55
|
-
|
56
|
-
For further information on the WebCRM web service, have a look at
|
57
|
-
{this documentation}[https://www.infopark.com/2486249/70-Webservice-API].
|
58
|
-
|
59
|
-
:include: LICENSE
|
data/lib/crm_connector/base.rb
DELETED
@@ -1,111 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/class/attribute_accessors'
|
2
|
-
|
3
|
-
module Infopark; module Crm
|
4
|
-
class ConnectorError < StandardError # :nodoc:
|
5
|
-
end
|
6
|
-
|
7
|
-
# Raised when a contact provides wrong credentials (token/password)
|
8
|
-
#
|
9
|
-
# This differs from the case when the web service api credentials are not accepted
|
10
|
-
# (an ActiveResource error is raised then)
|
11
|
-
class AuthenticationFailed < ConnectorError; end
|
12
|
-
end; end
|
13
|
-
|
14
|
-
module Infopark; module Crm; module Core
|
15
|
-
class Base < ActiveResource::Base # :nodoc: all
|
16
|
-
|
17
|
-
self.format = :json
|
18
|
-
self.include_root_in_json = true
|
19
|
-
|
20
|
-
cattr_accessor :locale
|
21
|
-
cattr_accessor :http_host
|
22
|
-
|
23
|
-
#--
|
24
|
-
# TBD: drop when ActiveResource 3.0 support is dropped
|
25
|
-
#++
|
26
|
-
class SchemaSupport
|
27
|
-
def self.schema_mapping
|
28
|
-
@schema_mapping ||= {}
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.add(mapping)
|
32
|
-
schema_mapping.merge!(mapping)
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.schema_type(type)
|
36
|
-
default_mapping = ::ActiveResource::Schema::KNOWN_ATTRIBUTE_TYPES
|
37
|
-
return type if default_mapping.include?(type.to_s)
|
38
|
-
return schema_mapping[type.to_sym]
|
39
|
-
end
|
40
|
-
|
41
|
-
add :text => :string
|
42
|
-
add :date => :string
|
43
|
-
add :boolean => nil
|
44
|
-
end
|
45
|
-
|
46
|
-
def self.schema=(definition)
|
47
|
-
ares_compatible_definition = {}
|
48
|
-
definition.each do |k, v|
|
49
|
-
ares_compatible_definition[k] = SchemaSupport.schema_type(v)
|
50
|
-
end
|
51
|
-
super(ares_compatible_definition)
|
52
|
-
end
|
53
|
-
|
54
|
-
#--
|
55
|
-
# TBD: remove when https://github.com/rails/rails/issues/2479 is done
|
56
|
-
#++
|
57
|
-
def self.delete(id, options = {})
|
58
|
-
connection.delete(element_path(id, options), headers)
|
59
|
-
end
|
60
|
-
|
61
|
-
def self.headers
|
62
|
-
headers = super
|
63
|
-
headers.merge!({"Accept-Language" => self.locale}) if self.locale
|
64
|
-
headers.merge!({"Host" => self.http_host}) if self.http_host
|
65
|
-
headers
|
66
|
-
end
|
67
|
-
|
68
|
-
def self.configure(configuration)
|
69
|
-
self.site = configuration.url + '/' if configuration.url
|
70
|
-
self.user = configuration.login
|
71
|
-
self.password = configuration.api_key
|
72
|
-
self.locale = configuration.locale
|
73
|
-
self.http_host = configuration.http_host
|
74
|
-
include Debugging if configuration.debug
|
75
|
-
end
|
76
|
-
|
77
|
-
# Support for field associatable errors (without humanized name guessing)
|
78
|
-
def errors
|
79
|
-
@errors ||= Errors.new(self)
|
80
|
-
end
|
81
|
-
|
82
|
-
class Errors < ActiveResource::Errors # :nodoc:
|
83
|
-
# TBD temporary patch from https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/5616
|
84
|
-
def from_json(json, save_cache = false)
|
85
|
-
errors = ActiveSupport::JSON.decode(json)
|
86
|
-
clear unless save_cache
|
87
|
-
errors.each do |attr_name, messages|
|
88
|
-
Array.wrap(messages).each { |message| add(attr_name.to_sym, message) }
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def from_xml(xml, *args)
|
93
|
-
errors = Hash.from_xml(xml)['errors'] rescue {}
|
94
|
-
structured_errors = Array.wrap(errors['machine_readables'])
|
95
|
-
if structured_errors.first
|
96
|
-
clear unless args.first # see ActiveResource::Errors#from_array
|
97
|
-
structured_errors.each do |h|
|
98
|
-
h.each do |key, value|
|
99
|
-
add(key, value)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
else
|
103
|
-
# legacy omc and simple rails responses
|
104
|
-
from_array(errors['error'] || [], *args)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
end
|
110
|
-
|
111
|
-
end; end; end
|