MailchimpMarketing 3.0.1 → 3.0.8

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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/MailchimpMarketing.gemspec +1 -1
  4. data/README.md +55 -46
  5. data/lib/MailchimpMarketing.rb +5 -6
  6. data/lib/MailchimpMarketing/api/activity_feed_api.rb +13 -69
  7. data/lib/MailchimpMarketing/api/authorized_apps_api.rb +20 -113
  8. data/lib/MailchimpMarketing/api/automations_api.rb +130 -685
  9. data/lib/MailchimpMarketing/api/batch_webhooks_api.rb +33 -182
  10. data/lib/MailchimpMarketing/api/batches_api.rb +26 -146
  11. data/lib/MailchimpMarketing/api/campaign_folders_api.rb +33 -182
  12. data/lib/MailchimpMarketing/api/campaigns_api.rb +144 -803
  13. data/lib/MailchimpMarketing/api/connected_sites_api.rb +32 -179
  14. data/lib/MailchimpMarketing/api/conversations_api.rb +36 -205
  15. data/lib/MailchimpMarketing/api/dashboard_api.rb +32 -221
  16. data/lib/MailchimpMarketing/api/ecommerce_api.rb +447 -2312
  17. data/lib/MailchimpMarketing/api/external_auths_api.rb +20 -113
  18. data/lib/MailchimpMarketing/api/facebook_ads_api.rb +16 -83
  19. data/lib/MailchimpMarketing/api/file_manager_api.rb +71 -413
  20. data/lib/MailchimpMarketing/api/landing_pages_api.rb +51 -286
  21. data/lib/MailchimpMarketing/api/lists_api.rb +721 -2876
  22. data/lib/MailchimpMarketing/api/ping_api.rb +7 -33
  23. data/lib/MailchimpMarketing/api/postcards_api.rb +9 -41
  24. data/lib/MailchimpMarketing/api/reporting_api.rb +41 -237
  25. data/lib/MailchimpMarketing/api/reports_api.rb +153 -903
  26. data/lib/MailchimpMarketing/api/root_api.rb +7 -37
  27. data/lib/MailchimpMarketing/api/search_campaigns_api.rb +8 -39
  28. data/lib/MailchimpMarketing/api/search_members_api.rb +8 -41
  29. data/lib/MailchimpMarketing/api/template_folders_api.rb +33 -182
  30. data/lib/MailchimpMarketing/api/templates_api.rb +40 -234
  31. data/lib/MailchimpMarketing/api/verified_domains_api.rb +32 -170
  32. data/lib/MailchimpMarketing/api_client.rb +94 -64
  33. data/lib/MailchimpMarketing/api_error.rb +4 -4
  34. data/lib/MailchimpMarketing/configuration.rb +1 -1
  35. data/lib/MailchimpMarketing/version.rb +2 -2
  36. metadata +2 -2
@@ -3,7 +3,7 @@
3
3
 
4
4
  #No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
5
5
 
6
- OpenAPI spec version: 3.0.1
6
+ OpenAPI spec version: 3.0.8
7
7
  Contact: apihelp@mailchimp.com
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
9
  Swagger Codegen version: 2.4.12
@@ -15,22 +15,10 @@ require 'faraday'
15
15
 
16
16
  module MailchimpMarketing
17
17
  class ApiClient
18
- # Defines the headers to be used in HTTP requests of all API calls by default.
19
- #
20
- # @return [Hash]
21
- attr_accessor :default_headers
22
-
23
- # Initializes the ApiClient
24
- def initialize(api_key, server = '')
18
+ def initialize(config = {})
25
19
  @host = "https://server.api.mailchimp.com/3.0"
26
20
  @user_agent = "Swagger-Codegen/#{VERSION}/ruby"
27
- @default_headers = {
28
- 'Content-Type' => 'application/json',
29
- 'User-Agent' => @user_agent
30
- }
31
-
32
- @api_key = api_key
33
- @server = server || get_server_from_api_key(api_key)
21
+ set_config(config)
34
22
  end
35
23
 
36
24
  def self.default
@@ -39,27 +27,41 @@ module MailchimpMarketing
39
27
 
40
28
  def get_server_from_api_key(api_key = '')
41
29
  begin
42
- split = api_key.split('-us', 1)
43
- server_prefix = 'us'
44
- server = server_prefix + api_key.split('-' + server_prefix, 1)[1]
30
+ split = api_key.split('-')
31
+ server = 'invalid-server'
32
+ if split.length == 2
33
+ server = split[1]
34
+ end
45
35
  server
46
36
  rescue
47
37
  ""
48
38
  end
49
39
  end
50
40
 
51
- def set_config(api_key = '', server = '')
52
- @api_key = api_key || @api_key
53
- @server = server || get_server_from_api_key(api_key) || @server
41
+ def set_config(config = {})
42
+ @api_key = config[:api_key] || ''
43
+ @is_basic_auth = @api_key.to_s.strip.empty? == false
44
+ @access_token = config[:access_token] || ''
45
+ @is_oauth = @access_token.to_s.strip.empty? == false
46
+
47
+ # If using Basic auth and no server is provided,
48
+ # attempt to extract it from the api_key directy.
49
+ @server = config[:server] || 'invalid-server'
50
+ if @server == 'invalid-server' && @is_basic_auth
51
+ @server = get_server_from_api_key(@api_key)
52
+ end
54
53
  end
55
54
 
56
55
  def call_api(http_method, path, opts = {})
57
- header_params = @default_headers.merge(opts[:header_params] || {})
56
+ header_params = {
57
+ 'Content-Type' => 'application/json',
58
+ 'User-Agent' => @user_agent
59
+ }
58
60
  query_params = opts[:query_params] || {}
59
61
  form_params = opts[:form_params] || {}
60
62
 
61
- body = nil
62
- if [:post, :patch, :put, :delete].include?(http_method)
63
+ body = {}
64
+ if [:post, :patch, :put, :delete].include?(http_method.to_sym.downcase)
63
65
  body = build_request_body(header_params, form_params, opts[:body])
64
66
  end
65
67
 
@@ -85,60 +87,66 @@ module MailchimpMarketing
85
87
  host = @server.length > 0 ? @host.sub('server', @server) : @host
86
88
  url = host + path
87
89
 
88
- conn = Faraday.new(url, params: query_params, headers: header_params) do |conn|
89
- conn.basic_auth('user', @api_key)
90
+ # Apply Authentication
91
+ conn = Faraday.new(url) do |conn|
92
+ conn.headers = header_params
93
+ conn.params = query_params
94
+
95
+ if @is_basic_auth
96
+ conn.basic_auth('user', @api_key)
97
+ elsif @is_oauth
98
+ conn.headers["Authorization"] = "Bearer #{@access_token}"
99
+ end
90
100
  end
91
101
 
92
102
  case http_method.to_sym.downcase
93
103
  when :delete
94
- conn.delete(body: body.to_json)
104
+ conn.delete do |req|
105
+ req.body = body.to_json
106
+ end
95
107
  when :get
96
- conn.get()
108
+ conn.get
97
109
  when :head
98
- conn.head()
110
+ conn.head
99
111
  when :options
100
- conn.options()
112
+ conn.options
101
113
  when :post
102
- conn.post(body: body.to_json)
114
+ conn.post do |req|
115
+ req.body = body.to_json
116
+ end
103
117
  when :put
104
- conn.put(body: body.to_json)
118
+ conn.put do |req|
119
+ req.body = body.to_json
120
+ end
105
121
  when :patch
106
- conn.patch(body: body.to_json)
122
+ conn.patch do |req|
123
+ req.body = body.to_json
124
+ end
107
125
  else
108
- fail ApiError.new('http_method must be :post')
126
+ fail ApiError.new('Invalid http_method')
109
127
  end
110
128
  end
111
129
 
112
130
  # Sanitize filename by removing path.
113
131
  # e.g. ../../sun.gif becomes sun.gif
114
- #
115
- # @param [String] filename the filename to be sanitized
116
- # @return [String] the sanitized filename
117
132
  def sanitize_filename(filename)
118
133
  filename.gsub(/.*[\/\\]/, '')
119
134
  end
120
135
 
136
+ # Add leading and trailing slashes to path
121
137
  def build_request_url(path)
122
- # Add leading and trailing slashes to path
123
138
  path = "/#{path}".gsub(/\/+/, '/')
124
139
  URI.encode(@config.base_url + path)
125
140
  end
126
141
 
127
- # Builds the HTTP request body
128
- #
129
- # @param [Hash] header_params Header parameters
130
- # @param [Hash] form_params Query parameters
131
- # @param [Object] body HTTP body (JSON/XML)
132
- # @return [String] HTTP body data in the form of string
142
+ # Format HTTP request body as string
133
143
  def build_request_body(header_params, form_params, body)
134
- # http form
135
144
  if header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
136
145
  header_params['Content-Type'] == 'multipart/form-data'
137
146
  data = {}
138
147
  form_params.each do |key, value|
139
148
  case value
140
149
  when ::File, ::Array, nil
141
- # let typhoeus handle File, Array and nil parameters
142
150
  data[key] = value
143
151
  else
144
152
  data[key] = value.to_s
@@ -153,40 +161,62 @@ module MailchimpMarketing
153
161
  end
154
162
 
155
163
  # Return Accept header based on an array of accepts provided.
156
- # @param [Array] accepts array for Accept
157
- # @return [String] the Accept header (e.g. application/json)
158
164
  def select_header_accept(accepts)
159
165
  return nil if accepts.nil? || accepts.empty?
160
- # use JSON when present, otherwise use all of the provided
161
166
  json_accept = accepts.find { |s| json_mime?(s) }
162
167
  json_accept || accepts.join(',')
163
168
  end
164
169
 
165
170
  # Return Content-Type header based on an array of content types provided.
166
- # @param [Array] content_types array for Content-Type
167
- # @return [String] the Content-Type header (e.g. application/json)
168
171
  def select_header_content_type(content_types)
169
- # use application/json by default
170
172
  return 'application/json' if content_types.nil? || content_types.empty?
171
- # use JSON when present, otherwise use the first one
173
+
172
174
  json_content_type = content_types.find { |s| json_mime?(s) }
173
175
  json_content_type || content_types.first
174
176
  end
175
177
 
176
- # Check if the given MIME is a JSON MIME.
177
- # JSON MIME examples:
178
- # application/json
179
- # application/json; charset=UTF8
180
- # APPLICATION/JSON
181
- # */*
182
- # @param [String] mime MIME
183
- # @return [Boolean] True if the MIME is application/json
184
- def json_mime?(mime)
185
- (mime == '*/*') || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
178
+ # Convert object (array, hash, object, etc) to JSON string.
179
+ def object_to_http_body(model)
180
+ return model if model.nil? || model.is_a?(String)
181
+ local_body = nil
182
+ if model.is_a?(Array)
183
+ local_body = model.map { |m| object_to_hash(m) }
184
+ else
185
+ local_body = object_to_hash(model)
186
+ end
187
+ local_body.to_json
186
188
  end
187
189
 
190
+ # Convert object(non-array) to hash.
191
+ def object_to_hash(obj)
192
+ if obj.respond_to?(:to_hash)
193
+ obj.to_hash
194
+ else
195
+ obj
196
+ end
197
+ end
188
198
 
199
+ # Build parameter value according to the given collection format.
200
+ def build_collection_param(param, collection_format)
201
+ case collection_format
202
+ when :csv
203
+ param.join(',')
204
+ when :ssv
205
+ param.join(' ')
206
+ when :tsv
207
+ param.join("\t")
208
+ when :pipes
209
+ param.join('|')
210
+ when :multi
211
+ param
212
+ else
213
+ fail "unknown collection format: #{collection_format.inspect}"
214
+ end
215
+ end
189
216
 
190
-
217
+ # Check if the given MIME is a JSON MIME.
218
+ def json_mime?(mime)
219
+ (mime == '*/*') || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
220
+ end
191
221
  end
192
222
  end
@@ -3,7 +3,7 @@
3
3
 
4
4
  #No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
5
5
 
6
- OpenAPI spec version: 3.0.1
6
+ OpenAPI spec version: 3.0.8
7
7
  Contact: apihelp@mailchimp.com
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
9
  Swagger Codegen version: 2.4.12
@@ -12,13 +12,13 @@ Swagger Codegen version: 2.4.12
12
12
 
13
13
  module MailchimpMarketing
14
14
  class ApiError < StandardError
15
- attr_reader :code, :response_headers, :response_body
15
+ attr_reader :status, :type, :title, :detail, :instance, :errors
16
16
 
17
17
  # Usage examples:
18
18
  # ApiError.new
19
19
  # ApiError.new("message")
20
- # ApiError.new(:code => 500, :response_headers => {}, :response_body => "")
21
- # ApiError.new(:code => 404, :message => "Not Found")
20
+ # ApiError.new(:status => 500, :response_headers => {}, :response_body => "")
21
+ # ApiError.new(:status => 404, :message => "Not Found")
22
22
  def initialize(arg = nil)
23
23
  if arg.is_a? Hash
24
24
  if arg.key?(:message) || arg.key?('message')
@@ -3,7 +3,7 @@
3
3
 
4
4
  #No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
5
5
 
6
- OpenAPI spec version: 3.0.1
6
+ OpenAPI spec version: 3.0.8
7
7
  Contact: apihelp@mailchimp.com
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
9
  Swagger Codegen version: 2.4.12
@@ -3,7 +3,7 @@
3
3
 
4
4
  #No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
5
5
 
6
- OpenAPI spec version: 3.0.1
6
+ OpenAPI spec version: 3.0.8
7
7
  Contact: apihelp@mailchimp.com
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
9
  Swagger Codegen version: 2.4.12
@@ -11,5 +11,5 @@ Swagger Codegen version: 2.4.12
11
11
  =end
12
12
 
13
13
  module MailchimpMarketing
14
- VERSION = '3.0.1'
14
+ VERSION = '3.0.8'
15
15
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: MailchimpMarketing
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Swagger-Codegen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-25 00:00:00.000000000 Z
11
+ date: 2020-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday