globase 0.0.0.pre2 → 0.0.0.pre3

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: c8945e6903f98cdf4245bc144f65ef0dbfaf7f35
4
- data.tar.gz: 1e11cd0d3a1b4a2d0fcc6945c582329eb88911dc
3
+ metadata.gz: 3e7ed4d73b80b6a7f220174cb7160b17884fec35
4
+ data.tar.gz: b89f7888dc1fe81d24dcc4531e425a5a1a17419a
5
5
  SHA512:
6
- metadata.gz: 895c0e75a6258f2f00d7c66581c195d94f790a3bb622a4dc5bc08dad4f9a5e2a3e3ec9173bf303c47592ad15018384f640733d9a2d4d71309fa9dfb74cb191b0
7
- data.tar.gz: 51d9df02256a6e57744e09a6d9e8b736a5ba2cdeb2bb3e306cc1798d79f4b5faad13db7636a348985a2ee7d8f495b709e741890d3a3a2a079c61bf6caa0382d9
6
+ metadata.gz: 2e24f9e2d7e0c0700033ede03c91a057b85bf8b698258b79ef50bd7964cd6a5bb07b57b70ae1b9a7b8b15f357ca5dad31d5f118bb1e976e3146d9372e56ad757
7
+ data.tar.gz: 8bfc68992ca0bebd2618bf02e66f118d0e13c6921e915e24e18b58de8ae33cd70ec5cbc6736366cc21b91572fad6a8a27fc803a6ffa65aa6e25cafa75da16a87
@@ -0,0 +1,89 @@
1
+ Searching 22 files for "send_request"
2
+
3
+ /Users/row/code/github/globase/lib/globase/list_schema.rb:
4
+ 5
5
+ 6 def get(parent, params = {})
6
+ 7: send_request(parent, :get, params)
7
+ 8
8
+ 9 debug_response(response)
9
+
10
+ /Users/row/code/github/globase/lib/globase/nested_resource.rb:
11
+ 25 end
12
+ 26
13
+ 27: def send_request(parent, method = :get, params = {}, id = nil, data = nil)
14
+ 28 #begin
15
+ 29 if id.nil?
16
+
17
+ /Users/row/code/github/globase/lib/globase/resource.rb:
18
+ 15
19
+ 16 def delete(params = {})
20
+ 17: self.class.send_request(:delete, params, id)
21
+ 18 end
22
+ 19
23
+ ..
24
+ 22 update(params)
25
+ 23 else
26
+ 24: self.class.send_request(:post, params, nil, data)
27
+ 25 persisted = true
28
+ 26 end
29
+ ..
30
+ 29 def update(params = {})
31
+ 30 if persisted
32
+ 31: self.class.send_request(:put, params, id, data)
33
+ 32 persisted = true
34
+ 33 else
35
+ ..
36
+ 39
37
+ 40 def find(id, params = {})
38
+ 41: r = new( send_request(:get, params, id) )
39
+ 42 r.persisted = true
40
+ 43 r
41
+ ..
42
+ 45
43
+ 46 def all(params = {})
44
+ 47: send_request(:get, params).collect do |d|
45
+ 48 r = new(d)
46
+ 49 r.persisted = true
47
+ ..
48
+ 56 end
49
+ 57
50
+ 58: def send_request(method = :get, params = {}, id = nil, data = nil)
51
+ 59 #begin
52
+ 60 if id.nil?
53
+
54
+ 8 matches across 3 files
55
+
56
+
57
+ Searching 22 files for "base_url"
58
+
59
+ /Users/row/code/github/globase/lib/globase/base.rb:
60
+ 13
61
+ 14 def url
62
+ 15: "#{self.class.base_url}/#{id}"
63
+ 16 end
64
+ 17
65
+ ..
66
+ 70 end
67
+ 71
68
+ 72: def base_url(parent = nil)
69
+ 73 "#{host_url}/#{collection_name}"
70
+ 74 end
71
+
72
+ /Users/row/code/github/globase/lib/globase/nested_resource.rb:
73
+ 13
74
+ 14 def resource(parent, params = {})
75
+ 15: @resource ||= RestClient::Resource.new( base_url( parent ), headers: headers(params), timeout: timeout )
76
+ 16 end
77
+ 17
78
+ 18: def base_url(parent)
79
+ 19 puts "Globase::NestedResource"
80
+ 20 "#{parent.url}/#{collection_name}"
81
+
82
+ /Users/row/code/github/globase/lib/globase/resource.rb:
83
+ 53
84
+ 54 def resource(params = {})
85
+ 55: @resource ||= RestClient::Resource.new( base_url, headers: headers(params), timeout: timeout )
86
+ 56 end
87
+ 57
88
+
89
+ 5 matches across 3 files
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- globase (0.0.0.pre2)
4
+ globase (0.0.0.pre3)
5
5
  activesupport
6
6
  oj (>= 2.14.0)
7
7
  oj_mimic_json
@@ -4,9 +4,11 @@ require 'rest-client'
4
4
  require 'active_support/inflector'
5
5
  require 'active_support/core_ext/module/introspection'
6
6
  require 'globase/configuration'
7
- require 'globase/resource'
8
- require 'globase/list'
9
- require 'globase/campaign'
7
+
8
+ %w(base resource nested_resource list campaign list_profile list_schema list_segment ).each do |c|
9
+ require "globase/#{c}"
10
+ eval "Globase::#{c.camelcase}.set_fields"
11
+ end
10
12
 
11
13
  module Globase
12
14
 
@@ -0,0 +1,165 @@
1
+ module Globase
2
+ class Base
3
+ format 'json'
4
+
5
+ attr_accessor :persisted
6
+
7
+ def initialize(attributes = {})
8
+ validation_errors = self.class.validate_data(:initialize, attributes)
9
+ if validation_errors.any?
10
+ validation_error_messages = validation_errors.join("\n - ")
11
+ raise "Validation errors:\n - #{validation_error_messages}"
12
+ end
13
+
14
+ attributes.each do |k,v|
15
+ send("#{ k }=", v)
16
+ end
17
+ end
18
+
19
+ def url
20
+ "#{self.class.base_url}/#{id}"
21
+ end
22
+
23
+ def data
24
+ Hash[self.class.data_fields.collect{|a| [a, send(a) ]}]
25
+ end
26
+
27
+ def save(params = {})
28
+ if persisted
29
+ update(params)
30
+ else
31
+ create(data, params)
32
+ end
33
+ end
34
+
35
+ class << self
36
+
37
+ def fields
38
+ @fields = [:id]
39
+ end
40
+
41
+ def set_fields
42
+ puts "set_fields: #{fields.inspect}"
43
+ fields.each do |a|
44
+ attr_accessor a
45
+ end
46
+ end
47
+
48
+ def validate_data(method, data)
49
+ errors = []
50
+ return errors if data.nil?
51
+ fields_data = data.keys
52
+ case method
53
+ when :put
54
+ fields_mandatory = fields_mandatory_update
55
+ when :post
56
+ fields_mandatory = fields_mandatory_create
57
+ when :initialize
58
+ fields_mandatory = fields_mandatory_initialize
59
+ end
60
+
61
+ fields_matching = fields_data & fields_mandatory
62
+ fileds_missing = fields_mandatory - fields_matching
63
+
64
+ errors << "Mandatory fields missing: #{fileds_missing.join(', ')}" if fileds_missing.any?
65
+
66
+ errors
67
+ end
68
+
69
+ def data_fields
70
+ fields - fields_ignore_for_data
71
+ end
72
+
73
+ def fields_ignore_for_data
74
+ [:parent]
75
+ end
76
+
77
+ def fields_mandatory_initialize
78
+ []
79
+ end
80
+
81
+ def fields_mandatory_create
82
+ []
83
+ end
84
+
85
+ def fields_mandatory_update
86
+ [:id]
87
+ end
88
+
89
+ def collection_name
90
+ self.name.demodulize.downcase.pluralize.downcase
91
+ end
92
+
93
+ def base_url(parent = nil)
94
+ "#{host_url}/#{collection_name}"
95
+ end
96
+
97
+ def parse(body)
98
+ JSON.parse(body)
99
+ end
100
+
101
+ def timeout
102
+ Globase.config.timeout
103
+ end
104
+
105
+ def headers(params = {})
106
+ {
107
+ params: default_params.merge(params),
108
+ content_type: :json,
109
+ accept: :json,
110
+ }
111
+ end
112
+
113
+ def default_params
114
+ {
115
+ api_key: Globase.config.api_key
116
+ }
117
+ end
118
+
119
+ def host_url
120
+ "#{host_protocol}://#{host}:#{host_port}"
121
+ end
122
+
123
+ def host
124
+ Globase.config.host
125
+ end
126
+
127
+ def host_port
128
+ Globase.config.host_port
129
+ end
130
+
131
+ def host_protocol
132
+ Globase.config.host_protocol
133
+ end
134
+
135
+ def debug_request(request_resource, method, params, data)
136
+ if Globase.config.debug
137
+ puts "#{'-'*80}"
138
+ puts " Resquest"
139
+ puts "#{'-'*80}"
140
+ puts " resource: #{request_resource}"
141
+ puts " method: #{method}"
142
+ puts " params: #{params.inspect}"
143
+ puts " data: #{data.inspect}"
144
+ puts " validation_errors: #{validate_data(method, data).inspect}"
145
+ puts "#{'-'*80}\n"
146
+ end
147
+ end
148
+
149
+ def debug_response(response)
150
+ if Globase.config.debug
151
+ puts "#{'*'*80}"
152
+ puts " Response"
153
+ puts "#{'*'*80}"
154
+ puts " code: #{response.code}"
155
+ puts " headers: #{response.headers.inspect}"
156
+ puts " body: #{response.body}"
157
+ puts "#{'*'*80}\n"
158
+ end
159
+ end
160
+
161
+
162
+ end
163
+
164
+ end
165
+ end
@@ -1,14 +1,28 @@
1
1
  module Globase
2
2
  class Campaign < Resource
3
3
 
4
- def update(data, params = {})
5
- super(data, params = {})
4
+ def user=(value)
5
+ @ownerId = value
6
+ end
7
+
8
+ def update(params = {})
9
+ super(params = {})
6
10
  end
7
11
 
8
12
  def delete(params = {})
9
13
  raise NoMethodError
10
14
  end
11
15
 
16
+ # send_request(method = :get, params = {}, relative_path = nil, data = nil)
17
+
18
+ def add_profile(list_profile, launchOptions = { data: nil }, params = {})
19
+ self.class.send_request(:post, params, "#{id}/addProfile/#{list_profile.id}", launchOptions)
20
+ end
21
+
22
+ def add_profiles(list_profile_ids, params = {})
23
+ self.class.send_request(:post, params, "#{id}/addProfiles", { profiles: list_profile_ids })
24
+ end
25
+
12
26
  class << self
13
27
 
14
28
  def create(data, params = {})
@@ -19,12 +33,16 @@ module Globase
19
33
  super(params)
20
34
  end
21
35
 
36
+ def fields
37
+ @fields = super | [:id, :list, :name, :type, :status, :sysCreated, :sysChanged, :ownerId, :ownerUsername, :ownerEmail, :spanCounts, :tags, :messages ]
38
+ end
39
+
22
40
  def mandatory_fields_create
23
- [:name, :list, :type]
41
+ [ :name, :list, :type, :status, :ownerId ]
24
42
  end
25
43
 
26
44
  def mandatory_fields_update
27
- [:name, :list, :type]
45
+ [ :name, :list, :type, :status, :ownerId ]
28
46
  end
29
47
 
30
48
  end
@@ -13,16 +13,36 @@ module Globase
13
13
  raise NoMethodError
14
14
  end
15
15
 
16
+ def profile(id, params = {})
17
+ ListProfile.find(self, id, params)
18
+ end
19
+
20
+ def schema(params = {})
21
+ @schema ||= ListSchema.get(self, params)
22
+ end
23
+
24
+ def segments(params = {})
25
+ @segments ||= ListSegment.all(self, params)
26
+ end
27
+
16
28
  class << self
17
29
 
18
30
  def create(data, params = {})
19
31
  raise NoMethodError
20
32
  end
21
33
 
34
+ def find(id, params = {})
35
+ all.select{|l| l.id == id.to_i }.first
36
+ end
37
+
22
38
  def all(params = {})
23
39
  super(params)
24
40
  end
25
41
 
42
+ def fields
43
+ @fields = super | [:id, :name, :description, :profileCount, :sysCreated, :sysChanged]
44
+ end
45
+
26
46
  end
27
47
 
28
48
  end
@@ -0,0 +1,28 @@
1
+ module Globase
2
+ class ListProfile < NestedResource
3
+
4
+ def update(params = {})
5
+ if persisted
6
+ self.class.send_request(parent, :put, params, nil, data)
7
+ persisted = true
8
+ else
9
+ create(data, params = {})
10
+ end
11
+ end
12
+
13
+ class << self
14
+
15
+ def collection_name
16
+ :profile
17
+ end
18
+
19
+ def fields
20
+ @fields = super | [ :list, :sysCreated, :sysChanged, :optOutEmail, :optOutSms, :unConfirmed, :email, :company, :firstName, :lastName, :externalId ]
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+ end
27
+
28
+
@@ -0,0 +1,24 @@
1
+ module Globase
2
+ class ListSchema < NestedResource
3
+
4
+ class << self
5
+
6
+ def get(parent, params = {})
7
+ data = send_request(parent, :get, params)
8
+ s = new( data.merge({ parent: parent }) )
9
+ s.persisted = true
10
+ s
11
+ end
12
+
13
+ def collection_name
14
+ :schema
15
+ end
16
+
17
+ def fields
18
+ @fields = super | ['Profile']
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ module Globase
2
+ class ListSegment < NestedResource
3
+
4
+ class << self
5
+
6
+ def all(parent, params = {})
7
+ send_request(parent, :get, params).collect do |d|
8
+ r = new( d.merge({ parent: parent }) )
9
+ r.persisted = true
10
+ end
11
+ end
12
+
13
+ def collection_name
14
+ :segments
15
+ end
16
+
17
+ def fields
18
+ @fields = super
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,100 @@
1
+ module Globase
2
+ class NestedResource < Base
3
+
4
+ def reload
5
+ self.class.find(parent, id)
6
+ end
7
+
8
+ def delete(params = {})
9
+ self.class.send_request(parent, :delete, params, id)
10
+ end
11
+
12
+ def create(data, params = {})
13
+ if persisted
14
+ update(params)
15
+ else
16
+ response_data = self.class.send_request(parent, :post, params, nil, data)
17
+ id = response_data[:id]
18
+ persisted = true
19
+ end
20
+ end
21
+
22
+ def update(params = {})
23
+ if persisted
24
+ self.class.send_request(parent, :put, params, id, data)
25
+ persisted = true
26
+ else
27
+ create(data, params = {})
28
+ end
29
+ end
30
+
31
+ class << self
32
+
33
+ def find(parent, id, params = {})
34
+ data = send_request(parent, :get, params, id)
35
+ r = new( data.merge({ parent: parent }) )
36
+ if data.any?
37
+ r.persisted = true
38
+ else
39
+ return
40
+ end
41
+ r
42
+ end
43
+
44
+ def parent_resource_class
45
+ Globase::List
46
+ end
47
+
48
+ def fields_mandatory_initialize
49
+ [:parent]
50
+ end
51
+
52
+ def resource(parent, params = {})
53
+ @resource ||= RestClient::Resource.new( base_url( parent ), headers: headers(params), timeout: timeout )
54
+ end
55
+
56
+ def base_url(parent)
57
+ puts "Globase::NestedResource"
58
+ "#{parent.url}/#{collection_name}"
59
+ end
60
+
61
+ def fields
62
+ @fields = super | [:parent]
63
+ end
64
+
65
+ def send_request(parent, method = :get, params = {}, id = nil, data = nil)
66
+ #begin
67
+ if id.nil?
68
+ request_resource = resource(parent, params)["/"]
69
+ else
70
+ request_resource = resource(parent, params)["/#{id}"]
71
+ end
72
+ debug_request(request_resource, method, params, data)
73
+
74
+ if data.nil?
75
+ response = request_resource.send(method)
76
+ else
77
+ validation_errors = validate_data(method, data)
78
+ if validation_errors.empty?
79
+ response = request_resource.send(method, data.to_json)
80
+ else
81
+ validation_error_messages = validation_errors.join("\n - ")
82
+ raise "Validation errors:\n - #{validation_error_messages}"
83
+ end
84
+ end
85
+
86
+ debug_response(response)
87
+ parse(response.body)
88
+ #rescue => e
89
+ # if e.respond_to?(:response)
90
+ # e.response
91
+ # else
92
+ # raise e
93
+ # end
94
+ #end
95
+ end
96
+
97
+ end
98
+
99
+ end
100
+ end
@@ -1,109 +1,59 @@
1
1
  module Globase
2
- class Resource
3
- format 'json'
2
+ class Resource < Base
4
3
 
5
- def initialize(id)
6
- @id = id
7
- end
8
-
9
- def id
10
- @id
11
- end
12
-
13
- def show(params = {})
14
- self.class.send_request(:get, params, id)
15
- end
16
-
17
- def update(data, params = {})
18
- self.class.send_request(:put, params, id, data)
4
+ def reload
5
+ self.class.find(id)
19
6
  end
20
7
 
21
8
  def delete(params = {})
22
9
  self.class.send_request(:delete, params, id)
23
10
  end
24
11
 
25
- def url
26
- "#{self.class.base_url}/#{id}"
12
+ def create(data, params = {})
13
+ if persisted
14
+ update(params)
15
+ else
16
+ response_data = self.class.send_request(:post, params, nil, data)
17
+ id = response_data[:id]
18
+ persisted = true
19
+ end
20
+ end
21
+
22
+ def update(params = {})
23
+ if persisted
24
+ self.class.send_request(:put, params, id, data)
25
+ persisted = true
26
+ else
27
+ create(data, params = {})
28
+ end
27
29
  end
28
30
 
29
31
  class << self
30
32
 
31
- def create(data, params = {})
32
- send_request(:post, params, nil, data)
33
+ def find(id, params = {})
34
+ r = new( send_request(:get, params, id) )
35
+ r.persisted = true
36
+ r
33
37
  end
34
38
 
35
39
  def all(params = {})
36
- send_request(:get, params)
37
- end
38
-
39
- def debug_request(request_resource, method, params, data)
40
- if Globase.config.debug
41
- puts "\n#{'-'*80}"
42
- puts " Resquest"
43
- puts "#{'-'*80}"
44
- puts " resource: #{request_resource}"
45
- puts " method: #{method}"
46
- puts " params: #{params.inspect}"
47
- puts " data: #{data.inspect}"
48
- puts " validation_errors: #{validate_data(method, data).inspect}"
49
- puts "#{'-'*80}\n\n"
40
+ send_request(:get, params).collect do |d|
41
+ r = new(d)
42
+ r.persisted = true
43
+ r
50
44
  end
51
45
  end
52
46
 
53
- def debug_response(response)
54
- if Globase.config.debug
55
- puts "\n#{'*'*80}"
56
- puts " Response"
57
- puts "#{'*'*80}"
58
- puts " code: #{response.code}"
59
- puts " headers: #{response.headers.inspect}"
60
- puts " body: #{response.body}"
61
- puts "#{'*'*80}\n\n"
62
- end
63
- end
64
-
65
47
  def resource(params = {})
66
48
  @resource ||= RestClient::Resource.new( base_url, headers: headers(params), timeout: timeout )
67
49
  end
68
50
 
69
-
70
- def url
71
- "#{base_url}/"
72
- end
73
-
74
- def validate_data(method, data)
75
- errors = []
76
- return errors if data.nil?
77
- data_fields = data.keys
78
- case method
79
- when :put
80
- mandatory_fields = mandatory_fields_update
81
- when :post
82
- mandatory_fields = mandatory_fields_create
83
- end
84
-
85
- matching_fields = data_fields & mandatory_fields
86
- missing_fileds = mandatory_fields - matching_fields
87
-
88
- errors << "Mandatory fields missing: #{missing_fileds.join(', ')}" if missing_fileds.any?
89
-
90
- errors
91
- end
92
-
93
- def mandatory_fields_create
94
- []
95
- end
96
-
97
- def mandatory_fields_update
98
- []
99
- end
100
-
101
- def send_request(method = :get, params = {}, id = nil, data = nil)
102
- begin
103
- if id.nil?
51
+ def send_request(method = :get, params = {}, relative_path = nil, data = nil)
52
+ #begin
53
+ if relative_path.nil? || relative_path.to_s.strip.empty?
104
54
  request_resource = resource(params)["/"]
105
55
  else
106
- request_resource = resource(params)["/#{id}"]
56
+ request_resource = resource(params)["/#{relative_path}"]
107
57
  end
108
58
  debug_request(request_resource, method, params, data)
109
59
 
@@ -121,60 +71,13 @@ module Globase
121
71
 
122
72
  debug_response(response)
123
73
  parse(response.body)
124
- rescue => e
125
- if e.respond_to?(:response)
126
- e.response
127
- else
128
- raise e
129
- end
130
- end
131
- end
132
-
133
- def collection_name
134
- self.name.demodulize.downcase.pluralize.downcase
135
- end
136
-
137
- def base_url
138
- "#{host_url}/#{collection_name}"
139
- end
140
-
141
-
142
- def parse(body)
143
- JSON.parse(body)
144
- end
145
-
146
- def timeout
147
- Globase.config.timeout
148
- end
149
-
150
- def headers(params = {})
151
- {
152
- params: default_params.merge(params),
153
- content_type: :json,
154
- accept: :json,
155
- }
156
- end
157
-
158
- def default_params
159
- {
160
- api_key: Globase.config.api_key
161
- }
162
- end
163
-
164
- def host_url
165
- "#{host_protocol}://#{host}:#{host_port}"
166
- end
167
-
168
- def host
169
- Globase.config.host
170
- end
171
-
172
- def host_port
173
- Globase.config.host_port
174
- end
175
-
176
- def host_protocol
177
- Globase.config.host_protocol
74
+ #rescue => e
75
+ # if e.respond_to?(:response)
76
+ # e.response
77
+ # else
78
+ # raise e
79
+ # end
80
+ #end
178
81
  end
179
82
 
180
83
  end
@@ -1,3 +1,3 @@
1
1
  module Globase
2
- VERSION = "0.0.0.pre2" unless defined?(Globase::VERSION)
2
+ VERSION = "0.0.0.pre3" unless defined?(Globase::VERSION)
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: globase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.pre2
4
+ version: 0.0.0.pre3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robin Wunderlin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-02 00:00:00.000000000 Z
11
+ date: 2016-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -73,6 +73,7 @@ extensions: []
73
73
  extra_rdoc_files:
74
74
  - README.markdown
75
75
  files:
76
+ - Find Results
76
77
  - Gemfile
77
78
  - Gemfile.lock
78
79
  - LICENSE
@@ -80,9 +81,14 @@ files:
80
81
  - Rakefile
81
82
  - USAGE
82
83
  - lib/globase.rb
84
+ - lib/globase/base.rb
83
85
  - lib/globase/campaign.rb
84
86
  - lib/globase/configuration.rb
85
87
  - lib/globase/list.rb
88
+ - lib/globase/list_profile.rb
89
+ - lib/globase/list_schema.rb
90
+ - lib/globase/list_segment.rb
91
+ - lib/globase/nested_resource.rb
86
92
  - lib/globase/resource.rb
87
93
  - lib/globase/version.rb
88
94
  homepage: http://www.rhg.dk