diff --git a/lib/convertkit/client/tags.rb b/lib/convertkit/client/tags.rb index fb8e60d..67c835d 100644 --- a/lib/convertkit/client/tags.rb +++ b/lib/convertkit/client/tags.rb @@ -14,6 +14,16 @@ def add_subscriber_to_tag(tag_id, email, options = {}) end end + def remove_tag_from_subscriber(tag_id, subscriber_id) + connection.delete("subscribers/#{subscriber_id}/tags/#{tag_id}") + end + + def remove_tag_from_subscriber_by_email(tag_id, email) + connection.post("tags/#{tag_id}/unsubscribe") do |f| + f.params['email'] = email + end + end + def create_tag(tag_name) response = connection.post("tags") do |request| request.params["tag"] = { name: tag_name } @@ -27,6 +37,13 @@ def create_tags(tag_names) end response.body end + + def subscriptions_to_tag(tag_id, options = {}) + connection.get("tags/#{tag_id}/subscriptions", options) do |f| + f.params["sort_order"] = options[:sort_order] if options[:sort_order] + f.params["subscriber_state"] = options[:subscriber_state] if options[:subscriber_state] + end + end end end end diff --git a/spec/convertkit/client/tags_spec.rb b/spec/convertkit/client/tags_spec.rb index d78153e..5e6d0c1 100644 --- a/spec/convertkit/client/tags_spec.rb +++ b/spec/convertkit/client/tags_spec.rb @@ -32,6 +32,28 @@ class Client end end + describe "#remove_tag_from_subscriber" do + it "sends the right request" do + subscriber_id = ENV['SUBSCRIBER_ID'] + tag_id = ENV['TAG_ID'] + + r = @client.remove_tag_from_subscriber(tag_id, subscriber_id) + expect(r.success?).to be_truthy + expect(r.body).to_not eql({"error"=>"Not Found", "message"=>"The entity you were trying to find doesn't exist"}) + end + end + + describe "#remove_tag_from_subscriber_by_email" do + it "sends the right request" do + tag_id = ENV['TAG_ID'] + email = "crt-tags+#{Time.now.to_i}@example.com" + + r = @client.remove_tag_from_subscriber_by_email(tag_id, email) + expect(r.success?).to be_truthy + expect(r.body).to_not eql({"error"=>"Missing parameter","message"=>"Subscriber email is required"}) + end + end + describe "#create_tag" do it "creates a tag" do tag_name = "tag-#{SecureRandom.hex}" @@ -53,6 +75,16 @@ class Client expect(tags[1]["name"]).to eq(tag_name2) end end + + describe "#subscriptions_to_tag" do + it "sends the right request" do + tag_id = ENV['TAG_ID'] + + r = @client.subscriptions_to_tag(tag_id) + expect(r.success?).to be_truthy + expect(r.body).to_not eql({"error"=>"Authorization Failed", "message"=>"API Key not present"}) + end + end end end end