Skip to content
This repository has been archived by the owner on Mar 28, 2023. It is now read-only.

Commit

Permalink
Merge 864aba9 into 2fc5c44
Browse files Browse the repository at this point in the history
  • Loading branch information
filiptepper committed Feb 28, 2018
2 parents 2fc5c44 + 864aba9 commit 70c9c10
Show file tree
Hide file tree
Showing 20 changed files with 104 additions and 66 deletions.
20 changes: 10 additions & 10 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
/.bundle/
/.yardoc
/Gemfile.lock
/_yardoc/
/coverage/
/doc/
/pkg/
/spec/reports/
/tmp/
/vendor/bundle/
.bundle/
.yardoc
_yardoc/
coverage/
doc/
pkg/
spec/reports/
tmp/
vendor/bundle/
.byebug_history
2 changes: 1 addition & 1 deletion .rspec
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
--color
--format documentation
--require spec_helper
1 change: 1 addition & 0 deletions .ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2.5.0
7 changes: 7 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,10 @@ rvm:
- 2.3.6
- 2.2.9
- ruby-head

before_install:
- gem update --system

matrix:
allow_failures:
- rvm: ruby-head
10 changes: 10 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,13 @@ source 'https://rubygems.org'

# Specify your gem's dependencies in castle-middleware.gemspec
gemspec

group :development, :test do
gem 'byebug'
gem 'rake'
end

group :test do
gem 'coveralls_reborn'
gem 'rspec'
end
56 changes: 56 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
PATH
remote: .
specs:
castle-middleware (0.0.1)
castle-rb (< 4.0)

GEM
remote: https://rubygems.org/
specs:
byebug (10.0.0)
castle-rb (3.4.2)
coveralls_reborn (0.10.0)
json (~> 2.1)
simplecov (~> 0.15.1)
term-ansicolor (~> 1.3)
thor (~> 0.20.0)
tins (~> 1.6)
diff-lcs (1.3)
docile (1.1.5)
json (2.1.0)
rake (12.3.0)
rspec (3.7.0)
rspec-core (~> 3.7.0)
rspec-expectations (~> 3.7.0)
rspec-mocks (~> 3.7.0)
rspec-core (3.7.1)
rspec-support (~> 3.7.0)
rspec-expectations (3.7.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.7.0)
rspec-mocks (3.7.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.7.0)
rspec-support (3.7.1)
simplecov (0.15.1)
docile (~> 1.1.0)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.2)
term-ansicolor (1.6.0)
tins (~> 1.0)
thor (0.20.0)
tins (1.16.3)

PLATFORMS
ruby

DEPENDENCIES
byebug
castle-middleware!
coveralls_reborn
rake
rspec

BUNDLED WITH
1.16.1
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Ruby/Rack Middleware for Castle

[![Build Status](https://travis-ci.org/castle/castle-ruby-middleware.svg?branch=master)](https://travis-ci.org/castle/castle-ruby-middleware)
[![Coverage Status](https://coveralls.io/repos/github/castle/castle-ruby-middleware/badge.svg)](https://coveralls.io/github/castle/castle-ruby-middleware)
[![Build Status](https://travis-ci.org/castle/castle-ruby-middleware.svg?branch=master)](https://travis-ci.org/castle/castle-ruby-middleware)
[![Coverage Status](https://coveralls.io/repos/github/castle/castle-ruby-middleware/badge.svg)](https://coveralls.io/github/castle/castle-ruby-middleware)
[![Maintainability](https://api.codeclimate.com/v1/badges/f5473d28967df1edf3b7/maintainability)](https://codeclimate.com/github/castle/castle-ruby-middleware/maintainability)

**Protect your users from stolen credentials. [Castle](https://castle.io) detects and mitigates account takeovers in web and mobile apps**
Expand Down Expand Up @@ -139,16 +139,16 @@ to send requests in a background worker you can override the transport method
class CastleWorker
include Sidekiq::Worker

def perform(params, context)
::Castle::Middleware.track(params, context)
def perform(context, params)
::Castle::Middleware.track(context, params)
end
end

# initializers/castle.rb

Castle::Middleware.configure do |config|
config.transport = lambda do |params, context|
CastleWorker.perform_async(params, context)
config.transport = lambda do |context, params|
CastleWorker.perform_async(context, params)
end
end

Expand Down
7 changes: 2 additions & 5 deletions castle-middleware.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,7 @@ Gem::Specification.new do |spec|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
spec.require_paths = ['lib']

spec.add_development_dependency 'bundler'
spec.add_development_dependency 'rake'
spec.add_development_dependency 'rspec'
spec.add_development_dependency 'coveralls_reborn'
spec.required_ruby_version = '>= 2.2.6'

spec.add_dependency 'castle-rb', '~> 2.3.2'
spec.add_dependency 'castle-rb', '< 4.0'
end
9 changes: 4 additions & 5 deletions lib/castle/middleware.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,10 @@ def log(level, message)
Middleware.configuration.logger.public_send(level.to_s, message)
end

def track(params, context)
client_id, ip, headers = context.values_at(:client_id, :ip, :headers)
log(:debug, "[Castle] Tracking #{params[:name]}")
castle = ::Castle::API.new(client_id, ip, headers)
castle.request('track', params)
def track(context, options)
log(:debug, "[Castle] Tracking #{options[:name]}")
castle = ::Castle::API.new(context, options)
castle.track(options)
rescue Castle::Error => e
log(:warn, "[Castle] Can't send tracking request because #{e} exception")
call_error_handler(e)
Expand Down
19 changes: 3 additions & 16 deletions lib/castle/middleware/tracking.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ def call(env)

# Send request as configured
Middleware.configuration.transport.(
{
Castle::Client.to_context(req),
Castle::Client.to_options(
user_id: env['castle'].user_id,
traits: env['castle'].traits,
name: mapping.event,
properties: event_properties
},
self.class.extract_context(req, app_result)
)
)

app_result
Expand All @@ -58,19 +58,6 @@ def collect_event_properties(request_params, properties_map)

event_properties
end

def extract_context(req, app_result)
# Extract headers from request into a string
headers = ::Castle::Extractors::Headers.new(req).call

# Read client ID from cookies
client_id = ::Castle::Extractors::ClientId.new(req).call(app_result, '__cid')
{
headers: headers,
client_id: client_id,
ip: req.ip
}
end
end
end
end
Expand Down
4 changes: 2 additions & 2 deletions lib/castle/middleware/transport/sync.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ module Middleware
module Transport
# Send a track request to castle in sync mode
module Sync
def self.call(params, context)
Middleware.track(params, context)
def self.call(context, options)
Middleware.track(context, options)
end
end
end
Expand Down
2 changes: 0 additions & 2 deletions spec/castle/middleware/configuration_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# frozen_string_literal: true

require 'spec_helper'

describe Castle::Middleware::Configuration do
subject(:instance) { described_class.new }

Expand Down
2 changes: 0 additions & 2 deletions spec/castle/middleware/event_mapper_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# frozen_string_literal: true

require 'spec_helper'

describe Castle::Middleware::EventMapper do
let(:valid_config) do
{
Expand Down
2 changes: 0 additions & 2 deletions spec/castle/middleware/params_flattener_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# frozen_string_literal: true

require 'spec_helper'

describe Castle::Middleware::ParamsFlattener do
describe '::call' do
subject { described_class.(params) }
Expand Down
2 changes: 0 additions & 2 deletions spec/castle/middleware/request_config_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# frozen_string_literal: true

require 'spec_helper'

describe Castle::Middleware::RequestConfig do
subject(:instance) { described_class.new }

Expand Down
2 changes: 0 additions & 2 deletions spec/castle/middleware/sensor_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# frozen_string_literal: true

require 'spec_helper'

describe Castle::Middleware::Sensor do
let(:app) { double }
let(:env) { {} }
Expand Down
5 changes: 0 additions & 5 deletions spec/castle/middleware/tracking_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# frozen_string_literal: true

require 'spec_helper'

describe Castle::Middleware::Tracking do
let(:app) { double }
let(:env) { {} }
Expand Down Expand Up @@ -30,9 +28,6 @@ def params
end
end

allow(env).to receive(:[]).with('castle') do
::Castle::Middleware::RequestConfig.new
end
allow(app).to receive(:call).and_return(response)
end

Expand Down
2 changes: 0 additions & 2 deletions spec/castle/middleware/transport/sync_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# frozen_string_literal: true

require 'spec_helper'

describe Castle::Middleware::Transport::Sync do
describe '#call' do
let(:params) { spy }
Expand Down
4 changes: 1 addition & 3 deletions spec/castle/middleware_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# frozen_string_literal: true

require 'spec_helper'

describe Castle::Middleware do
describe '::configuration' do
subject(:config) { described_class.configuration }
Expand Down Expand Up @@ -69,7 +67,7 @@

context 'when request raises exception' do
before do
allow(api).to receive(:request).and_raise(::Castle::Error)
allow(api).to receive(:track).and_raise(::Castle::Error)
allow(described_class).to receive(:call_error_handler)

described_class.track({}, {})
Expand Down
2 changes: 1 addition & 1 deletion spec/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

require 'bundler/setup'
Bundler.setup
require 'byebug'

require 'coveralls'
Coveralls.wear!
Expand Down

0 comments on commit 70c9c10

Please sign in to comment.