engaging-networks-rest 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a3893669b39db25ea995ca69261faf534cfd5bc497928e1df6b5765d57315d1
4
- data.tar.gz: 7f1e50fbb1831eb1c03b3bdb19bfbd1ea0af6828f1db3d4c92831c83ebe5c5db
3
+ metadata.gz: 0d4c75c9409376d414dc63d78307aa86b764c036a93b007590137f85794c1980
4
+ data.tar.gz: 46e773a7635d878fe9115b66e1a7a395e0efd287ed1532c73b347c7e6e027cca
5
5
  SHA512:
6
- metadata.gz: 684c2ddccb8c0f2b2206e33a01cb34d37094c43af7beab6d69aee6731e10595f620b9d76d800f0e10ca68128961bec1bfaf0f0814375bc3a6c653d922e5ac5be
7
- data.tar.gz: 59f1ba47be552a66f24e931628945c26d147b716e87c7f280927a5ecf06e476d8d743c9bf3ced9eb2b3247724497e2a4c17592f1339c4056f9876678bef1ba47
6
+ metadata.gz: a4ae62b058d6ef1589226b0f82150da4cd45ef641f617dc967ff500b1529ba18137f098ee5e95054ed5ea0e4bdd0c42c868d5b37436960692df280a5939213e9
7
+ data.tar.gz: 6b2e2241bbc45fe002587341cfe792b826f403755d8c5b77efb226595c7e325cbb95745ee306a259e778fc4a54919ba87c9ce88e68c5dacd9ba8095fabe445a2
@@ -0,0 +1,35 @@
1
+ name: CI
2
+ on: [push]
3
+
4
+ jobs:
5
+ test:
6
+ runs-on: ubuntu-latest
7
+
8
+ strategy:
9
+ matrix:
10
+ ruby-version: ['2.7', '3.0', '3.1', '3.2']
11
+
12
+ steps:
13
+ - uses: actions/checkout@v2
14
+ - uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: ${{ matrix.ruby-version }}
17
+ bundler-cache: true
18
+ - run: bundle install
19
+ - run: bundle exec rspec
20
+
21
+ rubocop:
22
+ runs-on: ubuntu-latest
23
+
24
+ strategy:
25
+ matrix:
26
+ ruby-version: ['2.7', '3.0', '3.1', '3.2']
27
+
28
+ steps:
29
+ - uses: actions/checkout@v2
30
+ - uses: ruby/setup-ruby@v1
31
+ with:
32
+ ruby-version: ${{ matrix.ruby-version }}
33
+ bundler-cache: true
34
+ - run: bundle install
35
+ - run: bundle exec rubocop
data/.rubocop.yml ADDED
@@ -0,0 +1,14 @@
1
+ AllCops:
2
+ Exclude:
3
+ - 'engaging-networks-rest.gemspec'
4
+ - 'example.rb'
5
+ - 'vendor/**/*'
6
+
7
+ Metrics/BlockLength:
8
+ Enabled: false
9
+ Metrics/MethodLength:
10
+ Enabled: false
11
+ Style/Documentation:
12
+ Enabled: false
13
+ Style/GuardClause:
14
+ Enabled: false
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.6
1
+ 2.7.4
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ ## [0.7.0] - 2023-10-16
2
+
3
+ ### Added
4
+ - Adds support for passing a `host` parameter to EngagingNetworksRest.new and EngagingNetworksRest::Client.new
5
+ - Ruby versions 3.0, 3.1, and 3.2 are officially supported in addition to ruby 2.7
data/Gemfile CHANGED
@@ -1,13 +1,18 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
2
4
 
3
5
  gem 'faraday', '>= 1.0'
4
6
  gem 'faraday_middleware'
5
7
 
6
8
  group :development do
7
- gem 'rspec', '>= 0'
8
- gem 'juwelier', git: 'https://github.com/flajann2/juwelier.git'
9
- gem 'webmock', '> 3.4'
10
9
  gem 'faker', '> 1.9'
11
- gem 'pry-byebug', '> 3.6'
10
+ gem 'psych', '3.3.2' # See https://github.com/faker-ruby/faker/issues/2330
11
+
12
12
  gem 'faraday-detailed_logger', '>= 2.1.2'
13
+ gem 'juwelier', git: 'https://github.com/flajann2/juwelier.git'
14
+ gem 'pry-byebug', '> 3.6'
15
+ gem 'rspec', '>= 0'
16
+ gem 'rubocop'
17
+ gem 'webmock', '> 3.4'
13
18
  end
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2018 Jacinda Moore
1
+ Copyright (c) 2018 ControlShift Labs
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # engaging-networks-rest
2
2
  Client gem for the ENS API to Engaging Networks
3
3
 
4
+ [![CI Status](https://github.com/controlshift/engaging-networks-rest/actions/workflows/ci.yml/badge.svg)](https://github.com/controlshift/engaging-networks-rest/actions/workflows/ci.yml)
5
+
4
6
  ## Install
5
7
 
6
8
  `gem install engaging-networks-rest`
@@ -8,7 +10,7 @@ Client gem for the ENS API to Engaging Networks
8
10
  ## Usage
9
11
 
10
12
  ```
11
- client = EngagingNetworksRest.new(api_key: 'YOUR API KEY HERE')
13
+ client = EngagingNetworksRest.new(api_key: 'YOUR API KEY HERE', host: 'us.engagingnetworks.app')
12
14
 
13
15
  # get pages by type
14
16
  pages = client.pages(type: 'dcf', status: 'live')
data/Rakefile CHANGED
@@ -1,12 +1,12 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  require 'rubygems'
4
4
  require 'bundler'
5
5
  begin
6
6
  Bundler.setup(:default, :development)
7
7
  rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
8
+ warn e.message
9
+ warn 'Run `bundle install` to install missing gems'
10
10
  exit e.status_code
11
11
  end
12
12
  require 'rake'
@@ -14,37 +14,37 @@ require 'rake'
14
14
  require 'juwelier'
15
15
  Juwelier::Tasks.new do |gem|
16
16
  # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
17
- gem.name = "engaging-networks-rest"
18
- gem.homepage = "http://github.com/controlshift/engaging-networks-rest"
19
- gem.license = "MIT"
20
- gem.summary = %Q{Client gem for the ENS API to Engaging Networks}
21
- gem.description = %Q{Client gem for the ENS API to Engaging Networks}
22
- gem.email = "jacinda@controlshiftlabs.com"
23
- gem.authors = ["Jacinda Moore"]
17
+ gem.name = 'engaging-networks-rest'
18
+ gem.homepage = 'http://github.com/controlshift/engaging-networks-rest'
19
+ gem.license = 'MIT'
20
+ gem.summary = %(Client gem for the ENS API to Engaging Networks)
21
+ gem.description = %(Client gem for the ENS API to Engaging Networks)
22
+ gem.email = 'grey@controlshiftlabs.com'
23
+ gem.authors = ['Grey Moore']
24
24
 
25
25
  # dependencies defined in Gemfile
26
26
  end
27
27
  Juwelier::RubygemsDotOrgTasks.new
28
28
 
29
29
  require 'rspec/core/rake_task'
30
- desc "Run specs"
30
+ desc 'Run specs'
31
31
  RSpec::Core::RakeTask.new do |t|
32
- t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
32
+ t.pattern = './spec/**/*_spec.rb' # don't need this, it's default.
33
33
  t.rspec_opts = '--color'
34
34
  end
35
35
 
36
- desc "Code coverage detail"
36
+ desc 'Code coverage detail'
37
37
  task :simplecov do
38
- ENV['COVERAGE'] = "true"
38
+ ENV['COVERAGE'] = 'true'
39
39
  Rake::Task['test'].execute
40
40
  end
41
41
 
42
- desc 'Default: run specs.'
43
- task :default => :spec
42
+ desc 'Default: run specs'
43
+ task default: :spec
44
44
 
45
45
  require 'rdoc/task'
46
46
  Rake::RDocTask.new do |rdoc|
47
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
47
+ version = File.exist?('VERSION') ? File.read('VERSION') : ''
48
48
 
49
49
  rdoc.rdoc_dir = 'rdoc'
50
50
  rdoc.title = "engaging-networks-rest #{version}"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.7.0
@@ -2,26 +2,29 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: engaging-networks-rest 0.6.0 ruby lib
5
+ # stub: engaging-networks-rest 0.7.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "engaging-networks-rest".freeze
9
- s.version = "0.6.0"
9
+ s.version = "0.7.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
- s.authors = ["Jacinda Moore".freeze]
14
- s.date = "2021-03-23"
13
+ s.authors = ["Grey Moore".freeze]
14
+ s.date = "2023-10-16"
15
15
  s.description = "Client gem for the ENS API to Engaging Networks".freeze
16
- s.email = "jacinda@controlshiftlabs.com".freeze
16
+ s.email = "grey@controlshiftlabs.com".freeze
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE",
19
19
  "LICENSE.txt",
20
20
  "README.md"
21
21
  ]
22
22
  s.files = [
23
+ ".github/workflows/ci.yml",
24
+ ".rubocop.yml",
23
25
  ".ruby-gemset",
24
26
  ".ruby-version",
27
+ "CHANGELOG.md",
25
28
  "Gemfile",
26
29
  "LICENSE",
27
30
  "LICENSE.txt",
@@ -40,40 +43,35 @@ Gem::Specification.new do |s|
40
43
  ]
41
44
  s.homepage = "http://github.com/controlshift/engaging-networks-rest".freeze
42
45
  s.licenses = ["MIT".freeze]
43
- s.rubygems_version = "3.0.8".freeze
46
+ s.rubygems_version = "3.1.6".freeze
44
47
  s.summary = "Client gem for the ENS API to Engaging Networks".freeze
45
48
 
46
49
  if s.respond_to? :specification_version then
47
50
  s.specification_version = 4
51
+ end
48
52
 
49
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
- s.add_runtime_dependency(%q<faraday>.freeze, [">= 1.0"])
51
- s.add_runtime_dependency(%q<faraday_middleware>.freeze, [">= 0"])
52
- s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
53
- s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
54
- s.add_development_dependency(%q<webmock>.freeze, ["> 3.4"])
55
- s.add_development_dependency(%q<faker>.freeze, ["> 1.9"])
56
- s.add_development_dependency(%q<pry-byebug>.freeze, ["> 3.6"])
57
- s.add_development_dependency(%q<faraday-detailed_logger>.freeze, [">= 2.1.2"])
58
- else
59
- s.add_dependency(%q<faraday>.freeze, [">= 1.0"])
60
- s.add_dependency(%q<faraday_middleware>.freeze, [">= 0"])
61
- s.add_dependency(%q<rspec>.freeze, [">= 0"])
62
- s.add_dependency(%q<juwelier>.freeze, [">= 0"])
63
- s.add_dependency(%q<webmock>.freeze, ["> 3.4"])
64
- s.add_dependency(%q<faker>.freeze, ["> 1.9"])
65
- s.add_dependency(%q<pry-byebug>.freeze, ["> 3.6"])
66
- s.add_dependency(%q<faraday-detailed_logger>.freeze, [">= 2.1.2"])
67
- end
53
+ if s.respond_to? :add_runtime_dependency then
54
+ s.add_runtime_dependency(%q<faraday>.freeze, [">= 1.0"])
55
+ s.add_runtime_dependency(%q<faraday_middleware>.freeze, [">= 0"])
56
+ s.add_development_dependency(%q<faker>.freeze, ["> 1.9"])
57
+ s.add_development_dependency(%q<psych>.freeze, ["= 3.3.2"])
58
+ s.add_development_dependency(%q<faraday-detailed_logger>.freeze, [">= 2.1.2"])
59
+ s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
60
+ s.add_development_dependency(%q<pry-byebug>.freeze, ["> 3.6"])
61
+ s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
62
+ s.add_development_dependency(%q<rubocop>.freeze, [">= 0"])
63
+ s.add_development_dependency(%q<webmock>.freeze, ["> 3.4"])
68
64
  else
69
65
  s.add_dependency(%q<faraday>.freeze, [">= 1.0"])
70
66
  s.add_dependency(%q<faraday_middleware>.freeze, [">= 0"])
71
- s.add_dependency(%q<rspec>.freeze, [">= 0"])
72
- s.add_dependency(%q<juwelier>.freeze, [">= 0"])
73
- s.add_dependency(%q<webmock>.freeze, ["> 3.4"])
74
67
  s.add_dependency(%q<faker>.freeze, ["> 1.9"])
75
- s.add_dependency(%q<pry-byebug>.freeze, ["> 3.6"])
68
+ s.add_dependency(%q<psych>.freeze, ["= 3.3.2"])
76
69
  s.add_dependency(%q<faraday-detailed_logger>.freeze, [">= 2.1.2"])
70
+ s.add_dependency(%q<juwelier>.freeze, [">= 0"])
71
+ s.add_dependency(%q<pry-byebug>.freeze, ["> 3.6"])
72
+ s.add_dependency(%q<rspec>.freeze, [">= 0"])
73
+ s.add_dependency(%q<rubocop>.freeze, [">= 0"])
74
+ s.add_dependency(%q<webmock>.freeze, ["> 3.4"])
77
75
  end
78
76
  end
79
77
 
data/example.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  $LOAD_PATH << File.join(File.dirname(__FILE__), 'lib')
2
4
 
3
5
  require 'engaging_networks_rest'
@@ -7,16 +9,16 @@ require 'byebug'
7
9
  def instrument_connection_with_extended_logging(client)
8
10
  default_options = {
9
11
  headers: {
10
- 'Accept' => "application/json;q=0.1",
11
- 'Accept-Charset' => "utf-8"
12
+ 'Accept' => 'application/json;q=0.1',
13
+ 'Accept-Charset' => 'utf-8'
12
14
  }
13
15
  }
14
16
 
15
- faraday_builder = ->(faraday) do
17
+ faraday_builder = lambda do |faraday|
16
18
  faraday.request :json
17
- faraday.response :json, :content_type => /\bjson$/
19
+ faraday.response :json, content_type: /\bjson$/
18
20
  faraday.use Faraday::Response::Logger if ENV['DEBUG']
19
- faraday.use EngagingNetworksRest::Response::RaiseError
21
+ faraday.use EngagingNetworksRest::Response::RaiseError
20
22
  faraday.response :detailed_logger
21
23
  faraday.adapter Faraday.default_adapter
22
24
  end
@@ -33,4 +35,4 @@ instrument_connection_with_extended_logging(client)
33
35
 
34
36
  byebug
35
37
 
36
- puts "Bye!"
38
+ puts 'Bye!'
@@ -1,13 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module EngagingNetworksRest
2
4
  class Client
3
5
  module Pages
4
6
  def pages(type:, status: nil)
5
- filter_params = {'type' => type}
6
- unless status.nil?
7
- filter_params['status'] = status
8
- end
7
+ filter_params = { 'type' => type }
8
+ filter_params['status'] = status unless status.nil?
9
9
 
10
- get(path: "/ens/service/page", params: filter_params)
10
+ get(path: '/ens/service/page', params: filter_params)
11
11
  end
12
12
 
13
13
  def page(page_id:)
@@ -15,10 +15,9 @@ module EngagingNetworksRest
15
15
  end
16
16
 
17
17
  def process_page_request(page_id:, supporter_data:, generic_data: {})
18
- response = post(path: "/ens/service/page/#{page_id}/process", body: generic_data.merge(supporter: supporter_data))
19
- if response['status'] == 'SUCCESS'
20
- return response
21
- end
18
+ response = post(path: "/ens/service/page/#{page_id}/process",
19
+ body: generic_data.merge(supporter: supporter_data))
20
+ return response if response['status'] == 'SUCCESS'
22
21
 
23
22
  raise "Unexpected 'status' value on response: #{response}"
24
23
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'faraday'
2
4
  require 'faraday_middleware'
3
5
  require 'engaging_networks_rest/client/pages'
@@ -7,14 +9,14 @@ module EngagingNetworksRest
7
9
  class Client
8
10
  attr_reader :api_key, :connection, :ens_auth_key
9
11
 
10
- ENS_DOMAIN = 'www.e-activist.com'.freeze
12
+ ENS_DOMAIN = 'www.e-activist.com'
11
13
 
12
- def initialize(api_key:)
14
+ def initialize(api_key:, host: ENS_DOMAIN)
13
15
  @api_key = api_key
14
16
 
15
- @connection = Faraday.new(url: "https://#{ENS_DOMAIN}") do |conn|
17
+ @connection = Faraday.new(url: "https://#{host}") do |conn|
16
18
  conn.request :json
17
- conn.response :json, :content_type => /\bjson$/
19
+ conn.response :json, content_type: /\bjson$/
18
20
 
19
21
  conn.use Faraday::Response::Logger if ENV['DEBUG']
20
22
  conn.use EngagingNetworksRest::Response::RaiseError
@@ -50,9 +52,7 @@ module EngagingNetworksRest
50
52
  private
51
53
 
52
54
  def request(method:, path:, params: {}, body: {})
53
- unless authenticated?
54
- authenticate!
55
- end
55
+ authenticate! unless authenticated?
56
56
 
57
57
  response = connection.send(method) do |req|
58
58
  req.headers['Content-Type'] = 'application/json'
@@ -1,7 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module EngagingNetworksRest
2
4
  module Response
3
- class NotFound < StandardError ; end
4
- class Unauthorized < StandardError ; end
5
+ class NotFound < StandardError; end
6
+
7
+ class Unauthorized < StandardError; end
8
+
5
9
  class InternalError < StandardError; end
6
10
 
7
11
  class RaiseError < Faraday::Response::Middleware
@@ -10,19 +14,19 @@ module EngagingNetworksRest
10
14
  if (400...600).include? status_code
11
15
  case status_code
12
16
  when 401
13
- raise Unauthorized.new(error_message(response))
17
+ raise Unauthorized, error_message(response)
14
18
  when 404
15
- raise NotFound.new(error_message(response))
19
+ raise NotFound, error_message(response)
16
20
  when 500
17
- raise InternalError.new(error_message(response))
21
+ raise InternalError, error_message(response)
18
22
  else
19
- raise StandardError.new(error_message(response))
23
+ raise StandardError, error_message(response)
20
24
  end
21
25
  end
22
26
  end
23
27
 
24
28
  def error_message(response)
25
- "#{response[:method].to_s.upcase} #{response[:url].to_s}: #{response[:status]} \n\n #{response[:body] if response[:body]}"
29
+ "#{response[:method].to_s.upcase} #{response[:url]}: #{response[:status]} \n\n #{response[:body]}"
26
30
  end
27
31
  end
28
32
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'engaging_networks_rest/client'
2
4
 
3
5
  module EngagingNetworksRest
4
6
  class << self
5
- def new(api_key:)
6
- EngagingNetworksRest::Client.new(api_key: api_key)
7
+ def new(api_key:, host: EngagingNetworksRest::Client::ENS_DOMAIN)
8
+ EngagingNetworksRest::Client.new(api_key: api_key, host: host)
7
9
  end
8
10
  end
9
11
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe EngagingNetworksRest::Client::Pages do
4
6
  let(:api_key) { 'abc-123' }
5
7
  let(:ens_auth_key) { 'tmp-auth-key-456' }
6
- let(:standard_headers) { {'Content-Type' => 'application/json', 'Ens-Auth-Token' => ens_auth_key} }
8
+ let(:standard_headers) { { 'Content-Type' => 'application/json', 'Ens-Auth-Token' => ens_auth_key } }
7
9
 
8
10
  subject { EngagingNetworksRest::Client.new(api_key: api_key) }
9
11
 
@@ -14,19 +16,25 @@ describe EngagingNetworksRest::Client::Pages do
14
16
 
15
17
  # The API docs don't actually say what this response looks like, so this is a guess.
16
18
  # Fortunately, it doesn't actually matter for our purposes, since we just return whatever JSON we get.
17
- let(:response) { [{'id' => 123, 'title' => 'A page'}, {'id' => 234, 'title' => 'Another page'}] }
19
+ let(:response) { [{ 'id' => 123, 'title' => 'A page' }, { 'id' => 234, 'title' => 'Another page' }] }
18
20
 
19
21
  shared_examples_for 'list pages' do
20
22
  it 'should get pages' do
21
- stub_request(:get, pages_url).with(headers: standard_headers, query: {'type' => page_type, 'status' => page_status})
22
- .to_return(status: '200', headers: {content_type: "application/json; charset=utf-8"}, body: response.to_json)
23
+ stub_request(:get, pages_url)
24
+ .with(headers: standard_headers, query: { 'type' => page_type, 'status' => page_status })
25
+ .to_return(status: '200',
26
+ headers: { content_type: 'application/json; charset=utf-8' },
27
+ body: response.to_json)
23
28
 
24
29
  expect(subject.pages(type: page_type, status: page_status)).to eq response
25
30
  end
26
31
 
27
32
  it 'should omit status param if not specified' do
28
- stub_request(:get, pages_url).with(headers: standard_headers, query: {'type' => page_type})
29
- .to_return(status: '200', headers: {content_type: "application/json; charset=utf-8"}, body: response.to_json)
33
+ stub_request(:get, pages_url)
34
+ .with(headers: standard_headers, query: { 'type' => page_type })
35
+ .to_return(status: '200',
36
+ headers: { content_type: 'application/json; charset=utf-8' },
37
+ body: response.to_json)
30
38
 
31
39
  expect(subject.pages(type: page_type)).to eq response
32
40
  end
@@ -55,22 +63,37 @@ describe EngagingNetworksRest::Client::Pages do
55
63
  let(:page_id) { 234 }
56
64
  let(:page_req_url) { "https://#{EngagingNetworksRest::Client::ENS_DOMAIN}/ens/service/page/#{page_id}/process" }
57
65
  let(:email) { Faker::Internet.email }
58
- let(:supporter_hash) { {'firstName' => 'Joe', 'lastName' => 'Smith', 'emailAddress' => email, 'customField1' => 'foo'} }
59
- let(:response) { {'id' => '1234567', 'status' => 'SUCCESS', 'supporterEmailAddress' => email, 'supporterId' => '98765'} }
60
- let(:failure_response) { {'status' => 'ERROR', 'message' => 'Something went wrong'} }
66
+ let(:supporter_hash) do
67
+ { 'firstName' => 'Joe', 'lastName' => 'Smith', 'emailAddress' => email, 'customField1' => 'foo' }
68
+ end
69
+ let(:response) do
70
+ { 'id' => '1234567', 'status' => 'SUCCESS', 'supporterEmailAddress' => email, 'supporterId' => '98765' }
71
+ end
72
+ let(:failure_response) { { 'status' => 'ERROR', 'message' => 'Something went wrong' } }
61
73
 
62
74
  shared_examples_for 'process page request' do
63
75
  it 'should send correct body for supporter and generic data' do
64
76
  stub_request(:post, page_req_url)
65
- .with(body: {'txn1' => 'foo', 'txn2' => 'bar', 'suppressAutoResponder' => true, supporter: { 'lastName' => 'Smith', 'emailAddress' => email }}.to_json, headers: standard_headers)
66
- .to_return(status: '200', headers: {content_type: "application/json; charset=utf-8"}, body: response.to_json)
67
-
68
- result = subject.process_page_request(page_id: page_id, generic_data: { 'txn1' => 'foo', 'txn2' => 'bar', 'suppressAutoResponder' => true }, supporter_data: { 'lastName' => 'Smith', 'emailAddress' => email })
77
+ .with(body: { 'txn1' => 'foo', 'txn2' => 'bar', 'suppressAutoResponder' => true,
78
+ supporter: { 'lastName' => 'Smith', 'emailAddress' => email } }.to_json,
79
+ headers: standard_headers)
80
+ .to_return(status: '200',
81
+ headers: { content_type: 'application/json; charset=utf-8' },
82
+ body: response.to_json)
83
+
84
+ subject.process_page_request(page_id: page_id,
85
+ generic_data: { 'txn1' => 'foo',
86
+ 'txn2' => 'bar',
87
+ 'suppressAutoResponder' => true },
88
+ supporter_data: { 'lastName' => 'Smith', 'emailAddress' => email })
69
89
  end
70
90
 
71
91
  it 'should process the page request and return its ID' do
72
- stub_request(:post, page_req_url).with(body: {supporter: supporter_hash}.to_json, headers: standard_headers)
73
- .to_return(status: '200', headers: {content_type: "application/json; charset=utf-8"}, body: response.to_json)
92
+ stub_request(:post, page_req_url)
93
+ .with(body: { supporter: supporter_hash }.to_json, headers: standard_headers)
94
+ .to_return(status: '200',
95
+ headers: { content_type: 'application/json; charset=utf-8' },
96
+ body: response.to_json)
74
97
 
75
98
  result = subject.process_page_request(page_id: page_id, supporter_data: supporter_hash)
76
99
 
@@ -80,10 +103,16 @@ describe EngagingNetworksRest::Client::Pages do
80
103
  end
81
104
 
82
105
  it 'should raise if response status is not SUCCESS' do
83
- stub_request(:post, page_req_url).with(body: {supporter: supporter_hash}.to_json, headers: standard_headers)
84
- .to_return(status: '200', headers: {content_type: "application/json; charset=utf-8"}, body: failure_response.to_json)
85
-
86
- expect { subject.process_page_request(page_id: page_id, supporter_data: supporter_hash) }.to raise_error(RuntimeError, /Unexpected 'status' value on response.*Something went wrong/)
106
+ stub_request(:post, page_req_url)
107
+ .with(body: { supporter: supporter_hash }.to_json, headers: standard_headers)
108
+ .to_return(status: '200',
109
+ headers: { content_type: 'application/json; charset=utf-8' },
110
+ body: failure_response.to_json)
111
+
112
+ expect do
113
+ subject.process_page_request(page_id: page_id,
114
+ supporter_data: supporter_hash)
115
+ end.to raise_error(RuntimeError, /Unexpected 'status' value on response.*Something went wrong/)
87
116
  end
88
117
  end
89
118
 
data/spec/client_spec.rb CHANGED
@@ -1,24 +1,44 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe EngagingNetworksRest::Client do
4
6
  let(:api_key) { 'abc123' }
5
- let(:content_type_header) { {'Content-Type' => 'application/json'} }
7
+ let(:content_type_header) { { 'Content-Type' => 'application/json' } }
6
8
 
7
9
  subject { EngagingNetworksRest::Client.new(api_key: api_key) }
8
10
 
9
11
  describe '#authenticate!' do
10
- let(:auth_url) { "https://#{EngagingNetworksRest::Client::ENS_DOMAIN}/ens/service/authenticate" }
11
12
  let(:auth_key) { '75491e42-99dc-45ce-b637-a681bede875c' }
12
13
  let(:auth_key_body) { "{\"ens-auth-token\":\"#{auth_key}\",\"expires\":3600000}" }
13
14
 
14
15
  before :each do
15
- stub_request(:post, auth_url).with(body: api_key, headers: content_type_header).to_return(body: auth_key_body, headers: content_type_header)
16
+ stub_request(:post, auth_url)
17
+ .with(body: api_key, headers: content_type_header)
18
+ .to_return(body: auth_key_body, headers: content_type_header)
16
19
  end
17
20
 
18
- it 'should set the ens_auth_key on the client' do
19
- subject.authenticate!
21
+ context 'with no host specified' do
22
+ let(:auth_url) { "https://#{EngagingNetworksRest::Client::ENS_DOMAIN}/ens/service/authenticate" }
23
+
24
+ it 'should set the ens_auth_key on the client' do
25
+ subject.authenticate!
26
+
27
+ expect(subject.ens_auth_key).to eq auth_key
28
+ end
29
+ end
30
+
31
+ context 'with a host specified' do
32
+ let(:host) { 'example.com' }
33
+ let(:auth_url) { "https://#{host}/ens/service/authenticate" }
34
+
35
+ subject { EngagingNetworksRest::Client.new(api_key: api_key, host: host) }
36
+
37
+ it 'should set the ens_auth_key on the client' do
38
+ subject.authenticate!
20
39
 
21
- expect(subject.ens_auth_key).to eq auth_key
40
+ expect(subject.ens_auth_key).to eq auth_key
41
+ end
22
42
  end
23
43
  end
24
44
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rspec'
2
4
  require 'webmock/rspec'
3
5
  require 'faker'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engaging-networks-rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
- - Jacinda Moore
8
- autorequire:
7
+ - Grey Moore
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-23 00:00:00.000000000 Z
11
+ date: 2023-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -39,19 +39,47 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: faker
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.9'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.9'
55
+ - !ruby/object:Gem::Dependency
56
+ name: psych
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 3.3.2
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 3.3.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: faraday-detailed_logger
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
73
  - - ">="
46
74
  - !ruby/object:Gem::Version
47
- version: '0'
75
+ version: 2.1.2
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
80
  - - ">="
53
81
  - !ruby/object:Gem::Version
54
- version: '0'
82
+ version: 2.1.2
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: juwelier
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -67,63 +95,63 @@ dependencies:
67
95
  - !ruby/object:Gem::Version
68
96
  version: '0'
69
97
  - !ruby/object:Gem::Dependency
70
- name: webmock
98
+ name: pry-byebug
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
101
  - - ">"
74
102
  - !ruby/object:Gem::Version
75
- version: '3.4'
103
+ version: '3.6'
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
108
  - - ">"
81
109
  - !ruby/object:Gem::Version
82
- version: '3.4'
110
+ version: '3.6'
83
111
  - !ruby/object:Gem::Dependency
84
- name: faker
112
+ name: rspec
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
- - - ">"
115
+ - - ">="
88
116
  - !ruby/object:Gem::Version
89
- version: '1.9'
117
+ version: '0'
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
- - - ">"
122
+ - - ">="
95
123
  - !ruby/object:Gem::Version
96
- version: '1.9'
124
+ version: '0'
97
125
  - !ruby/object:Gem::Dependency
98
- name: pry-byebug
126
+ name: rubocop
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
- - - ">"
129
+ - - ">="
102
130
  - !ruby/object:Gem::Version
103
- version: '3.6'
131
+ version: '0'
104
132
  type: :development
105
133
  prerelease: false
106
134
  version_requirements: !ruby/object:Gem::Requirement
107
135
  requirements:
108
- - - ">"
136
+ - - ">="
109
137
  - !ruby/object:Gem::Version
110
- version: '3.6'
138
+ version: '0'
111
139
  - !ruby/object:Gem::Dependency
112
- name: faraday-detailed_logger
140
+ name: webmock
113
141
  requirement: !ruby/object:Gem::Requirement
114
142
  requirements:
115
- - - ">="
143
+ - - ">"
116
144
  - !ruby/object:Gem::Version
117
- version: 2.1.2
145
+ version: '3.4'
118
146
  type: :development
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
149
  requirements:
122
- - - ">="
150
+ - - ">"
123
151
  - !ruby/object:Gem::Version
124
- version: 2.1.2
152
+ version: '3.4'
125
153
  description: Client gem for the ENS API to Engaging Networks
126
- email: jacinda@controlshiftlabs.com
154
+ email: grey@controlshiftlabs.com
127
155
  executables: []
128
156
  extensions: []
129
157
  extra_rdoc_files:
@@ -131,8 +159,11 @@ extra_rdoc_files:
131
159
  - LICENSE.txt
132
160
  - README.md
133
161
  files:
162
+ - ".github/workflows/ci.yml"
163
+ - ".rubocop.yml"
134
164
  - ".ruby-gemset"
135
165
  - ".ruby-version"
166
+ - CHANGELOG.md
136
167
  - Gemfile
137
168
  - LICENSE
138
169
  - LICENSE.txt
@@ -152,7 +183,7 @@ homepage: http://github.com/controlshift/engaging-networks-rest
152
183
  licenses:
153
184
  - MIT
154
185
  metadata: {}
155
- post_install_message:
186
+ post_install_message:
156
187
  rdoc_options: []
157
188
  require_paths:
158
189
  - lib
@@ -167,8 +198,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
198
  - !ruby/object:Gem::Version
168
199
  version: '0'
169
200
  requirements: []
170
- rubygems_version: 3.0.8
171
- signing_key:
201
+ rubygems_version: 3.1.6
202
+ signing_key:
172
203
  specification_version: 4
173
204
  summary: Client gem for the ENS API to Engaging Networks
174
205
  test_files: []