From 7fbdaab3ec9de9ce019cf61a4e93cd1f4e482233 Mon Sep 17 00:00:00 2001 From: Manuel Frigerio Date: Tue, 6 Feb 2024 19:46:20 +0000 Subject: [PATCH 01/17] endpoints --- lib/convertkit_v4/client/broadcasts.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 lib/convertkit_v4/client/broadcasts.rb 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 From 08beda344e18944ad11a6167da68129414a05d2c Mon Sep 17 00:00:00 2001 From: Manuel Frigerio Date: Tue, 6 Feb 2024 19:46:23 +0000 Subject: [PATCH 02/17] specs --- spec/convertkit_v4/client/broadcasts_spec.rb | 43 ++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 spec/convertkit_v4/client/broadcasts_spec.rb 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 From ab2f9697c231f10c7e500101601f49a573352274 Mon Sep 17 00:00:00 2001 From: Manuel Frigerio Date: Tue, 6 Feb 2024 19:46:28 +0000 Subject: [PATCH 03/17] version updated --- lib/convertkit_v4/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/convertkit_v4/version.rb b/lib/convertkit_v4/version.rb index df04e30..05bdeba 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.16" end From 4cd76cdbed18c5f5806b6772c5d6d327e74865fa Mon Sep 17 00:00:00 2001 From: Manuel Frigerio Date: Tue, 6 Feb 2024 20:20:22 +0000 Subject: [PATCH 04/17] include --- lib/convertkit_v4/client.rb | 2 ++ 1 file changed, 2 insertions(+) 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 From 04efae62c7384314bd95410325f5dfd8b539bf2e Mon Sep 17 00:00:00 2001 From: Manuel Frigerio Date: Tue, 6 Feb 2024 20:20:50 +0000 Subject: [PATCH 05/17] version --- lib/convertkit_v4/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/convertkit_v4/version.rb b/lib/convertkit_v4/version.rb index 05bdeba..4993468 100644 --- a/lib/convertkit_v4/version.rb +++ b/lib/convertkit_v4/version.rb @@ -1,3 +1,3 @@ module ConvertkitV4 - VERSION = "1.0.16" + VERSION = "1.0.17" end From 647109207dce1b2b7279074599b5b70939732d3d Mon Sep 17 00:00:00 2001 From: Petar Date: Mon, 25 Mar 2024 12:56:45 +0100 Subject: [PATCH 06/17] Switch v4 alpha to v4 version --- lib/convertkit_v4/connection.rb | 2 +- lib/convertkit_v4/version.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 4993468..6c4726f 100644 --- a/lib/convertkit_v4/version.rb +++ b/lib/convertkit_v4/version.rb @@ -1,3 +1,3 @@ module ConvertkitV4 - VERSION = "1.0.17" + VERSION = "1.0.18" end From d54633298af98d6d8e47c85ee91f5892487f413d Mon Sep 17 00:00:00 2001 From: Petar Date: Mon, 25 Mar 2024 13:06:29 +0100 Subject: [PATCH 07/17] The returned tag is nested under a tag attribute --- lib/convertkit_v4/client/tags.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 = {}) From f9b15226fa816abdd29a7f0d7ab4f4f815be8e08 Mon Sep 17 00:00:00 2001 From: belen mareque Date: Tue, 21 May 2024 12:25:57 +0200 Subject: [PATCH 08/17] updates unsubscribed endpoint --- README.md | 4 ++-- lib/convertkit_v4/client/subscribers.rb | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 13e9133..057164d 100644 --- a/README.md +++ b/README.md @@ -55,9 +55,9 @@ API actions are available as methods on the client object. Currently, the Conver | Add subscriber to form | `#add_subscriber_to_form(form_id, email, options = {})` | | Unsubscribe | `#unsubscribe(email)` | -**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. +**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) for a complete API reference. ## Use Cases 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) From 5ecbfdfaaf5da74a04b206c5d36aa66a20644825 Mon Sep 17 00:00:00 2001 From: belen mareque Date: Tue, 21 May 2024 15:21:05 +0200 Subject: [PATCH 09/17] update version number --- lib/convertkit_v4/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/convertkit_v4/version.rb b/lib/convertkit_v4/version.rb index 6c4726f..e8017ed 100644 --- a/lib/convertkit_v4/version.rb +++ b/lib/convertkit_v4/version.rb @@ -1,3 +1,3 @@ module ConvertkitV4 - VERSION = "1.0.18" + VERSION = "1.0.19" end From a3d07b1fd966d654dbd658a9a5bc5b5b5572b1a7 Mon Sep 17 00:00:00 2001 From: Petar Date: Thu, 25 Apr 2024 13:15:12 +0200 Subject: [PATCH 10/17] Update namespace --- Gemfile | 2 +- README.md | 40 ++++++++++-------- bin/console | 4 +- ...v4-ruby.gemspec => convertkit-ruby.gemspec | 6 +-- lib/{convertkit_v4.rb => convertkit.rb} | 8 ++-- lib/{convertkit_v4 => convertkit}/client.rb | 26 ++++++------ .../client/account.rb | 2 +- .../client/broadcasts.rb | 2 +- .../client/custom_fields.rb | 2 +- .../client/forms.rb | 2 +- .../client/sequences.rb | 2 +- .../client/subscribers.rb | 2 +- .../client/tags.rb | 2 +- .../client/webhooks.rb | 2 +- .../configuration.rb | 2 +- .../connection.rb | 11 +++-- lib/{convertkit_v4 => convertkit}/errors.rb | 2 +- lib/convertkit/version.rb | 3 ++ lib/convertkit_v4/version.rb | 3 -- .../client/account_spec.rb | 4 +- .../client/broadcasts_spec.rb | 6 +-- .../client/custom_fields_spec.rb | 4 +- .../client/forms_spec.rb | 4 +- .../client/sequences_spec.rb | 6 +-- .../client/subscribers_spec.rb | 6 +-- .../client/tags_spec.rb | 10 ++--- .../client/webhook_spec.rb | 6 +-- .../client_spec.rb | 4 +- .../connection_spec.rb | 2 +- spec/convertkit/convertkit_spec.rb | 41 +++++++++++++++++++ spec/convertkit_v4/convertkit_v4_spec.rb | 41 ------------------- spec/spec_helper.rb | 4 +- 32 files changed, 134 insertions(+), 127 deletions(-) rename convertkit_v4-ruby.gemspec => convertkit-ruby.gemspec (92%) rename lib/{convertkit_v4.rb => convertkit.rb} (60%) rename lib/{convertkit_v4 => convertkit}/client.rb (76%) rename lib/{convertkit_v4 => convertkit}/client/account.rb (85%) rename lib/{convertkit_v4 => convertkit}/client/broadcasts.rb (95%) rename lib/{convertkit_v4 => convertkit}/client/custom_fields.rb (97%) rename lib/{convertkit_v4 => convertkit}/client/forms.rb (95%) rename lib/{convertkit_v4 => convertkit}/client/sequences.rb (96%) rename lib/{convertkit_v4 => convertkit}/client/subscribers.rb (98%) rename lib/{convertkit_v4 => convertkit}/client/tags.rb (96%) rename lib/{convertkit_v4 => convertkit}/client/webhooks.rb (95%) rename lib/{convertkit_v4 => convertkit}/configuration.rb (92%) rename lib/{convertkit_v4 => convertkit}/connection.rb (88%) rename lib/{convertkit_v4 => convertkit}/errors.rb (94%) create mode 100644 lib/convertkit/version.rb delete mode 100644 lib/convertkit_v4/version.rb rename spec/{convertkit_v4 => convertkit}/client/account_spec.rb (85%) rename spec/{convertkit_v4 => convertkit}/client/broadcasts_spec.rb (91%) rename spec/{convertkit_v4 => convertkit}/client/custom_fields_spec.rb (95%) rename spec/{convertkit_v4 => convertkit}/client/forms_spec.rb (91%) rename spec/{convertkit_v4 => convertkit}/client/sequences_spec.rb (90%) rename spec/{convertkit_v4 => convertkit}/client/subscribers_spec.rb (96%) rename spec/{convertkit_v4 => convertkit}/client/tags_spec.rb (95%) rename spec/{convertkit_v4 => convertkit}/client/webhook_spec.rb (91%) rename spec/{convertkit_v4 => convertkit}/client_spec.rb (89%) rename spec/{convertkit_v4 => convertkit}/connection_spec.rb (98%) create mode 100644 spec/convertkit/convertkit_spec.rb delete mode 100644 spec/convertkit_v4/convertkit_v4_spec.rb diff --git a/Gemfile b/Gemfile index a99f74c..eacacf1 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' -# Specify your gem's dependencies in convertkit_v4-ruby.gemspec +# Specify your gem's dependencies in convertkit-ruby.gemspec gemspec gem 'dotenv', '~> 2.1', '>= 2.1.1' diff --git a/README.md b/README.md index 057164d..00af380 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # Convertkit V4 Ruby Client -A Ruby toolkit for [ConvertkitV4](https://convertkit.com/) API. +A Ruby toolkit for [Convertkit](https://convertkit.com/) API. ## Installation Add this line to your application's Gemfile: ```ruby -gem 'convertkit_v4-ruby', require: 'convertkit_v4' +gem 'convertkit-ruby', require: 'convertkit' ``` And then execute: @@ -16,29 +16,36 @@ And then execute: Or install it yourself as: - $ gem install convertkit_v4-ruby + $ gem install convertkit-ruby ## Authentication -For private integrations, use your personal ``API_KEY`` and ``API_SECRET`` found in [your account settings.](https://app.ConvertkitV4.com/account/edit) - ```ruby -require "dotenv" -Dotenv.load(".env.local") -ConvertkitV4.configure do |config| - config.api_secret = ENV["API_SECRET"] - config.api_key = ENV["API_KEY"] +Convertkit.configure do |config| + config.client_id = ENV["CK_CLIENT_ID"] + config.client_secret = ENV["CK_CLIENT_SECRET"] + config.redirect_uri = ENV["CK_REDIRECT_URI"] end -client = ConvertkitV4::Client.new +def convertkit_app + auth = request.env["omniauth.auth"] + + your_model.update( + convertkit_access_token: auth.token, + convertkit_refresh_token: auth.refresh_token, + convertkit_token_expires_at: auth.expires_at + ) + + redirect_to root_path, notice: 'Your ConvertKit account has been connected' +end ``` ## Usage -Calls for ConvertkitV4 API v3 are relative to the url [developers.convertkit.com](developers.convertkit.com). +Calls for Convertkit API v4 are relative to the url [api.convertkit.com/v4.html](api.convertkit.com/v4.html). -API actions are available as methods on the client object. Currently, the ConvertkitV4 client has the following methods: +API actions are available as methods on the client object. Currently, the Convertkit client has the following methods: | Action | Method | @@ -57,13 +64,14 @@ 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](https://developers.convertkit.com/v4) for a complete API reference. +[See the official API documentation](https://developers.convertkit.com/v4.html#getting-started) for a complete API reference. ## Use Cases -Here are some common use cases for the ConvertkitV4 v4 API client. +Here are some common use cases for the Convertkit v4 API client. -First configure the ``convertkit_v4-ruby`` gem with your ``API_KEY`` and ``API_SECRET``, and initialize a new client. After that, you can fetch data from your account. +First configure the ``convertkit-ruby`` gem with your ``client_id``, ``client_secret`` and ``redirect_uri``. +After that, you can initialize a new client with your access_token. ### List subscribers diff --git a/bin/console b/bin/console index 94a2fc5..d559970 100755 --- a/bin/console +++ b/bin/console @@ -1,12 +1,12 @@ #!/usr/bin/env ruby require "bundler/setup" -require "convertkit_v4" +require "convertkit" require "dotenv" Dotenv.load(".env.local") -ConvertkitV4.configure do |config| +Convertkit.configure do |config| config.client_id = ENV["CONVERTKIT_CLIENT_ID"] config.client_secret = ENV["CONVERTKIT_CLIENT_SECRET"] config.redirect_uri = ENV["CONVERTKIT_REDIRECT_URI"] diff --git a/convertkit_v4-ruby.gemspec b/convertkit-ruby.gemspec similarity index 92% rename from convertkit_v4-ruby.gemspec rename to convertkit-ruby.gemspec index 452e5b5..9af19ef 100644 --- a/convertkit_v4-ruby.gemspec +++ b/convertkit-ruby.gemspec @@ -1,11 +1,11 @@ # coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) -require 'convertkit_v4/version' +require 'convertkit/version' Gem::Specification.new do |spec| - spec.name = "convertkit_v4-ruby" - spec.version = ConvertkitV4::VERSION + spec.name = "convertkit-ruby" + spec.version = Convertkit::VERSION spec.authors = ["Manuel Frigerio", "Petar Risteski"] spec.email = ["manuel.frigerio@gmail.com", "risteskipetar3@gmail.com"] diff --git a/lib/convertkit_v4.rb b/lib/convertkit.rb similarity index 60% rename from lib/convertkit_v4.rb rename to lib/convertkit.rb index c21c0ae..e553f19 100644 --- a/lib/convertkit_v4.rb +++ b/lib/convertkit.rb @@ -1,8 +1,8 @@ -require "convertkit_v4/version" -require "convertkit_v4/configuration" -require "convertkit_v4/client" +require "convertkit/version" +require "convertkit/configuration" +require "convertkit/client" -module ConvertkitV4 +module Convertkit class << self attr_accessor :configuration end diff --git a/lib/convertkit_v4/client.rb b/lib/convertkit/client.rb similarity index 76% rename from lib/convertkit_v4/client.rb rename to lib/convertkit/client.rb index 86fe4b5..89848b5 100644 --- a/lib/convertkit_v4/client.rb +++ b/lib/convertkit/client.rb @@ -1,14 +1,14 @@ -require "convertkit_v4/client/account" -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" -require "convertkit_v4/connection" +require "convertkit/client/account" +require "convertkit/client/custom_fields" +require "convertkit/client/forms" +require "convertkit/client/sequences" +require "convertkit/client/broadcasts" +require "convertkit/client/subscribers" +require "convertkit/client/webhooks" +require "convertkit/client/tags" +require "convertkit/connection" -module ConvertkitV4 +module Convertkit class Client include Account include CustomFields @@ -29,9 +29,9 @@ def initialize(access_token: nil, refresh_token: nil, client_id: nil, client_sec @access_token = access_token @refresh_token = refresh_token - @client_id = client_id || ConvertkitV4.configuration.client_id - @client_secret = client_secret || ConvertkitV4.configuration.client_secret - @redirect_uri = redirect_uri || ConvertkitV4.configuration.redirect_uri + @client_id = client_id || Convertkit.configuration.client_id + @client_secret = client_secret || Convertkit.configuration.client_secret + @redirect_uri = redirect_uri || Convertkit.configuration.redirect_uri end def connection diff --git a/lib/convertkit_v4/client/account.rb b/lib/convertkit/client/account.rb similarity index 85% rename from lib/convertkit_v4/client/account.rb rename to lib/convertkit/client/account.rb index 4c9401f..ee25d3f 100644 --- a/lib/convertkit_v4/client/account.rb +++ b/lib/convertkit/client/account.rb @@ -1,4 +1,4 @@ -module ConvertkitV4 +module Convertkit class Client module Account def account diff --git a/lib/convertkit_v4/client/broadcasts.rb b/lib/convertkit/client/broadcasts.rb similarity index 95% rename from lib/convertkit_v4/client/broadcasts.rb rename to lib/convertkit/client/broadcasts.rb index b8bd979..951def2 100644 --- a/lib/convertkit_v4/client/broadcasts.rb +++ b/lib/convertkit/client/broadcasts.rb @@ -1,4 +1,4 @@ -module ConvertkitV4 +module Convertkit class Client module Broadcasts diff --git a/lib/convertkit_v4/client/custom_fields.rb b/lib/convertkit/client/custom_fields.rb similarity index 97% rename from lib/convertkit_v4/client/custom_fields.rb rename to lib/convertkit/client/custom_fields.rb index 8dc9ffc..9e4bec0 100644 --- a/lib/convertkit_v4/client/custom_fields.rb +++ b/lib/convertkit/client/custom_fields.rb @@ -1,4 +1,4 @@ -module ConvertkitV4 +module Convertkit class Client module CustomFields diff --git a/lib/convertkit_v4/client/forms.rb b/lib/convertkit/client/forms.rb similarity index 95% rename from lib/convertkit_v4/client/forms.rb rename to lib/convertkit/client/forms.rb index 7958868..fe84c62 100644 --- a/lib/convertkit_v4/client/forms.rb +++ b/lib/convertkit/client/forms.rb @@ -1,4 +1,4 @@ -module ConvertkitV4 +module Convertkit class Client module Forms def forms diff --git a/lib/convertkit_v4/client/sequences.rb b/lib/convertkit/client/sequences.rb similarity index 96% rename from lib/convertkit_v4/client/sequences.rb rename to lib/convertkit/client/sequences.rb index 6314b34..1716b2e 100644 --- a/lib/convertkit_v4/client/sequences.rb +++ b/lib/convertkit/client/sequences.rb @@ -1,4 +1,4 @@ -module ConvertkitV4 +module Convertkit class Client module Sequences def sequences diff --git a/lib/convertkit_v4/client/subscribers.rb b/lib/convertkit/client/subscribers.rb similarity index 98% rename from lib/convertkit_v4/client/subscribers.rb rename to lib/convertkit/client/subscribers.rb index f22326a..942a501 100644 --- a/lib/convertkit_v4/client/subscribers.rb +++ b/lib/convertkit/client/subscribers.rb @@ -1,4 +1,4 @@ -module ConvertkitV4 +module Convertkit class Client module Subscribers diff --git a/lib/convertkit_v4/client/tags.rb b/lib/convertkit/client/tags.rb similarity index 96% rename from lib/convertkit_v4/client/tags.rb rename to lib/convertkit/client/tags.rb index d39e6e2..4cf6e78 100644 --- a/lib/convertkit_v4/client/tags.rb +++ b/lib/convertkit/client/tags.rb @@ -1,4 +1,4 @@ -module ConvertkitV4 +module Convertkit class Client module Tags diff --git a/lib/convertkit_v4/client/webhooks.rb b/lib/convertkit/client/webhooks.rb similarity index 95% rename from lib/convertkit_v4/client/webhooks.rb rename to lib/convertkit/client/webhooks.rb index 4cd8a6c..a7ab635 100644 --- a/lib/convertkit_v4/client/webhooks.rb +++ b/lib/convertkit/client/webhooks.rb @@ -1,4 +1,4 @@ -module ConvertkitV4 +module Convertkit class Client module Webhooks diff --git a/lib/convertkit_v4/configuration.rb b/lib/convertkit/configuration.rb similarity index 92% rename from lib/convertkit_v4/configuration.rb rename to lib/convertkit/configuration.rb index 74cdfee..74cc7a1 100644 --- a/lib/convertkit_v4/configuration.rb +++ b/lib/convertkit/configuration.rb @@ -1,4 +1,4 @@ -module ConvertkitV4 +module Convertkit class Configuration attr_accessor :client_id, :client_secret, :redirect_uri, :access_token, :refresh_token attr_accessor :timeout, :open_timeout diff --git a/lib/convertkit_v4/connection.rb b/lib/convertkit/connection.rb similarity index 88% rename from lib/convertkit_v4/connection.rb rename to lib/convertkit/connection.rb index 1ef4678..a8959ea 100644 --- a/lib/convertkit_v4/connection.rb +++ b/lib/convertkit/connection.rb @@ -1,14 +1,13 @@ -require "convertkit_v4/errors" +require "convertkit/errors" require "faraday" require "faraday_middleware" require "json" -module ConvertkitV4 +module Convertkit class Connection attr_reader :http_connection API_URL = "https://api.convertkit.com/" - API_VERSION_PATH = "v4/" def initialize(access_token: nil) @http_connection = faraday_connection(access_token) @@ -38,11 +37,11 @@ def delete(*args, &blk) def faraday_connection(access_token) Faraday.new do |f| - f.url_prefix = "#{API_URL}#{API_VERSION_PATH}" + f.url_prefix = "#{API_URL}" f.adapter :net_http - f.options.timeout = ConvertkitV4.configuration.timeout - f.options.open_timeout = ConvertkitV4.configuration.open_timeout + f.options.timeout = Convertkit.configuration.timeout + f.options.open_timeout = Convertkit.configuration.open_timeout f.headers['Content-Type'] = content_type f.headers['Accept'] = "*/*" diff --git a/lib/convertkit_v4/errors.rb b/lib/convertkit/errors.rb similarity index 94% rename from lib/convertkit_v4/errors.rb rename to lib/convertkit/errors.rb index b73e83c..cba509a 100644 --- a/lib/convertkit_v4/errors.rb +++ b/lib/convertkit/errors.rb @@ -1,4 +1,4 @@ -module ConvertkitV4 +module Convertkit class Error < StandardError; end class AuthorizationError < Error; end diff --git a/lib/convertkit/version.rb b/lib/convertkit/version.rb new file mode 100644 index 0000000..8380511 --- /dev/null +++ b/lib/convertkit/version.rb @@ -0,0 +1,3 @@ +module Convertkit + VERSION = "1.0.20" +end diff --git a/lib/convertkit_v4/version.rb b/lib/convertkit_v4/version.rb deleted file mode 100644 index e8017ed..0000000 --- a/lib/convertkit_v4/version.rb +++ /dev/null @@ -1,3 +0,0 @@ -module ConvertkitV4 - VERSION = "1.0.19" -end diff --git a/spec/convertkit_v4/client/account_spec.rb b/spec/convertkit/client/account_spec.rb similarity index 85% rename from spec/convertkit_v4/client/account_spec.rb rename to spec/convertkit/client/account_spec.rb index 2ab6d5c..d455d8b 100644 --- a/spec/convertkit_v4/client/account_spec.rb +++ b/spec/convertkit/client/account_spec.rb @@ -1,10 +1,10 @@ require "spec_helper" -module ConvertkitV4 +module Convertkit class Client describe Account do before do - @client = ConvertkitV4::Client.new + @client = Convertkit::Client.new end describe "#account" do diff --git a/spec/convertkit_v4/client/broadcasts_spec.rb b/spec/convertkit/client/broadcasts_spec.rb similarity index 91% rename from spec/convertkit_v4/client/broadcasts_spec.rb rename to spec/convertkit/client/broadcasts_spec.rb index 94fed14..ddaca8b 100644 --- a/spec/convertkit_v4/client/broadcasts_spec.rb +++ b/spec/convertkit/client/broadcasts_spec.rb @@ -1,16 +1,16 @@ require "spec_helper" require "securerandom" -module ConvertkitV4 +module Convertkit class Client describe Broadcasts do before do - ConvertkitV4.configure do |config| + Convertkit.configure do |config| config.api_secret = ENV["API_SECRET"] config.api_key = ENV["API_KEY"] end - @client = ConvertkitV4::Client.new + @client = Convertkit::Client.new end describe "#broadcasts" do diff --git a/spec/convertkit_v4/client/custom_fields_spec.rb b/spec/convertkit/client/custom_fields_spec.rb similarity index 95% rename from spec/convertkit_v4/client/custom_fields_spec.rb rename to spec/convertkit/client/custom_fields_spec.rb index 3305e01..6737e1e 100644 --- a/spec/convertkit_v4/client/custom_fields_spec.rb +++ b/spec/convertkit/client/custom_fields_spec.rb @@ -1,10 +1,10 @@ require "spec_helper" -module ConvertkitV4 +module Convertkit class Client describe CustomFields do before do - @client = ConvertkitV4::Client.new + @client = Convertkit::Client.new end describe "#custom_fields" do diff --git a/spec/convertkit_v4/client/forms_spec.rb b/spec/convertkit/client/forms_spec.rb similarity index 91% rename from spec/convertkit_v4/client/forms_spec.rb rename to spec/convertkit/client/forms_spec.rb index 9d3fa1e..7ec1a56 100644 --- a/spec/convertkit_v4/client/forms_spec.rb +++ b/spec/convertkit/client/forms_spec.rb @@ -1,10 +1,10 @@ require "spec_helper" -module ConvertkitV4 +module Convertkit class Client describe Forms do before do - @client = ConvertkitV4::Client.new + @client = Convertkit::Client.new end describe "#forms" do diff --git a/spec/convertkit_v4/client/sequences_spec.rb b/spec/convertkit/client/sequences_spec.rb similarity index 90% rename from spec/convertkit_v4/client/sequences_spec.rb rename to spec/convertkit/client/sequences_spec.rb index 5c515c0..5f01b97 100644 --- a/spec/convertkit_v4/client/sequences_spec.rb +++ b/spec/convertkit/client/sequences_spec.rb @@ -1,15 +1,15 @@ require "spec_helper" -module ConvertkitV4 +module Convertkit class Client describe Sequences do before do - ConvertkitV4.configure do |config| + Convertkit.configure do |config| config.api_secret = ENV["API_SECRET"] config.api_key = ENV["API_KEY"] end - @client = ConvertkitV4::Client.new + @client = Convertkit::Client.new end describe "#sequences" do diff --git a/spec/convertkit_v4/client/subscribers_spec.rb b/spec/convertkit/client/subscribers_spec.rb similarity index 96% rename from spec/convertkit_v4/client/subscribers_spec.rb rename to spec/convertkit/client/subscribers_spec.rb index cb12048..5657cea 100644 --- a/spec/convertkit_v4/client/subscribers_spec.rb +++ b/spec/convertkit/client/subscribers_spec.rb @@ -1,16 +1,16 @@ require "spec_helper" require "securerandom" -module ConvertkitV4 +module Convertkit class Client describe Subscribers do before do - ConvertkitV4.configure do |config| + Convertkit.configure do |config| config.api_secret = ENV["API_SECRET"] config.api_key = ENV["API_KEY"] end - @client = ConvertkitV4::Client.new + @client = Convertkit::Client.new end describe "#subscribers" do diff --git a/spec/convertkit_v4/client/tags_spec.rb b/spec/convertkit/client/tags_spec.rb similarity index 95% rename from spec/convertkit_v4/client/tags_spec.rb rename to spec/convertkit/client/tags_spec.rb index 5ca9d6d..875d7ea 100644 --- a/spec/convertkit_v4/client/tags_spec.rb +++ b/spec/convertkit/client/tags_spec.rb @@ -1,16 +1,16 @@ require "spec_helper" require "securerandom" -module ConvertkitV4 +module Convertkit class Client describe Tags do before do - ConvertkitV4.configure do |config| + Convertkit.configure do |config| config.api_secret = ENV["API_SECRET"] config.api_key = ENV["API_KEY"] end - @client = ConvertkitV4::Client.new + @client = Convertkit::Client.new end describe "#tags" do @@ -36,7 +36,7 @@ class Client 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"}) @@ -47,7 +47,7 @@ class Client 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"}) diff --git a/spec/convertkit_v4/client/webhook_spec.rb b/spec/convertkit/client/webhook_spec.rb similarity index 91% rename from spec/convertkit_v4/client/webhook_spec.rb rename to spec/convertkit/client/webhook_spec.rb index 45be9a7..8715b08 100644 --- a/spec/convertkit_v4/client/webhook_spec.rb +++ b/spec/convertkit/client/webhook_spec.rb @@ -1,16 +1,16 @@ require "spec_helper" require "securerandom" -module ConvertkitV4 +module Convertkit class Client describe Webhooks do before do - ConvertkitV4.configure do |config| + Convertkit.configure do |config| config.api_secret = ENV["API_SECRET"] config.api_key = ENV["API_KEY"] end - @client = ConvertkitV4::Client.new + @client = Convertkit::Client.new @url = "https://webhook.site/2bc3b03e-0f34-4a00-b2a9-028eff304f50" @events = {"name": "subscriber.subscriber_activate"} @rule_id = 1175937 diff --git a/spec/convertkit_v4/client_spec.rb b/spec/convertkit/client_spec.rb similarity index 89% rename from spec/convertkit_v4/client_spec.rb rename to spec/convertkit/client_spec.rb index 05eaabc..0a3e690 100644 --- a/spec/convertkit_v4/client_spec.rb +++ b/spec/convertkit/client_spec.rb @@ -1,10 +1,10 @@ require "spec_helper" require "base64" -module ConvertkitV4 +module Convertkit describe Client do before :each do - @client = ConvertkitV4::Client.new + @client = Convertkit::Client.new end describe "#initialize" do diff --git a/spec/convertkit_v4/connection_spec.rb b/spec/convertkit/connection_spec.rb similarity index 98% rename from spec/convertkit_v4/connection_spec.rb rename to spec/convertkit/connection_spec.rb index 0c2a899..8ce371a 100644 --- a/spec/convertkit_v4/connection_spec.rb +++ b/spec/convertkit/connection_spec.rb @@ -1,6 +1,6 @@ require "spec_helper" -module ConvertkitV4 +module Convertkit describe Connection do describe "#initialize" do it "uses access_token" do diff --git a/spec/convertkit/convertkit_spec.rb b/spec/convertkit/convertkit_spec.rb new file mode 100644 index 0000000..39c144e --- /dev/null +++ b/spec/convertkit/convertkit_spec.rb @@ -0,0 +1,41 @@ +require "spec_helper" + +describe Convertkit do + it 'has a version number' do + expect(Convertkit::VERSION).not_to be nil + end + + describe "#configure" do + before do + @old_configuration = Convertkit.configuration.dup + end + + after do + Convertkit.configuration = @old_configuration + end + + it "sets the client_id value" do + Convertkit.configure do |config| + config.client_id = "new_client_id" + end + + expect(Convertkit.configuration.client_id).to eql("new_client_id") + end + + it "sets the timeout value" do + Convertkit.configure do |config| + config.timeout = 10 + end + + expect(Convertkit.configuration.timeout).to eql(10) + end + + it "sets the open_timeout value" do + Convertkit.configure do |config| + config.open_timeout = 10 + end + + expect(Convertkit.configuration.open_timeout).to eql(10) + end + end +end diff --git a/spec/convertkit_v4/convertkit_v4_spec.rb b/spec/convertkit_v4/convertkit_v4_spec.rb deleted file mode 100644 index b04c5a6..0000000 --- a/spec/convertkit_v4/convertkit_v4_spec.rb +++ /dev/null @@ -1,41 +0,0 @@ -require "spec_helper" - -describe ConvertkitV4 do - it 'has a version number' do - expect(ConvertkitV4::VERSION).not_to be nil - end - - describe "#configure" do - before do - @old_configuration = ConvertkitV4.configuration.dup - end - - after do - ConvertkitV4.configuration = @old_configuration - end - - it "sets the client_id value" do - ConvertkitV4.configure do |config| - config.client_id = "new_client_id" - end - - expect(ConvertkitV4.configuration.client_id).to eql("new_client_id") - end - - it "sets the timeout value" do - ConvertkitV4.configure do |config| - config.timeout = 10 - end - - expect(ConvertkitV4.configuration.timeout).to eql(10) - end - - it "sets the open_timeout value" do - ConvertkitV4.configure do |config| - config.open_timeout = 10 - end - - expect(ConvertkitV4.configuration.open_timeout).to eql(10) - end - end -end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index da97bce..5c68ed7 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,12 +1,12 @@ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__) -require 'convertkit_v4' +require 'convertkit' require "dotenv" Dotenv.load(".env.local") require 'webmock/rspec' require 'vcr' -ConvertkitV4.configure do |config| +Convertkit.configure do |config| config.access_token = ENV["CONVERTKIT_ACCESS_TOKEN"] end From 336b1288a475f94cb0f3e142240609d9bc51a78e Mon Sep 17 00:00:00 2001 From: risteskipetar Date: Mon, 29 Apr 2024 20:43:03 +0200 Subject: [PATCH 11/17] Update faraday --- convertkit-ruby.gemspec | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/convertkit-ruby.gemspec b/convertkit-ruby.gemspec index 9af19ef..f741e2a 100644 --- a/convertkit-ruby.gemspec +++ b/convertkit-ruby.gemspec @@ -33,7 +33,6 @@ Gem::Specification.new do |spec| spec.add_development_dependency "rspec", "~> 3.0" spec.add_development_dependency "dotenv", "~> 2.1" - spec.add_runtime_dependency "faraday", "~> 1.0" - spec.add_runtime_dependency "faraday_middleware", "~> 1.0" + spec.add_runtime_dependency "faraday", "~> 2.0" spec.add_runtime_dependency "json", '>= 1.8.3' end From 5dd7693b15d4718821a9fa9037c8a86a9a9c1557 Mon Sep 17 00:00:00 2001 From: Petar Risteski <34573163+risteskipetar@users.noreply.github.com> Date: Mon, 3 Jun 2024 14:29:10 +0200 Subject: [PATCH 12/17] Revert "Update namespace" --- Gemfile | 2 +- README.md | 40 ++++++++---------- bin/console | 4 +- ...ruby.gemspec => convertkit_v4-ruby.gemspec | 9 ++-- lib/convertkit/version.rb | 3 -- lib/{convertkit.rb => convertkit_v4.rb} | 8 ++-- lib/{convertkit => convertkit_v4}/client.rb | 26 ++++++------ .../client/account.rb | 2 +- .../client/broadcasts.rb | 2 +- .../client/custom_fields.rb | 2 +- .../client/forms.rb | 2 +- .../client/sequences.rb | 2 +- .../client/subscribers.rb | 2 +- .../client/tags.rb | 2 +- .../client/webhooks.rb | 2 +- .../configuration.rb | 2 +- .../connection.rb | 11 ++--- lib/{convertkit => convertkit_v4}/errors.rb | 2 +- lib/convertkit_v4/version.rb | 3 ++ spec/convertkit/convertkit_spec.rb | 41 ------------------- .../client/account_spec.rb | 4 +- .../client/broadcasts_spec.rb | 6 +-- .../client/custom_fields_spec.rb | 4 +- .../client/forms_spec.rb | 4 +- .../client/sequences_spec.rb | 6 +-- .../client/subscribers_spec.rb | 6 +-- .../client/tags_spec.rb | 10 ++--- .../client/webhook_spec.rb | 6 +-- .../client_spec.rb | 4 +- .../connection_spec.rb | 2 +- spec/convertkit_v4/convertkit_v4_spec.rb | 41 +++++++++++++++++++ spec/spec_helper.rb | 4 +- 32 files changed, 129 insertions(+), 135 deletions(-) rename convertkit-ruby.gemspec => convertkit_v4-ruby.gemspec (85%) delete mode 100644 lib/convertkit/version.rb rename lib/{convertkit.rb => convertkit_v4.rb} (60%) rename lib/{convertkit => convertkit_v4}/client.rb (76%) rename lib/{convertkit => convertkit_v4}/client/account.rb (85%) rename lib/{convertkit => convertkit_v4}/client/broadcasts.rb (95%) rename lib/{convertkit => convertkit_v4}/client/custom_fields.rb (97%) rename lib/{convertkit => convertkit_v4}/client/forms.rb (95%) rename lib/{convertkit => convertkit_v4}/client/sequences.rb (96%) rename lib/{convertkit => convertkit_v4}/client/subscribers.rb (98%) rename lib/{convertkit => convertkit_v4}/client/tags.rb (96%) rename lib/{convertkit => convertkit_v4}/client/webhooks.rb (95%) rename lib/{convertkit => convertkit_v4}/configuration.rb (92%) rename lib/{convertkit => convertkit_v4}/connection.rb (88%) rename lib/{convertkit => convertkit_v4}/errors.rb (94%) create mode 100644 lib/convertkit_v4/version.rb delete mode 100644 spec/convertkit/convertkit_spec.rb rename spec/{convertkit => convertkit_v4}/client/account_spec.rb (85%) rename spec/{convertkit => convertkit_v4}/client/broadcasts_spec.rb (91%) rename spec/{convertkit => convertkit_v4}/client/custom_fields_spec.rb (95%) rename spec/{convertkit => convertkit_v4}/client/forms_spec.rb (91%) rename spec/{convertkit => convertkit_v4}/client/sequences_spec.rb (90%) rename spec/{convertkit => convertkit_v4}/client/subscribers_spec.rb (96%) rename spec/{convertkit => convertkit_v4}/client/tags_spec.rb (95%) rename spec/{convertkit => convertkit_v4}/client/webhook_spec.rb (91%) rename spec/{convertkit => convertkit_v4}/client_spec.rb (89%) rename spec/{convertkit => convertkit_v4}/connection_spec.rb (98%) create mode 100644 spec/convertkit_v4/convertkit_v4_spec.rb diff --git a/Gemfile b/Gemfile index eacacf1..a99f74c 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' -# Specify your gem's dependencies in convertkit-ruby.gemspec +# Specify your gem's dependencies in convertkit_v4-ruby.gemspec gemspec gem 'dotenv', '~> 2.1', '>= 2.1.1' diff --git a/README.md b/README.md index 00af380..057164d 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # Convertkit V4 Ruby Client -A Ruby toolkit for [Convertkit](https://convertkit.com/) API. +A Ruby toolkit for [ConvertkitV4](https://convertkit.com/) API. ## Installation Add this line to your application's Gemfile: ```ruby -gem 'convertkit-ruby', require: 'convertkit' +gem 'convertkit_v4-ruby', require: 'convertkit_v4' ``` And then execute: @@ -16,36 +16,29 @@ And then execute: Or install it yourself as: - $ gem install convertkit-ruby + $ gem install convertkit_v4-ruby ## Authentication +For private integrations, use your personal ``API_KEY`` and ``API_SECRET`` found in [your account settings.](https://app.ConvertkitV4.com/account/edit) + ```ruby +require "dotenv" +Dotenv.load(".env.local") -Convertkit.configure do |config| - config.client_id = ENV["CK_CLIENT_ID"] - config.client_secret = ENV["CK_CLIENT_SECRET"] - config.redirect_uri = ENV["CK_REDIRECT_URI"] +ConvertkitV4.configure do |config| + config.api_secret = ENV["API_SECRET"] + config.api_key = ENV["API_KEY"] end -def convertkit_app - auth = request.env["omniauth.auth"] - - your_model.update( - convertkit_access_token: auth.token, - convertkit_refresh_token: auth.refresh_token, - convertkit_token_expires_at: auth.expires_at - ) - - redirect_to root_path, notice: 'Your ConvertKit account has been connected' -end +client = ConvertkitV4::Client.new ``` ## Usage -Calls for Convertkit API v4 are relative to the url [api.convertkit.com/v4.html](api.convertkit.com/v4.html). +Calls for ConvertkitV4 API v3 are relative to the url [developers.convertkit.com](developers.convertkit.com). -API actions are available as methods on the client object. Currently, the Convertkit client has the following methods: +API actions are available as methods on the client object. Currently, the ConvertkitV4 client has the following methods: | Action | Method | @@ -64,14 +57,13 @@ 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](https://developers.convertkit.com/v4.html#getting-started) for a complete API reference. +[See the official API documentation](https://developers.convertkit.com/v4) for a complete API reference. ## Use Cases -Here are some common use cases for the Convertkit v4 API client. +Here are some common use cases for the ConvertkitV4 v4 API client. -First configure the ``convertkit-ruby`` gem with your ``client_id``, ``client_secret`` and ``redirect_uri``. -After that, you can initialize a new client with your access_token. +First configure the ``convertkit_v4-ruby`` gem with your ``API_KEY`` and ``API_SECRET``, and initialize a new client. After that, you can fetch data from your account. ### List subscribers diff --git a/bin/console b/bin/console index d559970..94a2fc5 100755 --- a/bin/console +++ b/bin/console @@ -1,12 +1,12 @@ #!/usr/bin/env ruby require "bundler/setup" -require "convertkit" +require "convertkit_v4" require "dotenv" Dotenv.load(".env.local") -Convertkit.configure do |config| +ConvertkitV4.configure do |config| config.client_id = ENV["CONVERTKIT_CLIENT_ID"] config.client_secret = ENV["CONVERTKIT_CLIENT_SECRET"] config.redirect_uri = ENV["CONVERTKIT_REDIRECT_URI"] diff --git a/convertkit-ruby.gemspec b/convertkit_v4-ruby.gemspec similarity index 85% rename from convertkit-ruby.gemspec rename to convertkit_v4-ruby.gemspec index f741e2a..452e5b5 100644 --- a/convertkit-ruby.gemspec +++ b/convertkit_v4-ruby.gemspec @@ -1,11 +1,11 @@ # coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) -require 'convertkit/version' +require 'convertkit_v4/version' Gem::Specification.new do |spec| - spec.name = "convertkit-ruby" - spec.version = Convertkit::VERSION + spec.name = "convertkit_v4-ruby" + spec.version = ConvertkitV4::VERSION spec.authors = ["Manuel Frigerio", "Petar Risteski"] spec.email = ["manuel.frigerio@gmail.com", "risteskipetar3@gmail.com"] @@ -33,6 +33,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency "rspec", "~> 3.0" spec.add_development_dependency "dotenv", "~> 2.1" - spec.add_runtime_dependency "faraday", "~> 2.0" + spec.add_runtime_dependency "faraday", "~> 1.0" + spec.add_runtime_dependency "faraday_middleware", "~> 1.0" spec.add_runtime_dependency "json", '>= 1.8.3' end diff --git a/lib/convertkit/version.rb b/lib/convertkit/version.rb deleted file mode 100644 index 8380511..0000000 --- a/lib/convertkit/version.rb +++ /dev/null @@ -1,3 +0,0 @@ -module Convertkit - VERSION = "1.0.20" -end diff --git a/lib/convertkit.rb b/lib/convertkit_v4.rb similarity index 60% rename from lib/convertkit.rb rename to lib/convertkit_v4.rb index e553f19..c21c0ae 100644 --- a/lib/convertkit.rb +++ b/lib/convertkit_v4.rb @@ -1,8 +1,8 @@ -require "convertkit/version" -require "convertkit/configuration" -require "convertkit/client" +require "convertkit_v4/version" +require "convertkit_v4/configuration" +require "convertkit_v4/client" -module Convertkit +module ConvertkitV4 class << self attr_accessor :configuration end diff --git a/lib/convertkit/client.rb b/lib/convertkit_v4/client.rb similarity index 76% rename from lib/convertkit/client.rb rename to lib/convertkit_v4/client.rb index 89848b5..86fe4b5 100644 --- a/lib/convertkit/client.rb +++ b/lib/convertkit_v4/client.rb @@ -1,14 +1,14 @@ -require "convertkit/client/account" -require "convertkit/client/custom_fields" -require "convertkit/client/forms" -require "convertkit/client/sequences" -require "convertkit/client/broadcasts" -require "convertkit/client/subscribers" -require "convertkit/client/webhooks" -require "convertkit/client/tags" -require "convertkit/connection" +require "convertkit_v4/client/account" +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" +require "convertkit_v4/connection" -module Convertkit +module ConvertkitV4 class Client include Account include CustomFields @@ -29,9 +29,9 @@ def initialize(access_token: nil, refresh_token: nil, client_id: nil, client_sec @access_token = access_token @refresh_token = refresh_token - @client_id = client_id || Convertkit.configuration.client_id - @client_secret = client_secret || Convertkit.configuration.client_secret - @redirect_uri = redirect_uri || Convertkit.configuration.redirect_uri + @client_id = client_id || ConvertkitV4.configuration.client_id + @client_secret = client_secret || ConvertkitV4.configuration.client_secret + @redirect_uri = redirect_uri || ConvertkitV4.configuration.redirect_uri end def connection diff --git a/lib/convertkit/client/account.rb b/lib/convertkit_v4/client/account.rb similarity index 85% rename from lib/convertkit/client/account.rb rename to lib/convertkit_v4/client/account.rb index ee25d3f..4c9401f 100644 --- a/lib/convertkit/client/account.rb +++ b/lib/convertkit_v4/client/account.rb @@ -1,4 +1,4 @@ -module Convertkit +module ConvertkitV4 class Client module Account def account diff --git a/lib/convertkit/client/broadcasts.rb b/lib/convertkit_v4/client/broadcasts.rb similarity index 95% rename from lib/convertkit/client/broadcasts.rb rename to lib/convertkit_v4/client/broadcasts.rb index 951def2..b8bd979 100644 --- a/lib/convertkit/client/broadcasts.rb +++ b/lib/convertkit_v4/client/broadcasts.rb @@ -1,4 +1,4 @@ -module Convertkit +module ConvertkitV4 class Client module Broadcasts diff --git a/lib/convertkit/client/custom_fields.rb b/lib/convertkit_v4/client/custom_fields.rb similarity index 97% rename from lib/convertkit/client/custom_fields.rb rename to lib/convertkit_v4/client/custom_fields.rb index 9e4bec0..8dc9ffc 100644 --- a/lib/convertkit/client/custom_fields.rb +++ b/lib/convertkit_v4/client/custom_fields.rb @@ -1,4 +1,4 @@ -module Convertkit +module ConvertkitV4 class Client module CustomFields diff --git a/lib/convertkit/client/forms.rb b/lib/convertkit_v4/client/forms.rb similarity index 95% rename from lib/convertkit/client/forms.rb rename to lib/convertkit_v4/client/forms.rb index fe84c62..7958868 100644 --- a/lib/convertkit/client/forms.rb +++ b/lib/convertkit_v4/client/forms.rb @@ -1,4 +1,4 @@ -module Convertkit +module ConvertkitV4 class Client module Forms def forms diff --git a/lib/convertkit/client/sequences.rb b/lib/convertkit_v4/client/sequences.rb similarity index 96% rename from lib/convertkit/client/sequences.rb rename to lib/convertkit_v4/client/sequences.rb index 1716b2e..6314b34 100644 --- a/lib/convertkit/client/sequences.rb +++ b/lib/convertkit_v4/client/sequences.rb @@ -1,4 +1,4 @@ -module Convertkit +module ConvertkitV4 class Client module Sequences def sequences diff --git a/lib/convertkit/client/subscribers.rb b/lib/convertkit_v4/client/subscribers.rb similarity index 98% rename from lib/convertkit/client/subscribers.rb rename to lib/convertkit_v4/client/subscribers.rb index 942a501..f22326a 100644 --- a/lib/convertkit/client/subscribers.rb +++ b/lib/convertkit_v4/client/subscribers.rb @@ -1,4 +1,4 @@ -module Convertkit +module ConvertkitV4 class Client module Subscribers diff --git a/lib/convertkit/client/tags.rb b/lib/convertkit_v4/client/tags.rb similarity index 96% rename from lib/convertkit/client/tags.rb rename to lib/convertkit_v4/client/tags.rb index 4cf6e78..d39e6e2 100644 --- a/lib/convertkit/client/tags.rb +++ b/lib/convertkit_v4/client/tags.rb @@ -1,4 +1,4 @@ -module Convertkit +module ConvertkitV4 class Client module Tags diff --git a/lib/convertkit/client/webhooks.rb b/lib/convertkit_v4/client/webhooks.rb similarity index 95% rename from lib/convertkit/client/webhooks.rb rename to lib/convertkit_v4/client/webhooks.rb index a7ab635..4cd8a6c 100644 --- a/lib/convertkit/client/webhooks.rb +++ b/lib/convertkit_v4/client/webhooks.rb @@ -1,4 +1,4 @@ -module Convertkit +module ConvertkitV4 class Client module Webhooks diff --git a/lib/convertkit/configuration.rb b/lib/convertkit_v4/configuration.rb similarity index 92% rename from lib/convertkit/configuration.rb rename to lib/convertkit_v4/configuration.rb index 74cc7a1..74cdfee 100644 --- a/lib/convertkit/configuration.rb +++ b/lib/convertkit_v4/configuration.rb @@ -1,4 +1,4 @@ -module Convertkit +module ConvertkitV4 class Configuration attr_accessor :client_id, :client_secret, :redirect_uri, :access_token, :refresh_token attr_accessor :timeout, :open_timeout diff --git a/lib/convertkit/connection.rb b/lib/convertkit_v4/connection.rb similarity index 88% rename from lib/convertkit/connection.rb rename to lib/convertkit_v4/connection.rb index a8959ea..1ef4678 100644 --- a/lib/convertkit/connection.rb +++ b/lib/convertkit_v4/connection.rb @@ -1,13 +1,14 @@ -require "convertkit/errors" +require "convertkit_v4/errors" require "faraday" require "faraday_middleware" require "json" -module Convertkit +module ConvertkitV4 class Connection attr_reader :http_connection API_URL = "https://api.convertkit.com/" + API_VERSION_PATH = "v4/" def initialize(access_token: nil) @http_connection = faraday_connection(access_token) @@ -37,11 +38,11 @@ def delete(*args, &blk) def faraday_connection(access_token) Faraday.new do |f| - f.url_prefix = "#{API_URL}" + f.url_prefix = "#{API_URL}#{API_VERSION_PATH}" f.adapter :net_http - f.options.timeout = Convertkit.configuration.timeout - f.options.open_timeout = Convertkit.configuration.open_timeout + f.options.timeout = ConvertkitV4.configuration.timeout + f.options.open_timeout = ConvertkitV4.configuration.open_timeout f.headers['Content-Type'] = content_type f.headers['Accept'] = "*/*" diff --git a/lib/convertkit/errors.rb b/lib/convertkit_v4/errors.rb similarity index 94% rename from lib/convertkit/errors.rb rename to lib/convertkit_v4/errors.rb index cba509a..b73e83c 100644 --- a/lib/convertkit/errors.rb +++ b/lib/convertkit_v4/errors.rb @@ -1,4 +1,4 @@ -module Convertkit +module ConvertkitV4 class Error < StandardError; end class AuthorizationError < Error; end diff --git a/lib/convertkit_v4/version.rb b/lib/convertkit_v4/version.rb new file mode 100644 index 0000000..e8017ed --- /dev/null +++ b/lib/convertkit_v4/version.rb @@ -0,0 +1,3 @@ +module ConvertkitV4 + VERSION = "1.0.19" +end diff --git a/spec/convertkit/convertkit_spec.rb b/spec/convertkit/convertkit_spec.rb deleted file mode 100644 index 39c144e..0000000 --- a/spec/convertkit/convertkit_spec.rb +++ /dev/null @@ -1,41 +0,0 @@ -require "spec_helper" - -describe Convertkit do - it 'has a version number' do - expect(Convertkit::VERSION).not_to be nil - end - - describe "#configure" do - before do - @old_configuration = Convertkit.configuration.dup - end - - after do - Convertkit.configuration = @old_configuration - end - - it "sets the client_id value" do - Convertkit.configure do |config| - config.client_id = "new_client_id" - end - - expect(Convertkit.configuration.client_id).to eql("new_client_id") - end - - it "sets the timeout value" do - Convertkit.configure do |config| - config.timeout = 10 - end - - expect(Convertkit.configuration.timeout).to eql(10) - end - - it "sets the open_timeout value" do - Convertkit.configure do |config| - config.open_timeout = 10 - end - - expect(Convertkit.configuration.open_timeout).to eql(10) - end - end -end diff --git a/spec/convertkit/client/account_spec.rb b/spec/convertkit_v4/client/account_spec.rb similarity index 85% rename from spec/convertkit/client/account_spec.rb rename to spec/convertkit_v4/client/account_spec.rb index d455d8b..2ab6d5c 100644 --- a/spec/convertkit/client/account_spec.rb +++ b/spec/convertkit_v4/client/account_spec.rb @@ -1,10 +1,10 @@ require "spec_helper" -module Convertkit +module ConvertkitV4 class Client describe Account do before do - @client = Convertkit::Client.new + @client = ConvertkitV4::Client.new end describe "#account" do diff --git a/spec/convertkit/client/broadcasts_spec.rb b/spec/convertkit_v4/client/broadcasts_spec.rb similarity index 91% rename from spec/convertkit/client/broadcasts_spec.rb rename to spec/convertkit_v4/client/broadcasts_spec.rb index ddaca8b..94fed14 100644 --- a/spec/convertkit/client/broadcasts_spec.rb +++ b/spec/convertkit_v4/client/broadcasts_spec.rb @@ -1,16 +1,16 @@ require "spec_helper" require "securerandom" -module Convertkit +module ConvertkitV4 class Client describe Broadcasts do before do - Convertkit.configure do |config| + ConvertkitV4.configure do |config| config.api_secret = ENV["API_SECRET"] config.api_key = ENV["API_KEY"] end - @client = Convertkit::Client.new + @client = ConvertkitV4::Client.new end describe "#broadcasts" do diff --git a/spec/convertkit/client/custom_fields_spec.rb b/spec/convertkit_v4/client/custom_fields_spec.rb similarity index 95% rename from spec/convertkit/client/custom_fields_spec.rb rename to spec/convertkit_v4/client/custom_fields_spec.rb index 6737e1e..3305e01 100644 --- a/spec/convertkit/client/custom_fields_spec.rb +++ b/spec/convertkit_v4/client/custom_fields_spec.rb @@ -1,10 +1,10 @@ require "spec_helper" -module Convertkit +module ConvertkitV4 class Client describe CustomFields do before do - @client = Convertkit::Client.new + @client = ConvertkitV4::Client.new end describe "#custom_fields" do diff --git a/spec/convertkit/client/forms_spec.rb b/spec/convertkit_v4/client/forms_spec.rb similarity index 91% rename from spec/convertkit/client/forms_spec.rb rename to spec/convertkit_v4/client/forms_spec.rb index 7ec1a56..9d3fa1e 100644 --- a/spec/convertkit/client/forms_spec.rb +++ b/spec/convertkit_v4/client/forms_spec.rb @@ -1,10 +1,10 @@ require "spec_helper" -module Convertkit +module ConvertkitV4 class Client describe Forms do before do - @client = Convertkit::Client.new + @client = ConvertkitV4::Client.new end describe "#forms" do diff --git a/spec/convertkit/client/sequences_spec.rb b/spec/convertkit_v4/client/sequences_spec.rb similarity index 90% rename from spec/convertkit/client/sequences_spec.rb rename to spec/convertkit_v4/client/sequences_spec.rb index 5f01b97..5c515c0 100644 --- a/spec/convertkit/client/sequences_spec.rb +++ b/spec/convertkit_v4/client/sequences_spec.rb @@ -1,15 +1,15 @@ require "spec_helper" -module Convertkit +module ConvertkitV4 class Client describe Sequences do before do - Convertkit.configure do |config| + ConvertkitV4.configure do |config| config.api_secret = ENV["API_SECRET"] config.api_key = ENV["API_KEY"] end - @client = Convertkit::Client.new + @client = ConvertkitV4::Client.new end describe "#sequences" do diff --git a/spec/convertkit/client/subscribers_spec.rb b/spec/convertkit_v4/client/subscribers_spec.rb similarity index 96% rename from spec/convertkit/client/subscribers_spec.rb rename to spec/convertkit_v4/client/subscribers_spec.rb index 5657cea..cb12048 100644 --- a/spec/convertkit/client/subscribers_spec.rb +++ b/spec/convertkit_v4/client/subscribers_spec.rb @@ -1,16 +1,16 @@ require "spec_helper" require "securerandom" -module Convertkit +module ConvertkitV4 class Client describe Subscribers do before do - Convertkit.configure do |config| + ConvertkitV4.configure do |config| config.api_secret = ENV["API_SECRET"] config.api_key = ENV["API_KEY"] end - @client = Convertkit::Client.new + @client = ConvertkitV4::Client.new end describe "#subscribers" do diff --git a/spec/convertkit/client/tags_spec.rb b/spec/convertkit_v4/client/tags_spec.rb similarity index 95% rename from spec/convertkit/client/tags_spec.rb rename to spec/convertkit_v4/client/tags_spec.rb index 875d7ea..5ca9d6d 100644 --- a/spec/convertkit/client/tags_spec.rb +++ b/spec/convertkit_v4/client/tags_spec.rb @@ -1,16 +1,16 @@ require "spec_helper" require "securerandom" -module Convertkit +module ConvertkitV4 class Client describe Tags do before do - Convertkit.configure do |config| + ConvertkitV4.configure do |config| config.api_secret = ENV["API_SECRET"] config.api_key = ENV["API_KEY"] end - @client = Convertkit::Client.new + @client = ConvertkitV4::Client.new end describe "#tags" do @@ -36,7 +36,7 @@ class Client 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"}) @@ -47,7 +47,7 @@ class Client 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"}) diff --git a/spec/convertkit/client/webhook_spec.rb b/spec/convertkit_v4/client/webhook_spec.rb similarity index 91% rename from spec/convertkit/client/webhook_spec.rb rename to spec/convertkit_v4/client/webhook_spec.rb index 8715b08..45be9a7 100644 --- a/spec/convertkit/client/webhook_spec.rb +++ b/spec/convertkit_v4/client/webhook_spec.rb @@ -1,16 +1,16 @@ require "spec_helper" require "securerandom" -module Convertkit +module ConvertkitV4 class Client describe Webhooks do before do - Convertkit.configure do |config| + ConvertkitV4.configure do |config| config.api_secret = ENV["API_SECRET"] config.api_key = ENV["API_KEY"] end - @client = Convertkit::Client.new + @client = ConvertkitV4::Client.new @url = "https://webhook.site/2bc3b03e-0f34-4a00-b2a9-028eff304f50" @events = {"name": "subscriber.subscriber_activate"} @rule_id = 1175937 diff --git a/spec/convertkit/client_spec.rb b/spec/convertkit_v4/client_spec.rb similarity index 89% rename from spec/convertkit/client_spec.rb rename to spec/convertkit_v4/client_spec.rb index 0a3e690..05eaabc 100644 --- a/spec/convertkit/client_spec.rb +++ b/spec/convertkit_v4/client_spec.rb @@ -1,10 +1,10 @@ require "spec_helper" require "base64" -module Convertkit +module ConvertkitV4 describe Client do before :each do - @client = Convertkit::Client.new + @client = ConvertkitV4::Client.new end describe "#initialize" do diff --git a/spec/convertkit/connection_spec.rb b/spec/convertkit_v4/connection_spec.rb similarity index 98% rename from spec/convertkit/connection_spec.rb rename to spec/convertkit_v4/connection_spec.rb index 8ce371a..0c2a899 100644 --- a/spec/convertkit/connection_spec.rb +++ b/spec/convertkit_v4/connection_spec.rb @@ -1,6 +1,6 @@ require "spec_helper" -module Convertkit +module ConvertkitV4 describe Connection do describe "#initialize" do it "uses access_token" do diff --git a/spec/convertkit_v4/convertkit_v4_spec.rb b/spec/convertkit_v4/convertkit_v4_spec.rb new file mode 100644 index 0000000..b04c5a6 --- /dev/null +++ b/spec/convertkit_v4/convertkit_v4_spec.rb @@ -0,0 +1,41 @@ +require "spec_helper" + +describe ConvertkitV4 do + it 'has a version number' do + expect(ConvertkitV4::VERSION).not_to be nil + end + + describe "#configure" do + before do + @old_configuration = ConvertkitV4.configuration.dup + end + + after do + ConvertkitV4.configuration = @old_configuration + end + + it "sets the client_id value" do + ConvertkitV4.configure do |config| + config.client_id = "new_client_id" + end + + expect(ConvertkitV4.configuration.client_id).to eql("new_client_id") + end + + it "sets the timeout value" do + ConvertkitV4.configure do |config| + config.timeout = 10 + end + + expect(ConvertkitV4.configuration.timeout).to eql(10) + end + + it "sets the open_timeout value" do + ConvertkitV4.configure do |config| + config.open_timeout = 10 + end + + expect(ConvertkitV4.configuration.open_timeout).to eql(10) + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 5c68ed7..da97bce 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,12 +1,12 @@ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__) -require 'convertkit' +require 'convertkit_v4' require "dotenv" Dotenv.load(".env.local") require 'webmock/rspec' require 'vcr' -Convertkit.configure do |config| +ConvertkitV4.configure do |config| config.access_token = ENV["CONVERTKIT_ACCESS_TOKEN"] end From 461ad386d5e5e43d3f2370cf847474014596ebc6 Mon Sep 17 00:00:00 2001 From: Petar Date: Thu, 6 Jun 2024 11:11:52 +0200 Subject: [PATCH 13/17] Add delete webhooks endpoint --- lib/convertkit_v4/client/webhooks.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/convertkit_v4/client/webhooks.rb b/lib/convertkit_v4/client/webhooks.rb index 4cd8a6c..9dbcf84 100644 --- a/lib/convertkit_v4/client/webhooks.rb +++ b/lib/convertkit_v4/client/webhooks.rb @@ -16,6 +16,10 @@ def create_webhook(url, event) response.body["webhook"] end + def remove_webhook(id) + connection.delete("webhooks/#{id}") + end + end end end From e6b8fec603eb509f4c09daaaaa1e98d7c22789ed Mon Sep 17 00:00:00 2001 From: Petar Date: Thu, 6 Jun 2024 11:13:02 +0200 Subject: [PATCH 14/17] Bump version --- lib/convertkit_v4/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/convertkit_v4/version.rb b/lib/convertkit_v4/version.rb index e8017ed..b0b0ec9 100644 --- a/lib/convertkit_v4/version.rb +++ b/lib/convertkit_v4/version.rb @@ -1,3 +1,3 @@ module ConvertkitV4 - VERSION = "1.0.19" + VERSION = "1.0.20" end From bf2851b772cd4ea3e493f4e86c36b664ff2feb76 Mon Sep 17 00:00:00 2001 From: Manuel Frigerio Date: Sat, 2 Aug 2025 21:36:31 +0200 Subject: [PATCH 15/17] version bump --- lib/convertkit_v4/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/convertkit_v4/version.rb b/lib/convertkit_v4/version.rb index b0b0ec9..1be819e 100644 --- a/lib/convertkit_v4/version.rb +++ b/lib/convertkit_v4/version.rb @@ -1,3 +1,3 @@ module ConvertkitV4 - VERSION = "1.0.20" + VERSION = "1.1.0" end From 4779b90782664781bf52cac936dd721a465b92ed Mon Sep 17 00:00:00 2001 From: Manuel Frigerio Date: Sat, 2 Aug 2025 21:36:36 +0200 Subject: [PATCH 16/17] endpoint --- lib/convertkit_v4/client/subscribers.rb | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lib/convertkit_v4/client/subscribers.rb b/lib/convertkit_v4/client/subscribers.rb index f22326a..2ed1159 100644 --- a/lib/convertkit_v4/client/subscribers.rb +++ b/lib/convertkit_v4/client/subscribers.rb @@ -43,6 +43,29 @@ def unsubscribe(subscriber_id) def subscriber_tags(subscriber_id) connection.get("subscribers/#{subscriber_id}/tags").body["tags"] end + + # returns an hash with the following keys: + # { + # "subscriber": { + # "id": 3436990966, + # "stats": { + # "sent": 2, + # "opened": 2, + # "clicked": 2, + # "bounced": 0, + # "open_rate": 1, + # "click_rate": 1, + # "last_sent": "2025-06-25 16:44:37.000", + # "last_opened": "2025-06-25 16:45:36.000", + # "last_clicked": "2025-06-25 16:45:42.000", + # "sent_since_last_open": 0, + # "sent_since_last_click": 0 + # } + # } + # } + def subscriber_stats(subscriber_id) + connection.get("subscribers/#{subscriber_id}/stats").body["subscriber"] + end end end end From 71d819a5ca7f1ad95e0afc4995ed033d9ba178ae Mon Sep 17 00:00:00 2001 From: Manuel Frigerio Date: Sat, 2 Aug 2025 21:36:39 +0200 Subject: [PATCH 17/17] specs --- spec/convertkit_v4/client/subscribers_spec.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spec/convertkit_v4/client/subscribers_spec.rb b/spec/convertkit_v4/client/subscribers_spec.rb index cb12048..48c027d 100644 --- a/spec/convertkit_v4/client/subscribers_spec.rb +++ b/spec/convertkit_v4/client/subscribers_spec.rb @@ -81,6 +81,14 @@ class Client }.by(-1) end end + + describe "#subscriber_stats" do + it "returns the stats for a subscriber" do + subscriber_id = ENV['SUBSCRIBER_ID'] + r = @client.subscriber_stats(subscriber_id) + expect(r.success?).to be_truthy + end + end end end end