From 125c17838ca32826a13b6e782918dce70f88d2d5 Mon Sep 17 00:00:00 2001 From: Ziyi Date: Wed, 17 Mar 2021 14:54:57 -0700 Subject: [PATCH] delete_lead WIP --- app/helpers/external/mailbluster_helper.rb | 23 ++++++++++++------- app/models/user.rb | 2 ++ .../external/mailbluster_helper_spec.rb | 13 +++++++---- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/app/helpers/external/mailbluster_helper.rb b/app/helpers/external/mailbluster_helper.rb index d9b4062c..e7fb1788 100644 --- a/app/helpers/external/mailbluster_helper.rb +++ b/app/helpers/external/mailbluster_helper.rb @@ -2,17 +2,17 @@ module External module MailblusterHelper - MAILBLUSTER_URL = 'https://api.mailbluster.com/api/leads' + MAILBLUSTER_URL = 'https://api.mailbluster.com/api/leads/' - def query_api; end + # def query_api(user, method) + # TODO? General helper for all queries + # end def create_lead(user) - # TODO - uri = URI(MAILBLUSTER_URL) http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Post.new(uri.path, - 'Authorization' => ENV['MAILBLUSTER_API_KEY']) # TODO: Authorization=APIKEY + 'Authorization' => ENV['MAILBLUSTER_API_KEY']) request.body = { 'email' => user.email, 'firstName' => user.name, @@ -21,8 +21,6 @@ module External 'tags' => ['snapcon'] }.to_json response = http.request(request) - # puts request.body.to_json - # puts response.body.to_json response.to_json rescue StandardError => e puts "ERROR #{e}" @@ -30,7 +28,16 @@ module External end def delete_lead(user) - # TODO + email_hash = Digest::MD5.hexdigest user.email + uri = URI(MAILBLUSTER_URL + email_hash) + http = Net::HTTP.new(uri.host, uri.port) + request = Net::HTTP::Delete.new(uri.path, + 'Authorization' => ENV['MAILBLUSTER_API_KEY']) + response = http.request(request) + response.to_json + rescue StandardError => e + puts "ERROR #{e}" + nil end end end diff --git a/app/models/user.rb b/app/models/user.rb index 955c76d1..01ddf925 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -361,6 +361,8 @@ class User < ApplicationRecord User.count == 1 && User.first.email == 'deleted@localhost.osem' end + # TODO email_hash function for mailbluster + private def setup_role diff --git a/spec/helpers/external/mailbluster_helper_spec.rb b/spec/helpers/external/mailbluster_helper_spec.rb index 143d0834..6c3f1731 100644 --- a/spec/helpers/external/mailbluster_helper_spec.rb +++ b/spec/helpers/external/mailbluster_helper_spec.rb @@ -5,6 +5,7 @@ require 'webmock/rspec' describe External::MailblusterHelper, type: :helper do let!(:user) { create(:user) } + url = 'https://api.mailbluster.com/api/leads/' describe 'create_lead' do it 'makes a post request to Mailbluster\'s API and gets the correct response' do @@ -22,7 +23,7 @@ describe External::MailblusterHelper, type: :helper do ], } }" - stub_request(:post, 'https://api.mailbluster.com/api/leads') + stub_request(:post, url) .to_return(body: response_body, status: 200) response = create_lead(user) @@ -40,12 +41,16 @@ describe External::MailblusterHelper, type: :helper do describe 'delete_lead' do it 'correctly requests the right URL and gets a valid response' do email_hash = Digest::MD5.hexdigest user.email - response_body = "{\"message\":\"Lead deleted\",\"leadHash\":\"#{email_hash}\"}" - stub_request(:delete, "https://api.mailbluster.com/api/leads/#{email_hash}") + response_body = "{ + \"message\":\"Lead deleted\", + \"leadHash\":\"#{email_hash}\" + }" + lead_url = url + email_hash.to_s + stub_request(:delete, lead_url) .to_return(body: response_body) response = delete_lead(user) - expect(WebMock).to have_requested(:delete, "api.mailbluster.com/api/leads/#{email_hash}") + expect(WebMock).to have_requested(:delete, lead_url) expect(response).to eq(response_body) end end