engaging-networks-rest 0.6.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a3893669b39db25ea995ca69261faf534cfd5bc497928e1df6b5765d57315d1
4
- data.tar.gz: 7f1e50fbb1831eb1c03b3bdb19bfbd1ea0af6828f1db3d4c92831c83ebe5c5db
3
+ metadata.gz: 50d7f225fefc60a2c7aca2d2bc17c290a0a483548d86b78cb138b1333a131c09
4
+ data.tar.gz: e172253dbccf464fa9f8862e0dcb5afd3802cc5745f1dd7a79fe4fdfc8981d9a
5
5
  SHA512:
6
- metadata.gz: 684c2ddccb8c0f2b2206e33a01cb34d37094c43af7beab6d69aee6731e10595f620b9d76d800f0e10ca68128961bec1bfaf0f0814375bc3a6c653d922e5ac5be
7
- data.tar.gz: 59f1ba47be552a66f24e931628945c26d147b716e87c7f280927a5ecf06e476d8d743c9bf3ced9eb2b3247724497e2a4c17592f1339c4056f9876678bef1ba47
6
+ metadata.gz: 5363d9b2582910b3b54a69eff21226508fe39986a89103f73676ffc5b18436a7d787b3890940e7d1a7d2b8d803534507ba2cdd2b1c3d2531cc2de1409b05f2de
7
+ data.tar.gz: 0efb3821b1caf980c4a56c2acf87fc2814721e8e7206bcfb853e22de59798a16d48ea3a66b8506b8e781bdd6174bc48ee395da3eb218e49287eeb14035813986
@@ -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: ['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: ['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/.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/.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
+ 3.1.4
data/CHANGELOG.md ADDED
@@ -0,0 +1,18 @@
1
+ # Changelog
2
+
3
+ ## [1.0.0] - 2023-10-17
4
+
5
+ ### BREAKING CHANGES
6
+ - Drops support for ruby versions 2.7 and 3.0. Only ruby 3.1 or newer is now supported.
7
+ - `EngagingNetworksRest.new` and `EngagingNetworksRest::Client.new` now require the `host` parameter
8
+
9
+ ### Development changes
10
+ - Removed juwelier. Dependencies are now managed only in the gemspec file.
11
+ - Replaced byebug with debug
12
+ - Upgraded required faker version to eliminate the need for pinning psych
13
+
14
+ ## [0.7.0] - 2023-10-16
15
+
16
+ ### Added
17
+ - Adds support for passing a `host` parameter to EngagingNetworksRest.new and EngagingNetworksRest::Client.new
18
+ - Ruby versions 3.0, 3.1, and 3.2 are officially supported in addition to ruby 2.7
data/Gemfile CHANGED
@@ -1,13 +1,6 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
2
 
3
- gem 'faraday', '>= 1.0'
4
- gem 'faraday_middleware'
3
+ source 'https://rubygems.org'
5
4
 
6
- group :development do
7
- gem 'rspec', '>= 0'
8
- gem 'juwelier', git: 'https://github.com/flajann2/juwelier.git'
9
- gem 'webmock', '> 3.4'
10
- gem 'faker', '> 1.9'
11
- gem 'pry-byebug', '> 3.6'
12
- gem 'faraday-detailed_logger', '>= 2.1.2'
13
- end
5
+ # Gem's dependencies are specified in engaging-networks-rest.gemspec
6
+ gemspec
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,50 +1,35 @@
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'
13
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 = %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"]
24
-
25
- # dependencies defined in Gemfile
26
- end
27
- Juwelier::RubygemsDotOrgTasks.new
28
-
29
14
  require 'rspec/core/rake_task'
30
- desc "Run specs"
15
+ desc 'Run specs'
31
16
  RSpec::Core::RakeTask.new do |t|
32
- t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
17
+ t.pattern = './spec/**/*_spec.rb' # don't need this, it's default.
33
18
  t.rspec_opts = '--color'
34
19
  end
35
20
 
36
- desc "Code coverage detail"
21
+ desc 'Code coverage detail'
37
22
  task :simplecov do
38
- ENV['COVERAGE'] = "true"
23
+ ENV['COVERAGE'] = 'true'
39
24
  Rake::Task['test'].execute
40
25
  end
41
26
 
42
- desc 'Default: run specs.'
43
- task :default => :spec
27
+ desc 'Default: run specs'
28
+ task default: :spec
44
29
 
45
30
  require 'rdoc/task'
46
31
  Rake::RDocTask.new do |rdoc|
47
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
32
+ version = File.exist?('VERSION') ? File.read('VERSION') : ''
48
33
 
49
34
  rdoc.rdoc_dir = 'rdoc'
50
35
  rdoc.title = "engaging-networks-rest #{version}"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 1.0.0
@@ -1,79 +1,42 @@
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.6.0 ruby lib
1
+ # frozen_string_literal: true
6
2
 
7
3
  Gem::Specification.new do |s|
8
4
  s.name = "engaging-networks-rest".freeze
9
- s.version = "0.6.0"
5
+ s.version = "1.0.0"
10
6
 
11
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
8
  s.require_paths = ["lib".freeze]
13
- s.authors = ["Jacinda Moore".freeze]
14
- s.date = "2021-03-23"
9
+ s.authors = ["Grey Moore".freeze]
10
+ s.date = "2023-10-17"
15
11
  s.description = "Client gem for the ENS API to Engaging Networks".freeze
16
- s.email = "jacinda@controlshiftlabs.com".freeze
12
+ s.email = "systems@controlshiftlabs.com".freeze
17
13
  s.extra_rdoc_files = [
18
14
  "LICENSE",
19
15
  "LICENSE.txt",
20
16
  "README.md"
21
17
  ]
22
- s.files = [
23
- ".ruby-gemset",
24
- ".ruby-version",
25
- "Gemfile",
26
- "LICENSE",
27
- "LICENSE.txt",
28
- "README.md",
29
- "Rakefile",
30
- "VERSION",
31
- "engaging-networks-rest.gemspec",
32
- "example.rb",
33
- "lib/engaging_networks_rest.rb",
34
- "lib/engaging_networks_rest/client.rb",
35
- "lib/engaging_networks_rest/client/pages.rb",
36
- "lib/engaging_networks_rest/response/raise_error.rb",
37
- "spec/client/pages_spec.rb",
38
- "spec/client_spec.rb",
39
- "spec/spec_helper.rb"
40
- ]
41
- s.homepage = "http://github.com/controlshift/engaging-networks-rest".freeze
18
+
19
+ # Specify which files should be added to the gem when it is released.
20
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
+ s.files = Dir.chdir(File.expand_path(__dir__)) do
22
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
23
+ end
24
+
25
+ s.homepage = 'https://github.com/controlshift/engaging-networks-rest'.freeze
42
26
  s.licenses = ["MIT".freeze]
43
- s.rubygems_version = "3.0.8".freeze
44
27
  s.summary = "Client gem for the ENS API to Engaging Networks".freeze
45
28
 
46
29
  if s.respond_to? :specification_version then
47
30
  s.specification_version = 4
48
-
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
68
- else
69
- s.add_dependency(%q<faraday>.freeze, [">= 1.0"])
70
- 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
- s.add_dependency(%q<faker>.freeze, ["> 1.9"])
75
- s.add_dependency(%q<pry-byebug>.freeze, ["> 3.6"])
76
- s.add_dependency(%q<faraday-detailed_logger>.freeze, [">= 2.1.2"])
77
31
  end
78
- end
79
32
 
33
+ s.add_runtime_dependency(%q<faraday>.freeze, [">= 1.0"])
34
+ s.add_runtime_dependency(%q<faraday_middleware>.freeze, [">= 0"])
35
+
36
+ s.add_development_dependency(%q<faker>.freeze, ["> 2.20.0"])
37
+ s.add_development_dependency(%q<faraday-detailed_logger>.freeze, [">= 2.1.2"])
38
+ s.add_development_dependency(%q<debug>.freeze, ["> 0"])
39
+ s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
40
+ s.add_development_dependency(%q<rubocop>.freeze, [">= 0"])
41
+ s.add_development_dependency(%q<webmock>.freeze, ["> 3.4"])
42
+ end
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,12 @@ 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
11
-
12
- def initialize(api_key:)
12
+ def initialize(api_key:, host:)
13
13
  @api_key = api_key
14
14
 
15
- @connection = Faraday.new(url: "https://#{ENS_DOMAIN}") do |conn|
15
+ @connection = Faraday.new(url: "https://#{host}") do |conn|
16
16
  conn.request :json
17
- conn.response :json, :content_type => /\bjson$/
17
+ conn.response :json, content_type: /\bjson$/
18
18
 
19
19
  conn.use Faraday::Response::Logger if ENV['DEBUG']
20
20
  conn.use EngagingNetworksRest::Response::RaiseError
@@ -38,11 +38,11 @@ module EngagingNetworksRest
38
38
  end
39
39
 
40
40
  def get(path:, params: {})
41
- request(method: :get, path: path, params: params)
41
+ request(method: :get, path:, params:)
42
42
  end
43
43
 
44
44
  def post(path:, body: {})
45
- request(method: :post, path: path, body: body)
45
+ request(method: :post, path:, body:)
46
46
  end
47
47
 
48
48
  include EngagingNetworksRest::Client::Pages
@@ -50,9 +50,7 @@ module EngagingNetworksRest
50
50
  private
51
51
 
52
52
  def request(method:, path:, params: {}, body: {})
53
- unless authenticated?
54
- authenticate!
55
- end
53
+ authenticate! unless authenticated?
56
54
 
57
55
  response = connection.send(method) do |req|
58
56
  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:)
8
+ EngagingNetworksRest::Client.new(api_key:, host:)
7
9
  end
8
10
  end
9
11
  end
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: 1.0.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-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -39,91 +39,91 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: faker
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - ">"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 2.20.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - ">"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 2.20.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: juwelier
56
+ name: faraday-detailed_logger
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 2.1.2
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 2.1.2
69
69
  - !ruby/object:Gem::Dependency
70
- name: webmock
70
+ name: debug
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">"
74
74
  - !ruby/object:Gem::Version
75
- version: '3.4'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">"
81
81
  - !ruby/object:Gem::Version
82
- version: '3.4'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: faker
84
+ name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '1.9'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '1.9'
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: pry-byebug
98
+ name: rubocop
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: '3.6'
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">"
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: '3.6'
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: faraday-detailed_logger
112
+ name: webmock
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - ">"
116
116
  - !ruby/object:Gem::Version
117
- version: 2.1.2
117
+ version: '3.4'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - ">"
123
123
  - !ruby/object:Gem::Version
124
- version: 2.1.2
124
+ version: '3.4'
125
125
  description: Client gem for the ENS API to Engaging Networks
126
- email: jacinda@controlshiftlabs.com
126
+ email: systems@controlshiftlabs.com
127
127
  executables: []
128
128
  extensions: []
129
129
  extra_rdoc_files:
@@ -131,8 +131,12 @@ extra_rdoc_files:
131
131
  - LICENSE.txt
132
132
  - README.md
133
133
  files:
134
+ - ".github/workflows/ci.yml"
135
+ - ".gitignore"
136
+ - ".rubocop.yml"
134
137
  - ".ruby-gemset"
135
138
  - ".ruby-version"
139
+ - CHANGELOG.md
136
140
  - Gemfile
137
141
  - LICENSE
138
142
  - LICENSE.txt
@@ -145,14 +149,11 @@ files:
145
149
  - lib/engaging_networks_rest/client.rb
146
150
  - lib/engaging_networks_rest/client/pages.rb
147
151
  - lib/engaging_networks_rest/response/raise_error.rb
148
- - spec/client/pages_spec.rb
149
- - spec/client_spec.rb
150
- - spec/spec_helper.rb
151
- homepage: http://github.com/controlshift/engaging-networks-rest
152
+ homepage: https://github.com/controlshift/engaging-networks-rest
152
153
  licenses:
153
154
  - MIT
154
155
  metadata: {}
155
- post_install_message:
156
+ post_install_message:
156
157
  rdoc_options: []
157
158
  require_paths:
158
159
  - lib
@@ -167,8 +168,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
168
  - !ruby/object:Gem::Version
168
169
  version: '0'
169
170
  requirements: []
170
- rubygems_version: 3.0.8
171
- signing_key:
171
+ rubygems_version: 3.3.26
172
+ signing_key:
172
173
  specification_version: 4
173
174
  summary: Client gem for the ENS API to Engaging Networks
174
175
  test_files: []
@@ -1,108 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe EngagingNetworksRest::Client::Pages do
4
- let(:api_key) { 'abc-123' }
5
- let(:ens_auth_key) { 'tmp-auth-key-456' }
6
- let(:standard_headers) { {'Content-Type' => 'application/json', 'Ens-Auth-Token' => ens_auth_key} }
7
-
8
- subject { EngagingNetworksRest::Client.new(api_key: api_key) }
9
-
10
- describe '#pages' do
11
- let(:page_type) { 'dcf' }
12
- let(:page_status) { 'live' }
13
- let(:pages_url) { "https://#{EngagingNetworksRest::Client::ENS_DOMAIN}/ens/service/page" }
14
-
15
- # The API docs don't actually say what this response looks like, so this is a guess.
16
- # 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'}] }
18
-
19
- shared_examples_for 'list pages' do
20
- 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
-
24
- expect(subject.pages(type: page_type, status: page_status)).to eq response
25
- end
26
-
27
- 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)
30
-
31
- expect(subject.pages(type: page_type)).to eq response
32
- end
33
- end
34
-
35
- context 'not already authenticated' do
36
- before :each do
37
- expect(subject).to receive(:authenticate!) do
38
- allow(subject).to receive(:ens_auth_key).and_return(ens_auth_key)
39
- end
40
- end
41
-
42
- include_examples 'list pages'
43
- end
44
-
45
- context 'already authenticated' do
46
- before :each do
47
- allow(subject).to receive(:ens_auth_key).and_return(ens_auth_key)
48
- end
49
-
50
- include_examples 'list pages'
51
- end
52
- end
53
-
54
- describe '#process_page_request' do
55
- let(:page_id) { 234 }
56
- let(:page_req_url) { "https://#{EngagingNetworksRest::Client::ENS_DOMAIN}/ens/service/page/#{page_id}/process" }
57
- 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'} }
61
-
62
- shared_examples_for 'process page request' do
63
- it 'should send correct body for supporter and generic data' do
64
- 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 })
69
- end
70
-
71
- 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)
74
-
75
- result = subject.process_page_request(page_id: page_id, supporter_data: supporter_hash)
76
-
77
- expect(result['id']).to eq '1234567'
78
- expect(result['supporterId']).to eq '98765'
79
- expect(result['supporterEmailAddress']).to eq email
80
- end
81
-
82
- 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/)
87
- end
88
- end
89
-
90
- context 'not already authenticated' do
91
- before :each do
92
- expect(subject).to receive(:authenticate!) do
93
- allow(subject).to receive(:ens_auth_key).and_return(ens_auth_key)
94
- end
95
- end
96
-
97
- include_examples 'process page request'
98
- end
99
-
100
- context 'already authenticated' do
101
- before :each do
102
- allow(subject).to receive(:ens_auth_key).and_return(ens_auth_key)
103
- end
104
-
105
- include_examples 'process page request'
106
- end
107
- end
108
- end
data/spec/client_spec.rb DELETED
@@ -1,24 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe EngagingNetworksRest::Client do
4
- let(:api_key) { 'abc123' }
5
- let(:content_type_header) { {'Content-Type' => 'application/json'} }
6
-
7
- subject { EngagingNetworksRest::Client.new(api_key: api_key) }
8
-
9
- describe '#authenticate!' do
10
- let(:auth_url) { "https://#{EngagingNetworksRest::Client::ENS_DOMAIN}/ens/service/authenticate" }
11
- let(:auth_key) { '75491e42-99dc-45ce-b637-a681bede875c' }
12
- let(:auth_key_body) { "{\"ens-auth-token\":\"#{auth_key}\",\"expires\":3600000}" }
13
-
14
- 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
- end
17
-
18
- it 'should set the ens_auth_key on the client' do
19
- subject.authenticate!
20
-
21
- expect(subject.ens_auth_key).to eq auth_key
22
- end
23
- end
24
- end
data/spec/spec_helper.rb DELETED
@@ -1,19 +0,0 @@
1
- require 'rspec'
2
- require 'webmock/rspec'
3
- require 'faker'
4
-
5
- $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
6
-
7
- require 'engaging_networks_rest'
8
-
9
- RSpec.configure do |config|
10
- config.include WebMock::API
11
-
12
- config.before :each do
13
- WebMock.reset!
14
- end
15
-
16
- config.after :each do
17
- WebMock.reset!
18
- end
19
- end