Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,22 @@ on: [push]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
ruby-version: ['3.3', '3.4', '4.0']
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.4
ruby-version: ${{ matrix.ruby-version }}
bundler-cache: true
- run: bundle install
- run: bundle exec rspec
rubocop:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: '4.0'
bundler-cache: true
- run: bundle exec rubocop
24 changes: 24 additions & 0 deletions .rubocop.yml
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, thanks for adding this!

Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
AllCops:
DisabledByDefault: true

Security:
Enabled: true

Bundler/DuplicatedGem:
Enabled: true
Bundler/InsecureProtocolSource:
Enabled: true
Layout/IndentationStyle:
Enabled: true
Layout/SpaceInsideRangeLiteral:
Enabled: true
Lint:
Enabled: true
Naming/AsciiIdentifiers:
Enabled: true
Naming/ClassAndModuleCamelCase:
Enabled: true
Naming/ConstantName:
Enabled: true
Naming/FileName:
Enabled: true
2 changes: 1 addition & 1 deletion .ruby-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.4.5
4.0.1
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Changelog

## [1.11.0] - 2026-02-11

### Breaking Changes
- Now requires Faraday 2.x (previously supported Faraday 1.x)
- Dropped support for Ruby versions older than 3.3. Officially supported versions are Ruby 3.3, 3.4, and 4.0.
16 changes: 3 additions & 13 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,16 +1,6 @@
# frozen_string_literal: true

source 'http://rubygems.org'
source 'https://rubygems.org'

gem 'vertebrae', '< 1'

# Add dependencies to develop your gem here.
# Include everything needed to run rake, tests, features, etc.
group :development do
gem 'bundler'
gem 'byebug'
gem 'juwelier', git: 'https://github.com/flajann2/juwelier.git'
gem 'rspec'
gem 'rubocop'
gem 'webmock'
end
# Specify your gem's dependencies in tokyo_api.gemspec
gemspec
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

A ruby gem for communicating with ControlShift's Tokyo API.

## Requirements

- Ruby 3.3, 3.4, or 4.0
- Faraday ~> 2.0

[![CI Status](https://github.com/controlshift/tokyo_api/actions/workflows/ci.yml/badge.svg)](https://github.com/controlshift/tokyo_api/actions/workflows/ci.yml)

## Usage
Expand Down
45 changes: 2 additions & 43 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,49 +1,8 @@
# frozen_string_literal: true

require 'rubygems'
require 'bundler'
begin
Bundler.setup(:default, :development)
rescue Bundler::BundlerError => e
warn e.message
warn 'Run `bundle install` to install missing gems'
exit e.status_code
end
require 'rake'

require 'juwelier'
Juwelier::Tasks.new do |gem|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
gem.name = 'tokyo_api'
gem.homepage = 'http://github.com/controlshift/tokyo_api'
gem.license = 'MIT'
gem.summary = 'Ruby API Wrapper for Tokyo CRM service'
gem.description = 'Tokyo is a CRM middleware, this gem helps apps talk to it.'
gem.email = 'nathan@controlshiftlabs.com'
gem.authors = ['Nathan Woodhull']
# dependencies defined in Gemfile
end
Juwelier::RubygemsDotOrgTasks.new

require 'rspec/core'
require 'bundler/gem_tasks'
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new(:spec) do |spec|
spec.pattern = FileList['spec/**/*_spec.rb']
end

RSpec::Core::RakeTask.new(:rcov) do |spec|
spec.pattern = 'spec/**/*_spec.rb'
spec.rcov = true
end
RSpec::Core::RakeTask.new(:spec)

task default: :spec

require 'rdoc/task'
Rake::RDocTask.new do |rdoc|
version = File.exist?('VERSION') ? File.read('VERSION') : ''

rdoc.rdoc_dir = 'rdoc'
rdoc.title = "tokyo_api #{version}"
rdoc.rdoc_files.include('README*')
rdoc.rdoc_files.include('lib/**/*.rb')
end
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.10.0
1.11.0
2 changes: 1 addition & 1 deletion example.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@
ta = TokyoApi.new(host: 'localhost:9000', username: 'tokyo', password: 'Passw0rd!', scheme: 'http')

require 'pry-debugger'
binding.pry
binding.pry # rubocop:disable Lint/Debugger
1 change: 1 addition & 0 deletions lib/tokyo_api.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# frozen_string_literal: true

require 'vertebrae'
require 'faraday/mashify'
require 'tokyo_api/base'
require 'tokyo_api/actionkit'
require 'tokyo_api/campact'
Expand Down
20 changes: 9 additions & 11 deletions lib/tokyo_api/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -57,21 +57,19 @@ def request(method, path, params, options) # :nodoc:
end

def setup
connection.stack do |builder|
builder.use Faraday::Request::Multipart
builder.use Faraday::Request::UrlEncoded
connection.faraday_connection = Faraday.new(connection.configuration.faraday_options) do |f|
f.request :multipart
f.request :url_encoded
if connection.configuration.authenticated?
builder.use Faraday::Request::BasicAuthentication, connection.configuration.username,
connection.configuration.password
f.request :authorization, :basic, connection.configuration.username, connection.configuration.password
end

builder.use Faraday::Response::Logger if ENV['DEBUG']
f.response :logger if ENV['DEBUG']
f.response :mashify
f.response :json

builder.use FaradayMiddleware::Mashify
builder.use FaradayMiddleware::ParseJson

builder.use Vertebrae::Response::RaiseError
builder.adapter connection.configuration.adapter
f.use Vertebrae::Response::RaiseError
f.adapter connection.configuration.adapter
end
end
end
Expand Down
111 changes: 32 additions & 79 deletions tokyo_api.gemspec
Original file line number Diff line number Diff line change
@@ -1,85 +1,38 @@
# Generated by juwelier
# DO NOT EDIT THIS FILE DIRECTLY
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
# -*- encoding: utf-8 -*-
# stub: tokyo_api 1.9.0 ruby lib
# frozen_string_literal: true

Gem::Specification.new do |s|
s.name = "tokyo_api".freeze
s.version = "1.9.0"
lib = File.expand_path('lib', __dir__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)

s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
s.require_paths = ["lib".freeze]
s.authors = ["Nathan Woodhull".freeze]
s.date = "2023-09-28"
s.description = "Tokyo is a CRM middleware, this gem helps apps talk to it.".freeze
s.email = "nathan@controlshiftlabs.com".freeze
s.extra_rdoc_files = [
"LICENSE.txt",
"README.md"
]
s.files = [
".document",
".github/workflows/ci.yml",
".rspec",
".ruby-gemset",
".ruby-version",
"Gemfile",
"LICENSE.txt",
"README.md",
"Rakefile",
"VERSION",
"example.rb",
"lib/tokyo_api.rb",
"lib/tokyo_api/actionkit.rb",
"lib/tokyo_api/base.rb",
"lib/tokyo_api/campact.rb",
"lib/tokyo_api/client.rb",
"lib/tokyo_api/expire.rb",
"lib/tokyo_api/external_image.rb",
"lib/tokyo_api/identity.rb",
"spec/actionkit_spec.rb",
"spec/campact_spec.rb",
"spec/client_spec.rb",
"spec/expire_spec.rb",
"spec/external_image_spec.rb",
"spec/fixtures/expire/success",
"spec/fixtures/responses/actionkit/full_user_success",
"spec/fixtures/responses/campact/full_user_success",
"spec/fixtures/responses/full_user_error",
"spec/fixtures/responses/full_user_success",
"spec/fixtures/responses/identity/full_user_success",
"spec/fixtures/responses/krautbuster/full_user_success",
"spec/identity_spec.rb",
"spec/spec_helper.rb",
"spec/tokyo_api_spec.rb",
"tokyo_api.gemspec"
]
s.homepage = "http://github.com/controlshift/tokyo_api".freeze
s.licenses = ["MIT".freeze]
s.rubygems_version = "3.3.19".freeze
s.summary = "Ruby API Wrapper for Tokyo CRM service".freeze
Gem::Specification.new do |spec|
spec.name = 'tokyo_api'
spec.version = File.read(File.expand_path('VERSION', __dir__)).strip
spec.authors = ['Nathan Woodhull', 'Owens Ehimen', 'Grey Moore', 'Diego Marcet']
spec.email = ['talk@controlshiftlabs.com']

if s.respond_to? :specification_version then
s.specification_version = 4
end
spec.summary = 'Ruby API Wrapper for Tokyo CRM service'
spec.description = 'Tokyo is a CRM middleware, this gem helps apps talk to it.'
spec.homepage = 'https://github.com/controlshift/tokyo_api'
spec.license = 'MIT'

if s.respond_to? :add_runtime_dependency then
s.add_runtime_dependency(%q<vertebrae>.freeze, ["< 1"])
s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
s.add_development_dependency(%q<byebug>.freeze, [">= 0"])
s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
s.add_development_dependency(%q<rubocop>.freeze, [">= 0"])
s.add_development_dependency(%q<webmock>.freeze, [">= 0"])
else
s.add_dependency(%q<vertebrae>.freeze, ["< 1"])
s.add_dependency(%q<bundler>.freeze, [">= 0"])
s.add_dependency(%q<byebug>.freeze, [">= 0"])
s.add_dependency(%q<juwelier>.freeze, [">= 0"])
s.add_dependency(%q<rspec>.freeze, [">= 0"])
s.add_dependency(%q<rubocop>.freeze, [">= 0"])
s.add_dependency(%q<webmock>.freeze, [">= 0"])
spec.files = Dir.chdir(File.expand_path(__dir__)) do
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
end
end
spec.require_paths = ['lib']

spec.required_ruby_version = ['>= 3.3', '< 5.0']

# Runtime dependencies
spec.add_runtime_dependency 'vertebrae', '~> 1.0'
spec.add_runtime_dependency 'faraday', '~> 2.0'
spec.add_runtime_dependency 'faraday-mashify', '~> 1.0'

# Development dependencies
spec.add_development_dependency 'bundler', '>= 2.0', '< 5.0'
spec.add_development_dependency 'byebug', '~> 13.0'
spec.add_development_dependency 'rake', '~> 13.0'
spec.add_development_dependency 'rspec', '~> 3.0'
spec.add_development_dependency 'rubocop', '~> 1.0'
spec.add_development_dependency 'webmock', '~> 3.0'

spec.metadata['rubygems_mfa_required'] = 'true'
end