MailchimpMarketing 3.0.1 → 3.0.8

Sign up to get free protection for your applications and to get access to all the features.
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