mirror of
https://github.com/elyby/omniauth-ely.git
synced 2024-12-23 00:29:44 +05:30
Initial commit
This commit is contained in:
commit
d8abf6d0ba
18
.gitignore
vendored
Normal file
18
.gitignore
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
.idea
|
||||
*.gem
|
||||
*.rbc
|
||||
.bundle
|
||||
.config
|
||||
.yardoc
|
||||
Gemfile.lock
|
||||
InstalledFiles
|
||||
_yardoc
|
||||
coverage
|
||||
doc/
|
||||
lib/bundler/man
|
||||
/pkg
|
||||
rdoc
|
||||
spec/reports
|
||||
test/tmp
|
||||
test/version_tmp
|
||||
tmp
|
12
Gemfile
Normal file
12
Gemfile
Normal file
@ -0,0 +1,12 @@
|
||||
source 'http://rubygems.org'
|
||||
|
||||
# Specify your gem's dependencies in omniauth-ely.gemspec
|
||||
gemspec
|
||||
|
||||
group :development, :test do
|
||||
gem 'guard'
|
||||
gem 'guard-rspec'
|
||||
gem 'guard-bundler'
|
||||
gem 'rb-fsevent'
|
||||
gem 'growl'
|
||||
end
|
10
Guardfile
Normal file
10
Guardfile
Normal file
@ -0,0 +1,10 @@
|
||||
guard 'rspec', :version => 2 do
|
||||
watch(%r{^spec/.+_spec\.rb$})
|
||||
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
||||
watch('spec/spec_helper.rb') { "spec" }
|
||||
end
|
||||
|
||||
guard 'bundler' do
|
||||
watch('Gemfile')
|
||||
watch('omniauth-ely.gemspec')
|
||||
end
|
21
LICENSE.txt
Normal file
21
LICENSE.txt
Normal file
@ -0,0 +1,21 @@
|
||||
# The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Ely.by <team@ely.by>
|
||||
|
||||
> Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
> of this software and associated documentation files (the "Software"), to deal
|
||||
> in the Software without restriction, including without limitation the rights
|
||||
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
> copies of the Software, and to permit persons to whom the Software is
|
||||
> furnished to do so, subject to the following conditions:
|
||||
>
|
||||
> The above copyright notice and this permission notice shall be included in
|
||||
> all copies or substantial portions of the Software.
|
||||
>
|
||||
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
> THE SOFTWARE.
|
26
README.md
Normal file
26
README.md
Normal file
@ -0,0 +1,26 @@
|
||||
# OmniAuth Ely.by
|
||||
|
||||
This is the official OmniAuth strategy for authenticating to Ely.by. To
|
||||
use it, you'll need to sign up for an OAuth2 Application ID and Secret
|
||||
on the [Ely.by Account Applications Page](#).
|
||||
|
||||
## Usage
|
||||
|
||||
Add the strategy to your `Gemfile` alongside OmniAuth:
|
||||
|
||||
```ruby
|
||||
gem 'omniauth'
|
||||
gem 'omniauth-ely'
|
||||
```
|
||||
|
||||
Integrate this strategy to your OmniAuth middleware.
|
||||
|
||||
```ruby
|
||||
use OmniAuth::Builder do
|
||||
provider :ely, 'application_id', 'secret'
|
||||
end
|
||||
```
|
||||
|
||||
You need to add your key and secret.
|
||||
|
||||
For more information check the [OmniAuth wiki](https://github.com/intridea/omniauth/wiki).
|
8
Rakefile
Normal file
8
Rakefile
Normal file
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env rake
|
||||
require "bundler/gem_tasks"
|
||||
require 'rspec/core/rake_task'
|
||||
|
||||
RSpec::Core::RakeTask.new
|
||||
|
||||
desc 'Run specs'
|
||||
task :default => :spec
|
2
lib/omniauth-ely.rb
Normal file
2
lib/omniauth-ely.rb
Normal file
@ -0,0 +1,2 @@
|
||||
require 'omniauth-ely/version'
|
||||
require 'omniauth/strategies/ely'
|
5
lib/omniauth-ely/version.rb
Normal file
5
lib/omniauth-ely/version.rb
Normal file
@ -0,0 +1,5 @@
|
||||
module OmniAuth
|
||||
module Ely
|
||||
VERSION = '0.1.0'
|
||||
end
|
||||
end
|
49
lib/omniauth/strategies/ely.rb
Normal file
49
lib/omniauth/strategies/ely.rb
Normal file
@ -0,0 +1,49 @@
|
||||
require 'omniauth-oauth2'
|
||||
|
||||
module OmniAuth
|
||||
module Strategies
|
||||
class Ely < OmniAuth::Strategies::OAuth2
|
||||
option :client_options, {
|
||||
:site => 'https://account.ely.by',
|
||||
:authorize_url => 'https://account.ely.by/oauth2/v1/',
|
||||
:token_url => 'https://account.ely.by/api/oauth2/v1/token',
|
||||
}
|
||||
|
||||
uid { raw_info['id'].to_s }
|
||||
|
||||
info do
|
||||
{
|
||||
:name => raw_info['username'],
|
||||
:email => raw_info['email'],
|
||||
:urls => {
|
||||
:Ely => profile_url,
|
||||
:Skin => skin_url,
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
extra do
|
||||
{
|
||||
:raw_info => raw_info,
|
||||
:uuid => raw_info['uuid'],
|
||||
:registered_at => raw_info['registeredAt'],
|
||||
:preferred_language => raw_info['preferredLanguage']
|
||||
}
|
||||
end
|
||||
|
||||
def raw_info
|
||||
@raw_info ||= access_token.get('https://account.ely.by/api/account/v1/info').parsed
|
||||
end
|
||||
|
||||
def skin_url
|
||||
'http://skinsystem.ely.by/skins/' + raw_info['username'] + '.png'
|
||||
end
|
||||
|
||||
def profile_url
|
||||
'http://ely.by/u' + raw_info['id'].to_s
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
OmniAuth.config.add_camelization 'ely', 'Ely'
|
27
omniauth-ely.gemspec
Normal file
27
omniauth-ely.gemspec
Normal file
@ -0,0 +1,27 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
require File.expand_path('../lib/omniauth-ely/version', __FILE__)
|
||||
|
||||
Gem::Specification.new do |gem|
|
||||
gem.name = 'omniauth-ely'
|
||||
gem.version = OmniAuth::Ely::VERSION
|
||||
gem.homepage = 'https://github.com/elyby/omniauth-ely'
|
||||
gem.license = 'MIT'
|
||||
|
||||
gem.authors = ['Ely.by team', 'ErickSkrauch']
|
||||
gem.email = ['team@ely.by', 'erickskrauch@ely.by']
|
||||
gem.description = %q{Official OmniAuth strategy for Ely.by.}
|
||||
gem.summary = %q{Official OmniAuth strategy for Ely.by.}
|
||||
|
||||
gem.add_dependency 'omniauth', '~> 1.0'
|
||||
gem.add_dependency 'omniauth-oauth2', '>= 1.1.1', '< 2.0'
|
||||
gem.add_development_dependency 'rspec', '~> 2.7'
|
||||
gem.add_development_dependency 'rack-test'
|
||||
gem.add_development_dependency 'simplecov'
|
||||
gem.add_development_dependency 'webmock'
|
||||
|
||||
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
||||
gem.files = `git ls-files`.split("\n")
|
||||
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
||||
|
||||
gem.require_paths = ['lib']
|
||||
end
|
50
spec/omniauth/strategies/ely_spec.rb
Normal file
50
spec/omniauth/strategies/ely_spec.rb
Normal file
@ -0,0 +1,50 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe OmniAuth::Strategies::Ely do
|
||||
let(:access_token) { stub('AccessToken', :options => {}) }
|
||||
let(:parsed_response) { stub('ParsedResponse') }
|
||||
let(:response) { stub('Response', :parsed => parsed_response) }
|
||||
|
||||
subject do
|
||||
OmniAuth::Strategies::Ely.new({})
|
||||
end
|
||||
|
||||
before(:each) do
|
||||
subject.stub!(:access_token).and_return(access_token)
|
||||
end
|
||||
|
||||
context 'client options' do
|
||||
it 'should have correct site' do
|
||||
subject.options.client_options.site.should eq('https://account.ely.by')
|
||||
end
|
||||
|
||||
it 'should have correct authorize url' do
|
||||
subject.options.client_options.authorize_url.should eq('https://account.ely.by/oauth2/v1/')
|
||||
end
|
||||
|
||||
it 'should have correct token url' do
|
||||
subject.options.client_options.token_url.should eq('https://account.ely.by/api/oauth2/v1/token')
|
||||
end
|
||||
end
|
||||
|
||||
context '#raw_info' do
|
||||
it 'should use relative paths' do
|
||||
access_token.should_receive(:get).and_return(response)
|
||||
subject.raw_info.should eq(parsed_response)
|
||||
end
|
||||
|
||||
it 'should build valid profile link' do
|
||||
raw_info = Hash.new
|
||||
raw_info['id'] = 1
|
||||
subject.stub!(:raw_info).and_return(raw_info)
|
||||
subject.profile_url.should eq('http://ely.by/u1')
|
||||
end
|
||||
|
||||
it 'should build valid skin link' do
|
||||
raw_info = Hash.new
|
||||
raw_info['username'] = 'Steve'
|
||||
subject.stub!(:raw_info).and_return(raw_info)
|
||||
subject.skin_url.should eq('http://skinsystem.ely.by/skins/Steve.png')
|
||||
end
|
||||
end
|
||||
end
|
15
spec/spec_helper.rb
Normal file
15
spec/spec_helper.rb
Normal file
@ -0,0 +1,15 @@
|
||||
$:.unshift File.expand_path('..', __FILE__)
|
||||
$:.unshift File.expand_path('../../lib', __FILE__)
|
||||
require 'simplecov'
|
||||
SimpleCov.start
|
||||
require 'rspec'
|
||||
require 'rack/test'
|
||||
require 'webmock/rspec'
|
||||
require 'omniauth'
|
||||
require 'omniauth-ely'
|
||||
|
||||
RSpec.configure do |config|
|
||||
config.include WebMock::API
|
||||
config.include Rack::Test::Methods
|
||||
config.extend OmniAuth::Test::StrategyMacros, :type => :strategy
|
||||
end
|
Loading…
Reference in New Issue
Block a user