unresponsys 0.3.0 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b3de996854aad749211d1bfa05b06807540879ef
4
- data.tar.gz: ea57b4866ae66fcbee5ab1724655860a37ac0735
3
+ metadata.gz: 0a350c5273bc6ce627b267a064861def986886f0
4
+ data.tar.gz: 4fdd7c8eb7cc221c4d6aa1c3d78d27a98ab40635
5
5
  SHA512:
6
- metadata.gz: e236767eff334495a44b24bd2cc4960d4c7a7c1f57594f20fab665a0abee5bbff5b6191c9158e82a25ebacc1688599eda6e7513272ae1b561eff47cdb194a631
7
- data.tar.gz: 3e6775f23094702d8915fa72b05b85e227ffc878e15ec0cd6c377b601d43fa39591c695b9bf6f07a808a5519164118856cc8006211212b05bef8415b67960e7b
6
+ metadata.gz: 1f2e0a734df43f365dc9bcf2f6a01ae9409539a05ba013f15eabab9226a66b7c2533d7c8a06e63e151d45f96219be5e502f2848e337e437f0937275cf0c80d47
7
+ data.tar.gz: 7df6e15a7f97a32291421ecc878a7ade06aea657dd3181bdec97a44480cc3e4ec1d492951240490088fc558bcf402f6f593220927be512e030a5677cc6044e4e
@@ -1,5 +1,3 @@
1
- require 'active_support'
2
- require 'active_support/all'
3
1
  require 'unresponsys/client'
4
2
  require 'unresponsys/event'
5
3
  require 'unresponsys/extension_table'
@@ -8,6 +6,7 @@ require 'unresponsys/folder'
8
6
  require 'unresponsys/helpers'
9
7
  require 'unresponsys/list'
10
8
  require 'unresponsys/member'
9
+ require 'unresponsys/merge_rule'
11
10
  require 'unresponsys/row'
12
11
  require 'unresponsys/supplemental_table'
13
12
  require 'unresponsys/version'
@@ -15,5 +15,13 @@ class Unresponsys
15
15
  fields.each_pair { |field, value| row.send("#{field}=", value) }
16
16
  row.save
17
17
  end
18
+
19
+ def supplemental_table?
20
+ false
21
+ end
22
+
23
+ def extension_table?
24
+ true
25
+ end
18
26
  end
19
27
  end
@@ -6,9 +6,23 @@ class Object
6
6
  def to_ruby
7
7
  self
8
8
  end
9
+
10
+ def blank?
11
+ respond_to?(:empty?) ? !!empty? : !self
12
+ end
13
+
14
+ def present?
15
+ !blank?
16
+ end
17
+
18
+ def presence
19
+ self if present?
20
+ end
9
21
  end
10
22
 
11
23
  class String
24
+ BLANK_RE = /\A[[:space:]]*\z/ unless defined? BLANK_RE
25
+
12
26
  def is_i?
13
27
  return false if self.include?('.')
14
28
  return false if self.match(/e|E/)
@@ -45,6 +59,10 @@ class String
45
59
  return self.to_bool if self.is_bool?
46
60
  self
47
61
  end
62
+
63
+ def blank?
64
+ BLANK_RE === self
65
+ end
48
66
  end
49
67
 
50
68
  class Date
@@ -63,16 +81,48 @@ class Time
63
81
  def to_responsys
64
82
  self.strftime('%Y-%m-%d %H:%M:%S')
65
83
  end
84
+
85
+ def blank?
86
+ false
87
+ end
66
88
  end
67
89
 
68
90
  class TrueClass
69
91
  def to_responsys
70
92
  'T'
71
93
  end
94
+
95
+ def blank?
96
+ false
97
+ end
72
98
  end
73
99
 
74
100
  class FalseClass
75
101
  def to_responsys
76
102
  'F'
77
103
  end
104
+
105
+ def blank?
106
+ true
107
+ end
108
+ end
109
+
110
+ class NilClass
111
+ def blank?
112
+ true
113
+ end
114
+ end
115
+
116
+ class Array
117
+ alias_method :blank?, :empty?
118
+ end
119
+
120
+ class Hash
121
+ alias_method :blank?, :empty?
122
+ end
123
+
124
+ class Numeric
125
+ def blank?
126
+ false
127
+ end
78
128
  end
@@ -31,15 +31,13 @@ class Unresponsys
31
31
 
32
32
  def save
33
33
  record_data = { fieldNames: [], records: [[]], mapTemplateName: nil }
34
- @changed.uniq.each do |key|
34
+
35
+ to_h.each do |key, val|
35
36
  record_data[:fieldNames] << key
36
- var = "@#{key.downcase.chomp('_')}".to_sym
37
- val = self.instance_variable_get(var)
38
- val = val.to_responsys
39
37
  record_data[:records][0] << val
40
38
  end
41
39
 
42
- options = { body: { recordData: record_data, mergeRule: merge_rule }.to_json }
40
+ options = { body: { recordData: record_data, mergeRule: MergeRule.new.to_h }.to_json }
43
41
  r = client.post("/lists/#{@list.name}/members", options)
44
42
  return false if r['recordData']['records'][0][0].include?('MERGEFAILED')
45
43
 
@@ -93,6 +91,16 @@ class Unresponsys
93
91
  end
94
92
  end
95
93
 
94
+ def to_h
95
+ hash = {}
96
+ @changed.uniq.each do |key|
97
+ var = "@#{key.downcase.chomp('_')}".to_sym
98
+ val = self.instance_variable_get(var)
99
+ hash[key] = val.to_responsys
100
+ end
101
+ hash
102
+ end
103
+
96
104
  private
97
105
 
98
106
  def default_fields
@@ -132,21 +140,5 @@ class Unresponsys
132
140
  MODIFIED_DATE_
133
141
  )
134
142
  end
135
-
136
- def merge_rule
137
- {
138
- insertOnNoMatch: true,
139
- updateOnMatch: 'REPLACE_ALL',
140
- matchColumnName1: 'EMAIL_ADDRESS_',
141
- matchColumnName2: nil,
142
- matchOperator: nil,
143
- optinValue: 'I',
144
- optoutValue: 'O',
145
- defaultPermissionStatus: 'OPTIN',
146
- htmlValue: 'H',
147
- textValue: 'T',
148
- rejectRecordIfChannelEmpty: nil,
149
- }
150
- end
151
143
  end
152
144
  end
@@ -0,0 +1,17 @@
1
+ class Unresponsys::MergeRule
2
+ def to_h
3
+ {
4
+ insertOnNoMatch: true,
5
+ updateOnMatch: 'REPLACE_ALL',
6
+ matchColumnName1: 'EMAIL_ADDRESS_',
7
+ matchColumnName2: nil,
8
+ matchOperator: nil,
9
+ optinValue: 'I',
10
+ optoutValue: 'O',
11
+ defaultPermissionStatus: 'OPTIN',
12
+ htmlValue: 'H',
13
+ textValue: 'T',
14
+ rejectRecordIfChannelEmpty: nil,
15
+ }
16
+ end
17
+ end
@@ -28,11 +28,8 @@ class Unresponsys
28
28
  def save
29
29
  record_data = { fieldNames: [], records: [{ fieldValues: [] }], mapTemplateName: nil }
30
30
 
31
- @fields.each_pair do |key, val|
31
+ to_h.each do |key, val|
32
32
  record_data[:fieldNames] << key
33
- var = "@#{key.downcase.chomp('_')}".to_sym
34
- val = self.instance_variable_get(var)
35
- val = val.to_responsys
36
33
  record_data[:records][0][:fieldValues] << val
37
34
  end
38
35
 
@@ -44,7 +41,7 @@ class Unresponsys
44
41
  }
45
42
  }
46
43
 
47
- if @table.class == Unresponsys::SupplementalTable
44
+ if @table.supplemental_table?
48
45
  url = "/folders/#{@table.folder.name}/suppData/#{@table.name}"
49
46
  else
50
47
  options[:body][:matchColumn] = 'RIID'
@@ -54,13 +51,22 @@ class Unresponsys
54
51
  options[:body] = options[:body].to_json
55
52
  r = client.post(url, options)
56
53
 
57
- if @table.class == Unresponsys::SupplementalTable
54
+ if @table.supplemental_table?
58
55
  r['errorMessage'].blank?
59
56
  else
60
57
  r[0]['errorMessage'].blank?
61
58
  end
62
59
  end
63
60
 
61
+ def destroy
62
+ fail 'Not yet implemented' if @table.extension_table?
63
+
64
+ options = { query: { qa: 'ID_', id: @id.to_responsys, fs: 'all' } }
65
+ response = @table.client.delete("/folders/#{@table.folder.name}/suppData/#{@table.name}/members", options)
66
+
67
+ response['errorMessage'].blank?
68
+ end
69
+
64
70
  # allow to access custom fields on new record
65
71
  def method_missing(sym, *args, &block)
66
72
  setter = sym.to_s.include?('=')
@@ -77,5 +83,15 @@ class Unresponsys
77
83
  self.instance_variable_get(var)
78
84
  end
79
85
  end
86
+
87
+ def to_h
88
+ hash = {}
89
+ @fields.each_pair do |key, val|
90
+ var = "@#{key.downcase.chomp('_')}".to_sym
91
+ val = self.instance_variable_get(var)
92
+ hash[key] = val.to_responsys
93
+ end
94
+ hash
95
+ end
80
96
  end
81
97
  end
@@ -13,6 +13,14 @@ class Unresponsys
13
13
  @rows ||= Rows.new(self)
14
14
  end
15
15
 
16
+ def supplemental_table?
17
+ true
18
+ end
19
+
20
+ def extension_table?
21
+ false
22
+ end
23
+
16
24
  class Rows
17
25
  def initialize(table)
18
26
  @table = table
@@ -1,3 +1,3 @@
1
1
  class Unresponsys
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.5'
3
3
  end
metadata CHANGED
@@ -1,47 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unresponsys
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Kimball
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-29 00:00:00.000000000 Z
11
+ date: 2016-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.13.5
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
19
+ version: '0.13'
24
20
  - - ">="
25
21
  - !ruby/object:Gem::Version
26
22
  version: 0.13.5
27
- - !ruby/object:Gem::Dependency
28
- name: activesupport
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 3.0.0
34
23
  type: :runtime
35
24
  prerelease: false
36
25
  version_requirements: !ruby/object:Gem::Requirement
37
26
  requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.13'
38
30
  - - ">="
39
31
  - !ruby/object:Gem::Version
40
- version: 3.0.0
32
+ version: 0.13.5
41
33
  - !ruby/object:Gem::Dependency
42
34
  name: rspec
43
35
  requirement: !ruby/object:Gem::Requirement
44
36
  requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.4'
45
40
  - - ">="
46
41
  - !ruby/object:Gem::Version
47
42
  version: 3.4.0
@@ -49,6 +44,9 @@ dependencies:
49
44
  prerelease: false
50
45
  version_requirements: !ruby/object:Gem::Requirement
51
46
  requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '3.4'
52
50
  - - ">="
53
51
  - !ruby/object:Gem::Version
54
52
  version: 3.4.0
@@ -56,6 +54,9 @@ dependencies:
56
54
  name: vcr
57
55
  requirement: !ruby/object:Gem::Requirement
58
56
  requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '3.0'
59
60
  - - ">="
60
61
  - !ruby/object:Gem::Version
61
62
  version: 3.0.0
@@ -63,6 +64,9 @@ dependencies:
63
64
  prerelease: false
64
65
  version_requirements: !ruby/object:Gem::Requirement
65
66
  requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '3.0'
66
70
  - - ">="
67
71
  - !ruby/object:Gem::Version
68
72
  version: 3.0.0
@@ -70,6 +74,9 @@ dependencies:
70
74
  name: webmock
71
75
  requirement: !ruby/object:Gem::Requirement
72
76
  requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '1.22'
73
80
  - - ">="
74
81
  - !ruby/object:Gem::Version
75
82
  version: 1.22.3
@@ -77,6 +84,9 @@ dependencies:
77
84
  prerelease: false
78
85
  version_requirements: !ruby/object:Gem::Requirement
79
86
  requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.22'
80
90
  - - ">="
81
91
  - !ruby/object:Gem::Version
82
92
  version: 1.22.3
@@ -84,6 +94,9 @@ dependencies:
84
94
  name: dotenv
85
95
  requirement: !ruby/object:Gem::Requirement
86
96
  requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '2.0'
87
100
  - - ">="
88
101
  - !ruby/object:Gem::Version
89
102
  version: 2.0.2
@@ -91,6 +104,9 @@ dependencies:
91
104
  prerelease: false
92
105
  version_requirements: !ruby/object:Gem::Requirement
93
106
  requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '2.0'
94
110
  - - ">="
95
111
  - !ruby/object:Gem::Version
96
112
  version: 2.0.2
@@ -98,6 +114,9 @@ dependencies:
98
114
  name: byebug
99
115
  requirement: !ruby/object:Gem::Requirement
100
116
  requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '8.0'
101
120
  - - ">="
102
121
  - !ruby/object:Gem::Version
103
122
  version: 8.0.1
@@ -105,6 +124,9 @@ dependencies:
105
124
  prerelease: false
106
125
  version_requirements: !ruby/object:Gem::Requirement
107
126
  requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '8.0'
108
130
  - - ">="
109
131
  - !ruby/object:Gem::Version
110
132
  version: 8.0.1
@@ -124,6 +146,7 @@ files:
124
146
  - lib/unresponsys/helpers.rb
125
147
  - lib/unresponsys/list.rb
126
148
  - lib/unresponsys/member.rb
149
+ - lib/unresponsys/merge_rule.rb
127
150
  - lib/unresponsys/row.rb
128
151
  - lib/unresponsys/supplemental_table.rb
129
152
  - lib/unresponsys/version.rb