gibbon 3.4.4 → 3.5.0

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
  SHA256:
3
- metadata.gz: a078fe9c806ec8909a1f808a6d6983de6f1d1414c361a9b54156b66f8a796bb3
4
- data.tar.gz: d0ded539be8f09eae933da1d20cace7ee804529668add90f8c892e672c61c362
3
+ metadata.gz: 61103c56f7d3ff60ca48fab8a2ca7c71949c1c01c784abd7ddb062dbd74d4560
4
+ data.tar.gz: 93f18505844eb71b72d189622547c61c0bda3c416bdb2a2caa4ec0358899e52b
5
5
  SHA512:
6
- metadata.gz: 9963ae0173d0189cfe674e1547313ad6570f3dc6f502198e77118e67f067bb842478b36dc46ed72bd675f692b42067f1bda0db59c47e43f8f215364818ac1d33
7
- data.tar.gz: 6f855c6ad7a73d447ed9c3219ba6383cd624dfa33abf3effbb655207b888e4eb2006297413aabb62f481f0adfde56dc67c863c47eb287a599c9f907db5c29aa9
6
+ metadata.gz: 7e4203bc006c80cc20c5fff0217673543faa842a28b57eb3620a373a63409c0e1b5f503335d44ff05d8ba8d124db1f5b984dcf5f98632aaa8ee077d525d0a413
7
+ data.tar.gz: ecc7c39379e218a5a10d92c4597fdb9e5f28c90c8297ef5a19d04189044a0b86a0f84120151369ecca4c989c3d88bb359fcc651de9527497cba368b608225d9d
@@ -0,0 +1,3 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: [amro]
data/.travis.yml CHANGED
@@ -9,4 +9,5 @@ rvm:
9
9
  - 2.6.5
10
10
  - 2.7
11
11
  - 3.0.0
12
-
12
+ - 3.1
13
+ - 3.2
data/CHANGELOG.md CHANGED
@@ -1,4 +1,5 @@
1
- ## [Unreleased][unreleased]
1
+ ## [3.5.0, unreleased] - 2022-06-05
2
+ - Remove support for retired Export API
2
3
 
3
4
  ## [3.4.4] - 2022-02-24
4
5
  - Remove non-alpha characters when parsing datacenter from API keys to prevent potential attackers from injecting a domain via the API key. This would only be possible if one were using user-provided API keys (e.g. from a form, etc.).
data/README.markdown CHANGED
@@ -180,6 +180,12 @@ Get a specific member's information (open/click rates etc.) from MailChimp:
180
180
  gibbon.lists(list_id).members(lower_case_md5_hashed_email_address).retrieve
181
181
  ```
182
182
 
183
+ Permanently delete a specific member from a list:
184
+
185
+ ```ruby
186
+ gibbon.lists(list_id).members(lower_case_md5_hashed_email_address).actions.delete_permanent.create
187
+ ```
188
+
183
189
  ### Tags
184
190
 
185
191
  [Tags](https://mailchimp.com/help/getting-started-tags/) are a flexible way to organize (slice and dice) your list: for example, you can send a campaign directly to one or more tags.
@@ -474,33 +480,6 @@ Gibbon 2.x+:
474
480
  ```ruby
475
481
  gibbon.lists(list_id).members.create(body: {email_address: "foo@bar.com", status: "subscribed", merge_fields: {FNAME: "Bob", LNAME: "Smith"}})
476
482
  ```
477
- ## Export API 1.0
478
-
479
- Gibbon 3.0.0+ supports MailChimp's [Export API 1.0](https://apidocs.mailchimp.com/export/1.0/). You can choose to handle the API response all at
480
- once or line by line by passing a block. To access the Export API with Gibbon, you must first create an instance of `Gibbon::Export`:
481
-
482
- ```ruby
483
- export = Gibbon::Export.new(api_key: "your_api_key")
484
- ```
485
-
486
- Next, call the method corresponding to the API endpoint you'd like to query:
487
-
488
- ```ruby
489
- export.list(id: list_id)
490
- ```
491
-
492
- This fetches and returns all of the results at once. Pass a block if you'd like to handle the response as individual lines:
493
-
494
- ```ruby
495
- export = Gibbon::Export.new(api_key: "your_api_key", timeout: 1200)
496
- export.list(id: list_id) do |row|
497
- puts row
498
- end
499
- ```
500
-
501
- This is useful when handling large sets of data. Setting the `timeout` here is optional, but a high value is recommended given the nature of the Export API. The default timeout is 600 seconds.
502
-
503
- Gibbon supports all current Export API endpoints: `/list`, `/ecommOrders`, and `/campaignSubscriberActivity`. They're mapped onto Ruby methods with similar names: `list()`, `ecomm_orders()`, and `campaign_subscriber_activity()` respectively. Please see [MailChimp's API documentation](https://developer.mailchimp.com/documentation/mailchimp/guides/how-to-use-the-export-api/) for supported parameters.
504
483
 
505
484
  ## Thanks
506
485
 
data/gibbon.gemspec CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |s|
9
9
  s.email = ["amromousa@gmail.com"]
10
10
  s.homepage = "http://github.com/amro/gibbon"
11
11
 
12
- s.summary = %q{A wrapper for MailChimp API 3.0 and Export API}
13
- s.description = %q{A wrapper for MailChimp API 3.0 and Export API}
12
+ s.summary = %q{A wrapper for MailChimp API 3.0}
13
+ s.description = %q{A wrapper for MailChimp API 3.0}
14
14
  s.license = "MIT"
15
15
 
16
16
  s.files = `git ls-files`.split("\n")
@@ -1,3 +1,3 @@
1
1
  module Gibbon
2
- VERSION = "3.4.4"
2
+ VERSION = "3.5.0"
3
3
  end
data/lib/gibbon.rb CHANGED
@@ -9,7 +9,6 @@ require 'gibbon/mailchimp_error'
9
9
  require 'gibbon/request'
10
10
  require 'gibbon/api_request'
11
11
  require 'gibbon/response'
12
- require 'gibbon/export'
13
12
 
14
13
  module Gibbon
15
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gibbon
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.4
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amro Mousa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-24 00:00:00.000000000 Z
11
+ date: 2023-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -80,7 +80,7 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.8'
83
- description: A wrapper for MailChimp API 3.0 and Export API
83
+ description: A wrapper for MailChimp API 3.0
84
84
  email:
85
85
  - amromousa@gmail.com
86
86
  executables: []
@@ -88,6 +88,7 @@ extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
90
  - ".document"
91
+ - ".github/FUNDING.yml"
91
92
  - ".gitignore"
92
93
  - ".travis.yml"
93
94
  - CHANGELOG.md
@@ -99,7 +100,6 @@ files:
99
100
  - gibbon.gemspec
100
101
  - lib/gibbon.rb
101
102
  - lib/gibbon/api_request.rb
102
- - lib/gibbon/export.rb
103
103
  - lib/gibbon/gibbon_error.rb
104
104
  - lib/gibbon/gibbon_helpers.rb
105
105
  - lib/gibbon/mailchimp_error.rb
@@ -107,7 +107,6 @@ files:
107
107
  - lib/gibbon/response.rb
108
108
  - lib/gibbon/version.rb
109
109
  - spec/gibbon/api_request_spec.rb
110
- - spec/gibbon/export_spec.rb
111
110
  - spec/gibbon/gibbon_spec.rb
112
111
  - spec/gibbon/mailchimp_error_spec.rb
113
112
  - spec/gibbon/upsert_spec.rb
@@ -134,10 +133,9 @@ requirements: []
134
133
  rubygems_version: 3.2.27
135
134
  signing_key:
136
135
  specification_version: 4
137
- summary: A wrapper for MailChimp API 3.0 and Export API
136
+ summary: A wrapper for MailChimp API 3.0
138
137
  test_files:
139
138
  - spec/gibbon/api_request_spec.rb
140
- - spec/gibbon/export_spec.rb
141
139
  - spec/gibbon/gibbon_spec.rb
142
140
  - spec/gibbon/mailchimp_error_spec.rb
143
141
  - spec/gibbon/upsert_spec.rb
data/lib/gibbon/export.rb DELETED
@@ -1,93 +0,0 @@
1
- require 'net/https'
2
-
3
- module Gibbon
4
- class Export
5
- include Helpers
6
-
7
- attr_accessor :api_key, :timeout
8
-
9
- def initialize(api_key: nil, timeout: nil)
10
- @api_key = api_key || self.class.api_key || ENV['MAILCHIMP_API_KEY']
11
- @timeout = timeout || self.class.timeout || 600
12
- end
13
-
14
- def list(params = {}, &block)
15
- call("list", params, &block)
16
- end
17
-
18
- def ecomm_orders(params = {}, &block)
19
- call("ecommOrders", params, &block)
20
- end
21
-
22
- def campaign_subscriber_activity(params = {}, &block)
23
- call("campaignSubscriberActivity", params, &block)
24
- end
25
-
26
- protected
27
-
28
- def export_api_url
29
- "https://#{get_data_center_from_api_key(@api_key)}api.mailchimp.com/export/1.0/"
30
- end
31
-
32
- def call(method, params = {}, &block)
33
- rows = []
34
-
35
- api_url = export_api_url + method + "/"
36
- params = params.merge({ apikey: @api_key })
37
- block = Proc.new { |row| rows << row } unless block_given?
38
-
39
- ensure_api_key(params)
40
-
41
- url = URI.parse(api_url)
42
- req = Net::HTTP::Post.new(url.path, initheader = {'Content-Type' => 'application/json'})
43
- req.body = MultiJson.dump(params)
44
- Net::HTTP.start(url.host, url.port, read_timeout: @timeout, use_ssl: true, ssl_version: :TLSv1_2) do |http|
45
- # http://stackoverflow.com/questions/29598196/ruby-net-http-read-body-nethttpokread-body-called-twice-ioerror
46
- http.request req do |response|
47
- i = -1
48
- last = ''
49
- response.read_body do |chunk|
50
- next if chunk.nil? or chunk.strip.empty?
51
- infix = "\n" if last[-1, 1]==']'
52
- lines, last = try_parse_line("#{last}#{infix}#{chunk}")
53
- lines.each { |line| block.call(line, i += 1) }
54
- end
55
- block.call(parse_line(last), i += 1) unless last.nil? or last.empty?
56
- end
57
- end
58
- rows unless block_given?
59
- end
60
-
61
- def try_parse_line(res)
62
- lines = res.split("\n")
63
- last = lines.pop || ''
64
- lines.map! { |line| parse_line(line) }
65
- [lines.compact, last]
66
- rescue MultiJson::ParseError
67
- [[], last]
68
- end
69
-
70
-
71
- def parse_line(line)
72
- parsed_response = MultiJson.load(line)
73
- rescue MultiJson::ParseError
74
- return []
75
- end
76
-
77
- private
78
-
79
- def ensure_api_key(params)
80
- unless params[:apikey] && (get_data_center_from_api_key(params[:apikey]) != "")
81
- raise Gibbon::GibbonError, "You must set an api_key prior to making a call"
82
- end
83
- end
84
-
85
- class << self
86
- attr_accessor :api_key, :timeout
87
-
88
- def method_missing(sym, *args, &block)
89
- new(api_key: self.api_key, timeout: self.timeout).send(sym, *args, &block)
90
- end
91
- end
92
- end
93
- end
@@ -1,39 +0,0 @@
1
- require 'spec_helper'
2
- require 'webmock/rspec'
3
-
4
- describe Gibbon::Export do
5
- before do
6
- Gibbon::Export.send(:public, *Gibbon::Export.protected_instance_methods)
7
- @export = Gibbon::Export.new
8
- end
9
-
10
- it "doesn't allow empty api key" do
11
- expect {@export.list(id: "123456")}.to raise_error(Gibbon::GibbonError)
12
- end
13
-
14
- it "doesn't allow api key without data center" do
15
- @api_key = "123"
16
- @export.api_key = @api_key
17
- expect {@export.list(id: "123456")}.to raise_error(Gibbon::GibbonError)
18
- end
19
-
20
- it "sets an API key from the 'MAILCHIMP_API_KEY' ENV variable" do
21
- ENV['MAILCHIMP_API_KEY'] = 'TESTKEY-us1'
22
- @export = Gibbon::Export.new
23
- expect(@export.api_key).to eq('TESTKEY-us1')
24
- ENV.delete('MAILCHIMP_API_KEY')
25
- end
26
-
27
- it "sets correct endpoint from api key" do
28
- @api_key = "TESTKEY-us1"
29
- @export.api_key = @api_key
30
- expect(@export.export_api_url).to eq("https://us1.api.mailchimp.com/export/1.0/")
31
- end
32
-
33
- it "sets correct timeout" do
34
- @api_key = "TESTKEY-us1"
35
- @export.api_key = @api_key
36
- @export.timeout = 9
37
- expect(@export.timeout).to eq(9)
38
- end
39
- end