engaging-networks-rest 0.7.0 → 1.1.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: 0d4c75c9409376d414dc63d78307aa86b764c036a93b007590137f85794c1980
4
- data.tar.gz: 46e773a7635d878fe9115b66e1a7a395e0efd287ed1532c73b347c7e6e027cca
3
+ metadata.gz: d1d6fbc50fe43b052caca94e09d488d10d8d609aefed622f66e08ea1ed717eaa
4
+ data.tar.gz: 286eeefc99531cd14d473d8397f8fd9e4d84acb5ed99e03304f3cefa9b98933d
5
5
  SHA512:
6
- metadata.gz: a4ae62b058d6ef1589226b0f82150da4cd45ef641f617dc967ff500b1529ba18137f098ee5e95054ed5ea0e4bdd0c42c868d5b37436960692df280a5939213e9
7
- data.tar.gz: 6b2e2241bbc45fe002587341cfe792b826f403755d8c5b77efb226595c7e325cbb95745ee306a259e778fc4a54919ba87c9ce88e68c5dacd9ba8095fabe445a2
6
+ metadata.gz: 57eb66e2fa08f3e3c894b40ecaf750eb5fdc9f44e3194cdee7ae20432b3040d70036d96d102654e047f8101be4bbcf7fae3e2965a68a000f42aca97d746ec61d
7
+ data.tar.gz: 97c50701dd3872dfef2b3994a97c65ccab528db19cfad32e3c10250802cc4257c392108e8f327fa5b0d35e996adcedf929dd879202310426dcff1e47e0ef9e41
@@ -4,32 +4,22 @@ on: [push]
4
4
  jobs:
5
5
  test:
6
6
  runs-on: ubuntu-latest
7
-
8
7
  strategy:
9
8
  matrix:
10
- ruby-version: ['2.7', '3.0', '3.1', '3.2']
11
-
9
+ ruby-version: ['3.3', '3.4', '4.0']
12
10
  steps:
13
- - uses: actions/checkout@v2
11
+ - uses: actions/checkout@v4
14
12
  - uses: ruby/setup-ruby@v1
15
13
  with:
16
14
  ruby-version: ${{ matrix.ruby-version }}
17
15
  bundler-cache: true
18
- - run: bundle install
19
16
  - run: bundle exec rspec
20
-
21
17
  rubocop:
22
18
  runs-on: ubuntu-latest
23
-
24
- strategy:
25
- matrix:
26
- ruby-version: ['2.7', '3.0', '3.1', '3.2']
27
-
28
19
  steps:
29
- - uses: actions/checkout@v2
20
+ - uses: actions/checkout@v4
30
21
  - uses: ruby/setup-ruby@v1
31
22
  with:
32
- ruby-version: ${{ matrix.ruby-version }}
23
+ ruby-version: '4.0'
33
24
  bundler-cache: true
34
- - run: bundle install
35
25
  - run: bundle exec rubocop
data/.gitignore ADDED
@@ -0,0 +1,53 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /spec/examples.txt
9
+ /test/tmp/
10
+ /test/version_tmp/
11
+ /tmp/
12
+
13
+ # Used by dotenv library to load environment variables.
14
+ # .env
15
+
16
+ ## Specific to RubyMotion:
17
+ .dat*
18
+ .repl_history
19
+ build/
20
+ *.bridgesupport
21
+ build-iPhoneOS/
22
+ build-iPhoneSimulator/
23
+
24
+ ## Specific to RubyMotion (use of CocoaPods):
25
+ #
26
+ # We recommend against adding the Pods directory to your .gitignore. However
27
+ # you should judge for yourself, the pros and cons are mentioned at:
28
+ # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
29
+ #
30
+ # vendor/Pods/
31
+
32
+ ## Documentation cache and generated files:
33
+ /.yardoc/
34
+ /_yardoc/
35
+ /doc/
36
+ /rdoc/
37
+
38
+ ## Environment normalization:
39
+ /.bundle/
40
+ /vendor/bundle
41
+ /lib/bundler/man/
42
+
43
+ # for a library or gem, you might want to ignore these files since the code is
44
+ # intended to run in multiple environments; otherwise, check them in:
45
+ Gemfile.lock
46
+ # .ruby-version
47
+ # .ruby-gemset
48
+
49
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
50
+ .rvmrc
51
+
52
+ .idea/
53
+ .byebug_history
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.4
1
+ 4.0.1
data/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ # Changelog
2
+
3
+ ## [1.1.0] - 2026-02-11
4
+
5
+ ### BREAKING CHANGES
6
+ - Now requires Faraday 2.x (previously supported Faraday 1.x)
7
+ - Dropped support for Ruby versions older than 3.3. Officially supported versions are Ruby 3.3, 3.4, and 4.0.
8
+
9
+ ## [1.0.0] - 2023-10-17
10
+
11
+ ### BREAKING CHANGES
12
+ - Drops support for ruby versions 2.7 and 3.0. Only ruby 3.1 or newer is now supported.
13
+ - `EngagingNetworksRest.new` and `EngagingNetworksRest::Client.new` now require the `host` parameter
14
+
15
+ ### Development changes
16
+ - Removed juwelier. Dependencies are now managed only in the gemspec file.
17
+ - Replaced byebug with debug
18
+ - Upgraded required faker version to eliminate the need for pinning psych
19
+
1
20
  ## [0.7.0] - 2023-10-16
2
21
 
3
22
  ### Added
data/Gemfile CHANGED
@@ -2,17 +2,5 @@
2
2
 
3
3
  source 'https://rubygems.org'
4
4
 
5
- gem 'faraday', '>= 1.0'
6
- gem 'faraday_middleware'
7
-
8
- group :development do
9
- gem 'faker', '> 1.9'
10
- gem 'psych', '3.3.2' # See https://github.com/faker-ruby/faker/issues/2330
11
-
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'
18
- end
5
+ # Gem's dependencies are specified in engaging-networks-rest.gemspec
6
+ gemspec
data/README.md CHANGED
@@ -3,6 +3,11 @@ Client gem for the ENS API to Engaging Networks
3
3
 
4
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
5
 
6
+ ## Requirements
7
+
8
+ - Ruby 3.3, 3.4, or 4.0
9
+ - Faraday ~> 2.0
10
+
6
11
  ## Install
7
12
 
8
13
  `gem install engaging-networks-rest`
data/Rakefile CHANGED
@@ -1,53 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- warn e.message
9
- warn 'Run `bundle install` to install missing gems'
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- require 'juwelier'
15
- Juwelier::Tasks.new do |gem|
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 = %(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
-
25
- # dependencies defined in Gemfile
26
- end
27
- Juwelier::RubygemsDotOrgTasks.new
28
-
3
+ require 'bundler/gem_tasks'
29
4
  require 'rspec/core/rake_task'
30
- desc 'Run specs'
31
- RSpec::Core::RakeTask.new do |t|
32
- t.pattern = './spec/**/*_spec.rb' # don't need this, it's default.
33
- t.rspec_opts = '--color'
34
- end
35
5
 
36
- desc 'Code coverage detail'
37
- task :simplecov do
38
- ENV['COVERAGE'] = 'true'
39
- Rake::Task['test'].execute
40
- end
6
+ RSpec::Core::RakeTask.new(:spec)
41
7
 
42
- desc 'Default: run specs'
43
8
  task default: :spec
44
-
45
- require 'rdoc/task'
46
- Rake::RDocTask.new do |rdoc|
47
- version = File.exist?('VERSION') ? File.read('VERSION') : ''
48
-
49
- rdoc.rdoc_dir = 'rdoc'
50
- rdoc.title = "engaging-networks-rest #{version}"
51
- rdoc.rdoc_files.include('README*')
52
- rdoc.rdoc_files.include('lib/**/*.rb')
53
- end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.0
1
+ 1.1.0
@@ -1,77 +1,38 @@
1
- # Generated by juwelier
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
- # stub: engaging-networks-rest 0.7.0 ruby lib
1
+ # frozen_string_literal: true
6
2
 
7
- Gem::Specification.new do |s|
8
- s.name = "engaging-networks-rest".freeze
9
- s.version = "0.7.0"
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
10
5
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib".freeze]
13
- s.authors = ["Grey Moore".freeze]
14
- s.date = "2023-10-16"
15
- s.description = "Client gem for the ENS API to Engaging Networks".freeze
16
- s.email = "grey@controlshiftlabs.com".freeze
17
- s.extra_rdoc_files = [
18
- "LICENSE",
19
- "LICENSE.txt",
20
- "README.md"
21
- ]
22
- s.files = [
23
- ".github/workflows/ci.yml",
24
- ".rubocop.yml",
25
- ".ruby-gemset",
26
- ".ruby-version",
27
- "CHANGELOG.md",
28
- "Gemfile",
29
- "LICENSE",
30
- "LICENSE.txt",
31
- "README.md",
32
- "Rakefile",
33
- "VERSION",
34
- "engaging-networks-rest.gemspec",
35
- "example.rb",
36
- "lib/engaging_networks_rest.rb",
37
- "lib/engaging_networks_rest/client.rb",
38
- "lib/engaging_networks_rest/client/pages.rb",
39
- "lib/engaging_networks_rest/response/raise_error.rb",
40
- "spec/client/pages_spec.rb",
41
- "spec/client_spec.rb",
42
- "spec/spec_helper.rb"
43
- ]
44
- s.homepage = "http://github.com/controlshift/engaging-networks-rest".freeze
45
- s.licenses = ["MIT".freeze]
46
- s.rubygems_version = "3.1.6".freeze
47
- s.summary = "Client gem for the ENS API to Engaging Networks".freeze
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'engaging-networks-rest'
8
+ spec.version = File.read(File.expand_path('VERSION', __dir__)).strip
9
+ spec.authors = ['Grey Moore', 'Owens Ehimen', 'Diego Marcet']
10
+ spec.email = ['talk@controlshiftlabs.com']
48
11
 
49
- if s.respond_to? :specification_version then
50
- s.specification_version = 4
51
- end
12
+ spec.summary = 'Client gem for the ENS API to Engaging Networks'
13
+ spec.description = 'Client gem for the ENS API to Engaging Networks'
14
+ spec.homepage = 'https://github.com/controlshift/engaging-networks-rest'
15
+ spec.license = 'MIT'
52
16
 
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"])
64
- else
65
- s.add_dependency(%q<faraday>.freeze, [">= 1.0"])
66
- s.add_dependency(%q<faraday_middleware>.freeze, [">= 0"])
67
- s.add_dependency(%q<faker>.freeze, ["> 1.9"])
68
- s.add_dependency(%q<psych>.freeze, ["= 3.3.2"])
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"])
17
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
18
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
75
19
  end
76
- end
20
+ spec.require_paths = ['lib']
21
+
22
+ spec.required_ruby_version = ['>= 3.3', '< 5.0']
77
23
 
24
+ # Runtime dependencies
25
+ spec.add_runtime_dependency 'faraday', '~> 2.0'
26
+
27
+ # Development dependencies
28
+ spec.add_development_dependency 'bundler', '>= 2.0', '< 5.0'
29
+ spec.add_development_dependency 'debug', '~> 1.0'
30
+ spec.add_development_dependency 'faker', '~> 3.0'
31
+ spec.add_development_dependency 'faraday-detailed_logger', '~> 2.0'
32
+ spec.add_development_dependency 'rake', '~> 13.0'
33
+ spec.add_development_dependency 'rspec', '~> 3.0'
34
+ spec.add_development_dependency 'rubocop', '~> 1.0'
35
+ spec.add_development_dependency 'webmock', '~> 3.0'
36
+
37
+ spec.metadata['rubygems_mfa_required'] = 'true'
38
+ end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'faraday'
4
- require 'faraday_middleware'
5
4
  require 'engaging_networks_rest/client/pages'
6
5
  require 'engaging_networks_rest/response/raise_error'
7
6
 
@@ -9,9 +8,7 @@ module EngagingNetworksRest
9
8
  class Client
10
9
  attr_reader :api_key, :connection, :ens_auth_key
11
10
 
12
- ENS_DOMAIN = 'www.e-activist.com'
13
-
14
- def initialize(api_key:, host: ENS_DOMAIN)
11
+ def initialize(api_key:, host:)
15
12
  @api_key = api_key
16
13
 
17
14
  @connection = Faraday.new(url: "https://#{host}") do |conn|
@@ -40,11 +37,11 @@ module EngagingNetworksRest
40
37
  end
41
38
 
42
39
  def get(path:, params: {})
43
- request(method: :get, path: path, params: params)
40
+ request(method: :get, path:, params:)
44
41
  end
45
42
 
46
43
  def post(path:, body: {})
47
- request(method: :post, path: path, body: body)
44
+ request(method: :post, path:, body:)
48
45
  end
49
46
 
50
47
  include EngagingNetworksRest::Client::Pages
@@ -55,11 +52,10 @@ module EngagingNetworksRest
55
52
  authenticate! unless authenticated?
56
53
 
57
54
  response = connection.send(method) do |req|
58
- req.headers['Content-Type'] = 'application/json'
59
55
  req.path = path
60
56
  req.params = params
61
57
  req.headers['ens-auth-token'] = ens_auth_key
62
- req.body = ::JSON.generate(body) unless body.empty?
58
+ req.body = body unless body.empty?
63
59
  end
64
60
 
65
61
  response.body
@@ -8,7 +8,7 @@ module EngagingNetworksRest
8
8
 
9
9
  class InternalError < StandardError; end
10
10
 
11
- class RaiseError < Faraday::Response::Middleware
11
+ class RaiseError < Faraday::Middleware
12
12
  def on_complete(response)
13
13
  status_code = response[:status].to_i
14
14
  if (400...600).include? status_code
@@ -4,8 +4,8 @@ require 'engaging_networks_rest/client'
4
4
 
5
5
  module EngagingNetworksRest
6
6
  class << self
7
- def new(api_key:, host: EngagingNetworksRest::Client::ENS_DOMAIN)
8
- EngagingNetworksRest::Client.new(api_key: api_key, host: host)
7
+ def new(api_key:, host:)
8
+ EngagingNetworksRest::Client.new(api_key:, host:)
9
9
  end
10
10
  end
11
11
  end
metadata CHANGED
@@ -1,165 +1,157 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engaging-networks-rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Grey Moore
8
- autorequire:
8
+ - Owens Ehimen
9
+ - Diego Marcet
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2023-10-16 00:00:00.000000000 Z
12
+ date: 1980-01-02 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: faraday
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
- - - ">="
18
+ - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: '1.0'
20
+ version: '2.0'
20
21
  type: :runtime
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
- - - ">="
25
+ - - "~>"
25
26
  - !ruby/object:Gem::Version
26
- version: '1.0'
27
+ version: '2.0'
27
28
  - !ruby/object:Gem::Dependency
28
- name: faraday_middleware
29
+ name: bundler
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
32
  - - ">="
32
33
  - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: faker
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">"
34
+ version: '2.0'
35
+ - - "<"
46
36
  - !ruby/object:Gem::Version
47
- version: '1.9'
37
+ version: '5.0'
48
38
  type: :development
49
39
  prerelease: false
50
40
  version_requirements: !ruby/object:Gem::Requirement
51
41
  requirements:
52
- - - ">"
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '2.0'
45
+ - - "<"
53
46
  - !ruby/object:Gem::Version
54
- version: '1.9'
47
+ version: '5.0'
55
48
  - !ruby/object:Gem::Dependency
56
- name: psych
49
+ name: debug
57
50
  requirement: !ruby/object:Gem::Requirement
58
51
  requirements:
59
- - - '='
52
+ - - "~>"
60
53
  - !ruby/object:Gem::Version
61
- version: 3.3.2
54
+ version: '1.0'
62
55
  type: :development
63
56
  prerelease: false
64
57
  version_requirements: !ruby/object:Gem::Requirement
65
58
  requirements:
66
- - - '='
59
+ - - "~>"
67
60
  - !ruby/object:Gem::Version
68
- version: 3.3.2
61
+ version: '1.0'
69
62
  - !ruby/object:Gem::Dependency
70
- name: faraday-detailed_logger
63
+ name: faker
71
64
  requirement: !ruby/object:Gem::Requirement
72
65
  requirements:
73
- - - ">="
66
+ - - "~>"
74
67
  - !ruby/object:Gem::Version
75
- version: 2.1.2
68
+ version: '3.0'
76
69
  type: :development
77
70
  prerelease: false
78
71
  version_requirements: !ruby/object:Gem::Requirement
79
72
  requirements:
80
- - - ">="
73
+ - - "~>"
81
74
  - !ruby/object:Gem::Version
82
- version: 2.1.2
75
+ version: '3.0'
83
76
  - !ruby/object:Gem::Dependency
84
- name: juwelier
77
+ name: faraday-detailed_logger
85
78
  requirement: !ruby/object:Gem::Requirement
86
79
  requirements:
87
- - - ">="
80
+ - - "~>"
88
81
  - !ruby/object:Gem::Version
89
- version: '0'
82
+ version: '2.0'
90
83
  type: :development
91
84
  prerelease: false
92
85
  version_requirements: !ruby/object:Gem::Requirement
93
86
  requirements:
94
- - - ">="
87
+ - - "~>"
95
88
  - !ruby/object:Gem::Version
96
- version: '0'
89
+ version: '2.0'
97
90
  - !ruby/object:Gem::Dependency
98
- name: pry-byebug
91
+ name: rake
99
92
  requirement: !ruby/object:Gem::Requirement
100
93
  requirements:
101
- - - ">"
94
+ - - "~>"
102
95
  - !ruby/object:Gem::Version
103
- version: '3.6'
96
+ version: '13.0'
104
97
  type: :development
105
98
  prerelease: false
106
99
  version_requirements: !ruby/object:Gem::Requirement
107
100
  requirements:
108
- - - ">"
101
+ - - "~>"
109
102
  - !ruby/object:Gem::Version
110
- version: '3.6'
103
+ version: '13.0'
111
104
  - !ruby/object:Gem::Dependency
112
105
  name: rspec
113
106
  requirement: !ruby/object:Gem::Requirement
114
107
  requirements:
115
- - - ">="
108
+ - - "~>"
116
109
  - !ruby/object:Gem::Version
117
- version: '0'
110
+ version: '3.0'
118
111
  type: :development
119
112
  prerelease: false
120
113
  version_requirements: !ruby/object:Gem::Requirement
121
114
  requirements:
122
- - - ">="
115
+ - - "~>"
123
116
  - !ruby/object:Gem::Version
124
- version: '0'
117
+ version: '3.0'
125
118
  - !ruby/object:Gem::Dependency
126
119
  name: rubocop
127
120
  requirement: !ruby/object:Gem::Requirement
128
121
  requirements:
129
- - - ">="
122
+ - - "~>"
130
123
  - !ruby/object:Gem::Version
131
- version: '0'
124
+ version: '1.0'
132
125
  type: :development
133
126
  prerelease: false
134
127
  version_requirements: !ruby/object:Gem::Requirement
135
128
  requirements:
136
- - - ">="
129
+ - - "~>"
137
130
  - !ruby/object:Gem::Version
138
- version: '0'
131
+ version: '1.0'
139
132
  - !ruby/object:Gem::Dependency
140
133
  name: webmock
141
134
  requirement: !ruby/object:Gem::Requirement
142
135
  requirements:
143
- - - ">"
136
+ - - "~>"
144
137
  - !ruby/object:Gem::Version
145
- version: '3.4'
138
+ version: '3.0'
146
139
  type: :development
147
140
  prerelease: false
148
141
  version_requirements: !ruby/object:Gem::Requirement
149
142
  requirements:
150
- - - ">"
143
+ - - "~>"
151
144
  - !ruby/object:Gem::Version
152
- version: '3.4'
145
+ version: '3.0'
153
146
  description: Client gem for the ENS API to Engaging Networks
154
- email: grey@controlshiftlabs.com
147
+ email:
148
+ - talk@controlshiftlabs.com
155
149
  executables: []
156
150
  extensions: []
157
- extra_rdoc_files:
158
- - LICENSE
159
- - LICENSE.txt
160
- - README.md
151
+ extra_rdoc_files: []
161
152
  files:
162
153
  - ".github/workflows/ci.yml"
154
+ - ".gitignore"
163
155
  - ".rubocop.yml"
164
156
  - ".ruby-gemset"
165
157
  - ".ruby-version"
@@ -176,14 +168,11 @@ files:
176
168
  - lib/engaging_networks_rest/client.rb
177
169
  - lib/engaging_networks_rest/client/pages.rb
178
170
  - lib/engaging_networks_rest/response/raise_error.rb
179
- - spec/client/pages_spec.rb
180
- - spec/client_spec.rb
181
- - spec/spec_helper.rb
182
- homepage: http://github.com/controlshift/engaging-networks-rest
171
+ homepage: https://github.com/controlshift/engaging-networks-rest
183
172
  licenses:
184
173
  - MIT
185
- metadata: {}
186
- post_install_message:
174
+ metadata:
175
+ rubygems_mfa_required: 'true'
187
176
  rdoc_options: []
188
177
  require_paths:
189
178
  - lib
@@ -191,15 +180,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
191
180
  requirements:
192
181
  - - ">="
193
182
  - !ruby/object:Gem::Version
194
- version: '0'
183
+ version: '3.3'
184
+ - - "<"
185
+ - !ruby/object:Gem::Version
186
+ version: '5.0'
195
187
  required_rubygems_version: !ruby/object:Gem::Requirement
196
188
  requirements:
197
189
  - - ">="
198
190
  - !ruby/object:Gem::Version
199
191
  version: '0'
200
192
  requirements: []
201
- rubygems_version: 3.1.6
202
- signing_key:
193
+ rubygems_version: 4.0.3
203
194
  specification_version: 4
204
195
  summary: Client gem for the ENS API to Engaging Networks
205
196
  test_files: []
@@ -1,137 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe EngagingNetworksRest::Client::Pages do
6
- let(:api_key) { 'abc-123' }
7
- let(:ens_auth_key) { 'tmp-auth-key-456' }
8
- let(:standard_headers) { { 'Content-Type' => 'application/json', 'Ens-Auth-Token' => ens_auth_key } }
9
-
10
- subject { EngagingNetworksRest::Client.new(api_key: api_key) }
11
-
12
- describe '#pages' do
13
- let(:page_type) { 'dcf' }
14
- let(:page_status) { 'live' }
15
- let(:pages_url) { "https://#{EngagingNetworksRest::Client::ENS_DOMAIN}/ens/service/page" }
16
-
17
- # The API docs don't actually say what this response looks like, so this is a guess.
18
- # Fortunately, it doesn't actually matter for our purposes, since we just return whatever JSON we get.
19
- let(:response) { [{ 'id' => 123, 'title' => 'A page' }, { 'id' => 234, 'title' => 'Another page' }] }
20
-
21
- shared_examples_for 'list pages' do
22
- it 'should get pages' do
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)
28
-
29
- expect(subject.pages(type: page_type, status: page_status)).to eq response
30
- end
31
-
32
- it 'should omit status param if not specified' do
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)
38
-
39
- expect(subject.pages(type: page_type)).to eq response
40
- end
41
- end
42
-
43
- context 'not already authenticated' do
44
- before :each do
45
- expect(subject).to receive(:authenticate!) do
46
- allow(subject).to receive(:ens_auth_key).and_return(ens_auth_key)
47
- end
48
- end
49
-
50
- include_examples 'list pages'
51
- end
52
-
53
- context 'already authenticated' do
54
- before :each do
55
- allow(subject).to receive(:ens_auth_key).and_return(ens_auth_key)
56
- end
57
-
58
- include_examples 'list pages'
59
- end
60
- end
61
-
62
- describe '#process_page_request' do
63
- let(:page_id) { 234 }
64
- let(:page_req_url) { "https://#{EngagingNetworksRest::Client::ENS_DOMAIN}/ens/service/page/#{page_id}/process" }
65
- let(:email) { Faker::Internet.email }
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' } }
73
-
74
- shared_examples_for 'process page request' do
75
- it 'should send correct body for supporter and generic data' do
76
- stub_request(:post, page_req_url)
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 })
89
- end
90
-
91
- it 'should process the page request and return its ID' do
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)
97
-
98
- result = subject.process_page_request(page_id: page_id, supporter_data: supporter_hash)
99
-
100
- expect(result['id']).to eq '1234567'
101
- expect(result['supporterId']).to eq '98765'
102
- expect(result['supporterEmailAddress']).to eq email
103
- end
104
-
105
- it 'should raise if response status is not SUCCESS' do
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/)
116
- end
117
- end
118
-
119
- context 'not already authenticated' do
120
- before :each do
121
- expect(subject).to receive(:authenticate!) do
122
- allow(subject).to receive(:ens_auth_key).and_return(ens_auth_key)
123
- end
124
- end
125
-
126
- include_examples 'process page request'
127
- end
128
-
129
- context 'already authenticated' do
130
- before :each do
131
- allow(subject).to receive(:ens_auth_key).and_return(ens_auth_key)
132
- end
133
-
134
- include_examples 'process page request'
135
- end
136
- end
137
- end
data/spec/client_spec.rb DELETED
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe EngagingNetworksRest::Client do
6
- let(:api_key) { 'abc123' }
7
- let(:content_type_header) { { 'Content-Type' => 'application/json' } }
8
-
9
- subject { EngagingNetworksRest::Client.new(api_key: api_key) }
10
-
11
- describe '#authenticate!' do
12
- let(:auth_key) { '75491e42-99dc-45ce-b637-a681bede875c' }
13
- let(:auth_key_body) { "{\"ens-auth-token\":\"#{auth_key}\",\"expires\":3600000}" }
14
-
15
- before :each do
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)
19
- end
20
-
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!
39
-
40
- expect(subject.ens_auth_key).to eq auth_key
41
- end
42
- end
43
- end
44
- end
data/spec/spec_helper.rb DELETED
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rspec'
4
- require 'webmock/rspec'
5
- require 'faker'
6
-
7
- $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
8
-
9
- require 'engaging_networks_rest'
10
-
11
- RSpec.configure do |config|
12
- config.include WebMock::API
13
-
14
- config.before :each do
15
- WebMock.reset!
16
- end
17
-
18
- config.after :each do
19
- WebMock.reset!
20
- end
21
- end