Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions lib/convertkit/client/tags.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand All @@ -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
32 changes: 32 additions & 0 deletions spec/convertkit/client/tags_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
Expand All @@ -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