diff --git a/README.md b/README.md index 13e9133..62afb1e 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ API actions are available as methods on the client object. Currently, the Conver **Note:** We do not have complete API coverage yet. If we are missing an API method that you need to use in your application, please file an issue and/or open a pull request. -[See the official API documentation](http://kb.convertkit.com/article/api-documentation-v3/) for a complete API reference. +[See the official API documentation](https://developers.convertkit.com/v4.html) for a complete API reference. ## Use Cases diff --git a/lib/convertkit_v4/client.rb b/lib/convertkit_v4/client.rb index 4a69183..86fe4b5 100644 --- a/lib/convertkit_v4/client.rb +++ b/lib/convertkit_v4/client.rb @@ -2,6 +2,7 @@ require "convertkit_v4/client/custom_fields" require "convertkit_v4/client/forms" require "convertkit_v4/client/sequences" +require "convertkit_v4/client/broadcasts" require "convertkit_v4/client/subscribers" require "convertkit_v4/client/webhooks" require "convertkit_v4/client/tags" @@ -13,6 +14,7 @@ class Client include CustomFields include Forms include Sequences + include Broadcasts include Subscribers include Webhooks include Tags diff --git a/lib/convertkit_v4/client/broadcasts.rb b/lib/convertkit_v4/client/broadcasts.rb new file mode 100644 index 0000000..b8bd979 --- /dev/null +++ b/lib/convertkit_v4/client/broadcasts.rb @@ -0,0 +1,19 @@ +module ConvertkitV4 + class Client + module Broadcasts + + def broadcasts + connection.get("broadcasts").body["broadcasts"] + end + + def broadcast(broadcast_id) + connection.get("broadcasts/#{broadcast_id}").body["broadcast"] + end + + def broadcast_stats(broadcast_id) + connection.get("broadcasts/#{broadcast_id}/stats").body["broadcast"] + end + + end + end +end diff --git a/lib/convertkit_v4/client/subscribers.rb b/lib/convertkit_v4/client/subscribers.rb index 41915ad..f22326a 100644 --- a/lib/convertkit_v4/client/subscribers.rb +++ b/lib/convertkit_v4/client/subscribers.rb @@ -37,11 +37,7 @@ def update_subscriber(subscriber_id, options = {}) end def unsubscribe(subscriber_id) - connection.post("unsubscribe") do |f| - f.body = JSON.generate({ - id: subscriber_id - }) - end + connection.post("subscribers/#{subscriber_id}/unsubscribe") end def subscriber_tags(subscriber_id) diff --git a/lib/convertkit_v4/client/tags.rb b/lib/convertkit_v4/client/tags.rb index be45066..d39e6e2 100644 --- a/lib/convertkit_v4/client/tags.rb +++ b/lib/convertkit_v4/client/tags.rb @@ -12,7 +12,7 @@ def create_tag(tag_name) name: tag_name }) end - response.body + response.body["tag"] end def add_subscriber_to_tag(tag_id, options = {}) diff --git a/lib/convertkit_v4/connection.rb b/lib/convertkit_v4/connection.rb index cd39a23..1ef4678 100644 --- a/lib/convertkit_v4/connection.rb +++ b/lib/convertkit_v4/connection.rb @@ -8,7 +8,7 @@ class Connection attr_reader :http_connection API_URL = "https://api.convertkit.com/" - API_VERSION_PATH = "alpha/" + API_VERSION_PATH = "v4/" def initialize(access_token: nil) @http_connection = faraday_connection(access_token) diff --git a/lib/convertkit_v4/version.rb b/lib/convertkit_v4/version.rb index df04e30..6c4726f 100644 --- a/lib/convertkit_v4/version.rb +++ b/lib/convertkit_v4/version.rb @@ -1,3 +1,3 @@ module ConvertkitV4 - VERSION = "1.0.15" + VERSION = "1.0.18" end diff --git a/spec/convertkit_v4/client/broadcasts_spec.rb b/spec/convertkit_v4/client/broadcasts_spec.rb new file mode 100644 index 0000000..94fed14 --- /dev/null +++ b/spec/convertkit_v4/client/broadcasts_spec.rb @@ -0,0 +1,43 @@ +require "spec_helper" +require "securerandom" + +module ConvertkitV4 + class Client + describe Broadcasts do + before do + ConvertkitV4.configure do |config| + config.api_secret = ENV["API_SECRET"] + config.api_key = ENV["API_KEY"] + end + + @client = ConvertkitV4::Client.new + end + + describe "#broadcasts" do + it "sends the right request" do + r = @client.broadcasts + expect(r.success?).to be_truthy + expect(r.body).to_not eql({"error"=>"Authorization Failed", "message"=>"API Key not present"}) + end + end + + describe "#broadcast" do + it "sends the right request" do + broadcast_id = ENV['BROADCAST_ID'] + + r = @client.broadcast(broadcast_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 "#broadcast_stats" do + it "sends the right request" do + broadcast_id = ENV['BROADCAST_ID'] + + r = @client.broadcast_stats(broadcast_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 + end