unresponsys 0.3.0 → 0.3.5

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 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