Sha256: fc7a05bc5b99654786d49d96b3f8c3b97e620a6703947f3f7e714cb9eae359da
Contents?: true
Size: 1.91 KB
Versions: 1
Compression:
Stored size: 1.91 KB
Contents
require 'faraday' require 'faraday_middleware' require 'json' require 'mailerlite/mash' require 'mailerlite/middleware/raise_error' require 'mailerlite/middleware/underscore_keys' require 'mailerlite/middleware/fix_unparsed_json' module MailerLite # A class responsible for connecting to MailerLite API and making requests. class Connection attr_reader :client def initialize(client) @client = client end def get(path, options = {}) request(:get, path, options).body end def put(path, options = {}) request(:put, path, {}, options).body end def post(path, options = {}) request(:post, path, {}, options).body end def delete(path, options = {}) request(:delete, path, options).body end private def request(method, path, query_params = {}, body_params = {}) response = connection.send(method) do |request| request.url(path, query_params) request.headers['Content-Type'] = 'application/json' if client.config.api_key request.headers['X-MailerLite-ApiKey'] = client.config.api_key end request.body = body_params.to_json end response end def connection conn_opts = { headers: { user_agent: client.config.user_agent }, url: client.config.url, builder: middleware } Faraday.new(conn_opts) end def middleware @middleware ||= Faraday::RackBuilder.new do |builder| builder.request :json builder.use FaradayMiddleware::FollowRedirects builder.use FaradayMiddleware::Mashify, mash_class: MailerLite::Mash builder.use MailerLite::Middleware::UnderscoreKeys builder.use FaradayMiddleware::ParseJson builder.use MailerLite::Middleware::FixUnparsedJson builder.use MailerLite::Middleware::RaiseError builder.adapter Faraday.default_adapter end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mailerlite-1.1.0 | lib/mailerlite/connection.rb |