loginradius 0.1.1

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.
data/Manifest ADDED
@@ -0,0 +1,4 @@
1
+ README.rdoc
2
+ Rakefile
3
+ lib/loginradius.rb
4
+ Manifest
data/README.rdoc ADDED
@@ -0,0 +1,22 @@
1
+ = LoginRadius
2
+
3
+ Rails gem which enables token authentication against loginradius.com
4
+
5
+ == Example usage
6
+
7
+ class SessionsController < ApplicationController
8
+ protect_from_forgery :except => :callback
9
+
10
+ def callback
11
+ logger.debug "received LoginRadius callback!"
12
+
13
+ # Initialize the LoginRadius session - API key
14
+ loginradius = LoginRadius::LoginRadiusSession.new "INSERT YOUR KEY HERE"
15
+
16
+ # Authenticate the LoginRadius session vs. the token being passed to our app
17
+ if loginradius.authenticate_token? params[:token], params[:lrid]
18
+ logger.debug "successfully authenticated LoginRadius"
19
+ logger.debug loginradius.data
20
+
21
+ # Now need to create user record or login user
22
+ ...
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+
5
+ Echoe.new('loginradius', '0.1.1') do |p|
6
+ p.description = "Enables token authentication against loginradius.com"
7
+ p.url = "http://github.com/sicruse/loginradius"
8
+ p.author = "Si Cruse"
9
+ p.email = "si@mindcultivator.com"
10
+ p.ignore_pattern = ["tmp/*", "script/*"]
11
+ p.development_dependencies = []
12
+ end
13
+
14
+ Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
@@ -0,0 +1,72 @@
1
+ #
2
+ # loginradius.rb
3
+ # loginradius
4
+ #
5
+ # Created by Si Cruse on 2012-03-29.
6
+ # Copyright 2012 Si Cruse. All rights reserved.
7
+ #
8
+
9
+ require 'cgi'
10
+ require 'uri'
11
+ require 'net/http'
12
+ require 'net/https'
13
+ require 'json'
14
+
15
+ module LoginRadius
16
+
17
+ class LoginRadiusException < StandardError
18
+ attr_reader :http_response
19
+ def initialize(http_response)
20
+ @http_response = http_response
21
+ end
22
+ end
23
+
24
+ class LoginRadiusSession
25
+ attr_reader :api_key, :base_url, :data
26
+
27
+ def initialize(api_key, base_url = "http://hub.loginradius.com")
28
+ @api_key = api_key
29
+ @base_url = base_url.sub(/\/*$/, '')
30
+ @data = ""
31
+ end
32
+
33
+ def authenticate_token?(token, id)
34
+ @data = api_call 'userprofile', :token => token
35
+ result = (@data['ID'].to_s == id.to_s)
36
+ end
37
+
38
+ private
39
+
40
+ def api_call(method_name, partial_query)
41
+ query = partial_query.dup
42
+ query['apisecrete'] = @api_key
43
+
44
+ data = query.map { |k,v|
45
+ "#{CGI::escape k.to_s}=#{CGI::escape v.to_s}"
46
+ }.join('&')
47
+
48
+ path = "#{@base_url}/#{method_name}.ashx/?" + data
49
+ url = URI.parse(path)
50
+
51
+ http = Net::HTTP.new(url.host, url.port)
52
+ if url.scheme == 'https'
53
+ http.use_ssl = true
54
+ end
55
+
56
+ resp = Net::HTTP.get_response(URI.parse(path))
57
+
58
+ if resp.response.code == '200'
59
+ begin
60
+ data = JSON.parse(resp.response.body)
61
+ rescue JSON::ParserError => err
62
+ raise LoginRadiusRException.new(resp.response), 'LoginRadiusSession: Unable to parse JSON response'
63
+ end
64
+ else
65
+ raise LoginRadiusException.new(resp.response), "LoginRadiusSession: Unexpected HTTP status code from server: #{resp.response.code}"
66
+ end
67
+
68
+ return data
69
+ end
70
+ end
71
+
72
+ end
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "loginradius"
5
+ s.version = "0.1.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Si Cruse"]
9
+ s.date = "2012-03-29"
10
+ s.description = "Enables token authentication against loginradius.com"
11
+ s.email = "si@mindcultivator.com"
12
+ s.extra_rdoc_files = ["README.rdoc", "lib/loginradius.rb"]
13
+ s.files = ["README.rdoc", "Rakefile", "lib/loginradius.rb", "Manifest", "loginradius.gemspec"]
14
+ s.homepage = "http://github.com/sicruse/loginradius"
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Loginradius", "--main", "README.rdoc"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = "loginradius"
18
+ s.rubygems_version = "1.8.21"
19
+ s.summary = "Enables token authentication against loginradius.com"
20
+
21
+ if s.respond_to? :specification_version then
22
+ s.specification_version = 3
23
+
24
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
25
+ else
26
+ end
27
+ else
28
+ end
29
+ end
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: loginradius
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Si Cruse
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-29 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Enables token authentication against loginradius.com
15
+ email: si@mindcultivator.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files:
19
+ - README.rdoc
20
+ - lib/loginradius.rb
21
+ files:
22
+ - README.rdoc
23
+ - Rakefile
24
+ - lib/loginradius.rb
25
+ - Manifest
26
+ - loginradius.gemspec
27
+ homepage: http://github.com/sicruse/loginradius
28
+ licenses: []
29
+ post_install_message:
30
+ rdoc_options:
31
+ - --line-numbers
32
+ - --inline-source
33
+ - --title
34
+ - Loginradius
35
+ - --main
36
+ - README.rdoc
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - ! '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '1.2'
51
+ requirements: []
52
+ rubyforge_project: loginradius
53
+ rubygems_version: 1.8.21
54
+ signing_key:
55
+ specification_version: 3
56
+ summary: Enables token authentication against loginradius.com
57
+ test_files: []