prooflink_connect 0.0.14 → 0.0.15

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/Gemfile.lock CHANGED
@@ -1,25 +1,21 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- prooflink_connect (0.0.7)
5
- activeresource
4
+ prooflink_connect (0.0.14)
5
+ activesupport
6
+ httparty
6
7
  json
7
8
 
8
9
  GEM
9
10
  remote: http://rubygems.org/
10
11
  specs:
11
- activemodel (3.0.7)
12
- activesupport (= 3.0.7)
13
- builder (~> 2.1.2)
14
- i18n (~> 0.5.0)
15
- activeresource (3.0.7)
16
- activemodel (= 3.0.7)
17
- activesupport (= 3.0.7)
18
- activesupport (3.0.7)
19
- builder (2.1.2)
12
+ activesupport (3.0.9)
13
+ addressable (2.2.6)
14
+ crack (0.1.8)
20
15
  diff-lcs (1.1.2)
21
- i18n (0.5.0)
22
- json (1.5.1)
16
+ httparty (0.7.8)
17
+ crack (= 0.1.8)
18
+ json (1.5.3)
23
19
  rspec (2.4.0)
24
20
  rspec-core (~> 2.4.0)
25
21
  rspec-expectations (~> 2.4.0)
@@ -28,6 +24,9 @@ GEM
28
24
  rspec-expectations (2.4.0)
29
25
  diff-lcs (~> 1.1.2)
30
26
  rspec-mocks (2.4.0)
27
+ webmock (1.6.2)
28
+ addressable (>= 2.2.2)
29
+ crack (>= 0.1.7)
31
30
 
32
31
  PLATFORMS
33
32
  ruby
@@ -36,3 +35,4 @@ DEPENDENCIES
36
35
  bundler (>= 1.0.0)
37
36
  prooflink_connect!
38
37
  rspec
38
+ webmock
@@ -4,27 +4,29 @@ module ProoflinkConnect
4
4
  autoload :PortableContacts, "prooflink_connect/portable_contacts"
5
5
  autoload :ShareButton, "prooflink_connect/share_button"
6
6
  autoload :Invite, "prooflink_connect/invite"
7
+ autoload :Share, "prooflink_connect/share"
7
8
 
8
9
  def self.config
9
- Configuration.instance
10
+ @configuration ||= Configuration.new
10
11
  end
11
12
 
12
13
  def self.configure
13
14
  yield config
14
15
  end
15
16
 
16
- def self.embedded(options = {})
17
+ def self.embedded(options = {}, config = ProoflinkConnect.config)
17
18
  options = {
18
- :subdomain => ProoflinkConnect.config.subdomain,
19
+ :subdomain => config.subdomain,
19
20
  :token_url => 'https://example.com/auth/callbacks',
20
21
  :forced_connect => '0',
21
22
  :embed_forms => '0',
22
23
  :width => 520,
23
24
  :height => 250}.merge(options)
24
- domain_part = [options[:subdomain], ProoflinkConnect.config.provider_endpoint].compact.join(".")
25
+ domain_part = [options[:subdomain], config.provider_endpoint].compact.join(".")
25
26
  path_part = [options[:locale], 'authentications', 'embedded'].compact.join("/")
26
27
  query_part = "token_url=#{options[:token_url]}&forced_connect=#{options[:forced_connect]}&embed_forms=#{options[:embed_forms]}"
27
- frame_url = "#{ProoflinkConnect.config.protocol}://#{domain_part}/#{path_part}?#{query_part}"
28
- "<iframe src='#{frame_url}' style='width: #{options[:width]}px; height: #{options[:height]}px; border: 0;display: block' frameborder='0' allowTransparency='true'></iframe>".html_safe
28
+ frame_url = "#{config.protocol}://#{domain_part}/#{path_part}?#{query_part}"
29
+ html = "<iframe src='#{frame_url}' style='width: #{options[:width]}px; height: #{options[:height]}px; border: 0;display: block' frameborder='0' allowTransparency='true'></iframe>"
30
+ html.respond_to?(:html_safe) ? html.html_safe : html
29
31
  end
30
32
  end
@@ -1,19 +1,28 @@
1
+ require 'cgi'
2
+
1
3
  module ProoflinkConnect
2
4
  class Assertion
3
5
  require 'net/http'
4
- attr_accessor :token
6
+ attr_reader :token
5
7
 
6
8
  def initialize(token)
7
9
  @token = token
8
10
  end
9
11
 
10
- def request_auth_info
11
- url = URI.parse("#{ProoflinkConnect.config.protocol}://#{[ProoflinkConnect.config.subdomain, ProoflinkConnect.config.provider_endpoint].compact.join(".")}/client_assertions/auth_info/")
12
- # query = partial_query.dup
12
+ def auth_info(configuration = ProoflinkConnect.config)
13
+ PortableContacts::Person.new(request_auth_info(configuration)['entry'])
14
+ end
15
+
16
+ private
17
+
18
+ def request_auth_info(configuration)
19
+ configuration.validate!.inspect
20
+
21
+ url = URI.parse(configuration.base_uri + "/client_assertions/auth_info/")
13
22
  query = {}
14
23
  query['format'] = 'json'
15
- query['token'] = @token
16
- query['api_key'] = ProoflinkConnect.config.api_key
24
+ query['token'] = token
25
+ query['api_key'] = configuration.api_key
17
26
 
18
27
  http = Net::HTTP.new(url.host, url.port)
19
28
 
@@ -29,17 +38,13 @@ module ProoflinkConnect
29
38
  begin
30
39
  data = JSON.parse(resp.body)
31
40
  rescue JSON::ParserError => err
32
- raise AuthinfoException.new(resp), 'Unable to parse JSON response' + resp.body.inspect
41
+ raise AuthinfoException.new(resp), "Unable to parse JSON response: #{resp.body.inspect}"
33
42
  end
34
43
  else
35
44
  raise AuthinfoException, "Unexpected HTTP status code from server: #{resp.code}"
36
45
  end
37
46
  end
38
47
 
39
- def auth_info
40
- return PortableContacts::Person.new(request_auth_info['entry'])
41
- end
42
-
43
48
  class AuthinfoException < ::StandardError
44
49
  end
45
50
  end
@@ -1,9 +1,10 @@
1
+ require 'singleton'
2
+
1
3
  module ProoflinkConnect
2
4
  class Configuration
3
- include Singleton
4
5
 
5
6
  @@defaults = {
6
- :provider_endpoint => "prooflink.local",
7
+ :provider_endpoint => "prooflink.com",
7
8
  :subdomain => "example",
8
9
  :protocol => "https"
9
10
  }
@@ -13,5 +14,16 @@ module ProoflinkConnect
13
14
  end
14
15
 
15
16
  attr_accessor :provider_endpoint, :subdomain, :api_key, :protocol
17
+
18
+ def validate!
19
+ raise InvalidConfigurationError if [:provider_endpoint, :subdomain, :api_key, :protocol].any?{|option|send(option).blank?}
20
+ end
21
+
22
+ def base_uri
23
+ "#{protocol}://#{[subdomain, provider_endpoint].compact.join(".")}"
24
+ end
25
+
26
+ class InvalidConfigurationError < ::StandardError
27
+ end
16
28
  end
17
29
  end
@@ -1,29 +1,28 @@
1
- class ProoflinkConnect::Invite < ActiveResource::Base
2
- class << self
3
- attr_accessor :api_key
1
+ require 'httparty'
2
+ require "active_support/core_ext/hash/keys"
4
3
 
5
- def site
6
- URI.parse("#{ProoflinkConnect.config.protocol}://#{ProoflinkConnect.config.subdomain}.#{ProoflinkConnect.config.provider_endpoint}/")
7
- end
4
+ class ProoflinkConnect::Invite
5
+ attr_reader :configuration, :attributes
6
+ attr_accessor :locale
8
7
 
9
- def api_key
10
- ProoflinkConnect.config.api_key
11
- end
8
+ def initialize(attributes, configuration = ProoflinkConnect.config)
9
+ @attributes = attributes.stringify_keys
10
+ @configuration = configuration
12
11
  end
13
12
 
14
- attr_accessor :locale
13
+ def save
14
+ uri = configuration.base_uri + "/invites"
15
+ params = { "invite" => attributes, "api_key" => configuration.api_key, "locale" => locale || 'nl' }
16
+ response = HTTParty.post(uri, :body => params)
15
17
 
16
- self.site = self.site
17
- self.element_name = 'invite'
18
- self.format = :json
18
+ if response.headers["status"] == "200"
19
+ self.attributes.merge! JSON.parse(response.body)["entry"].stringify_keys
20
+ end
19
21
 
20
- def person
21
- ProoflinkConnect::PortableContacts::Person.new(self.entry.attributes)
22
+ return !attributes["id"].nil?
22
23
  end
23
24
 
24
- def save
25
- prefix_options[:api_key] = self.class.api_key
26
- prefix_options[:locale] = self.locale||"nl"
27
- super
25
+ def person
26
+ ProoflinkConnect::PortableContacts::Person.new(attributes)
28
27
  end
29
- end
28
+ end
@@ -0,0 +1,13 @@
1
+ require 'httparty'
2
+
3
+ module ProoflinkConnect
4
+ class Share
5
+ def self.post(transaction, message)
6
+ uri = ProoflinkConnect.config.base_uri + "/shares/post_share_transaction"
7
+ api_key = ProoflinkConnect.config.api_key
8
+ params = {"api_key" => api_key, "transaction" => transaction,
9
+ "message" => message, "format" => "json"}
10
+ response = HTTParty.post(uri, :body => params)
11
+ end
12
+ end
13
+ end
@@ -9,7 +9,8 @@ module ProoflinkConnect
9
9
  end
10
10
 
11
11
  def to_html
12
- "<iframe src='#{ProoflinkConnect.config.protocol}://#{[ProoflinkConnect.config.subdomain, ProoflinkConnect.config.provider_endpoint].compact.join(".")}/#{@options[:locale]||"en"}/shares/button?message=#{CGI.escape @message}' style='width: 100px; height: 100px; border: 0;display: block' frameborder='0'></iframe>".html_safe
12
+ html = "<iframe src='#{ProoflinkConnect.config.protocol}://#{[ProoflinkConnect.config.subdomain, ProoflinkConnect.config.provider_endpoint].compact.join(".")}/#{@options[:locale]||"en"}/shares/button?message=#{CGI.escape @message}' style='width: 102px; height: 100px; border: 0;display: block' frameborder='0'></iframe>"
13
+ html.respond_to?(:html_safe) ? html.html_safe : html
13
14
  end
14
15
  end
15
16
  end
@@ -1,3 +1,3 @@
1
1
  module ProoflinkConnect
2
- VERSION = "0.0.14"
2
+ VERSION = "0.0.15"
3
3
  end
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Chiel Wester", "Jeroen Bulters"]
9
9
  s.email = ["chiel.wester@holder.nl", "jeroen@bulte.rs"]
10
- s.homepage = "https://github.com/chielwester/prooflink_connect"
10
+ s.homepage = "https://github.com/prooflink/prooflink_connect"
11
11
  s.summary = "Make a connection to the prooflink connect api"
12
12
  s.description = "Make a connection to the prooflink connect api for single sign on authentication"
13
13
 
@@ -15,10 +15,12 @@ Gem::Specification.new do |s|
15
15
  s.rubyforge_project = "prooflink_connect"
16
16
 
17
17
  s.add_dependency 'json'
18
- s.add_dependency 'activeresource'
18
+ s.add_dependency 'httparty'
19
+ s.add_dependency 'activesupport'
19
20
 
20
21
  s.add_development_dependency "bundler", ">= 1.0.0"
21
22
  s.add_development_dependency "rspec"
23
+ s.add_development_dependency "webmock"
22
24
 
23
25
  s.files = `git ls-files`.split("\n")
24
26
  s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe ProoflinkConnect::Share do
4
+ before do
5
+ ProoflinkConnect.configure do |config|
6
+ config.api_key = "1234"
7
+ end
8
+ end
9
+
10
+ it "posts a message to Prooflink" do
11
+ stub_request(:post, "https://example.prooflink.com/shares/post_share_transaction").
12
+ with(:body => "format=json&api_key=1234&message=This%20is%20pretty%20awesome&transaction=pl1").
13
+ to_return(:status => 200, :body => "", :headers => {})
14
+ ProoflinkConnect::Share.post("pl1", "This is pretty awesome")
15
+ end
16
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,12 +1,3 @@
1
- require 'rubygems'
1
+ require File.expand_path('../../lib/prooflink_connect', __FILE__)
2
2
  require 'rspec'
3
- require 'rspec/autorun'
4
- # require 'rack/test'
5
- # require 'webmock/rspec'
6
-
7
- # include Rack::Test::Methods
8
- # include WebMock
9
-
10
- require 'prooflink_connect'
11
-
12
- # WebMock.disable_net_connect!
3
+ require 'webmock/rspec'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prooflink_connect
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 14
10
- version: 0.0.14
9
+ - 15
10
+ version: 0.0.15
11
11
  platform: ruby
12
12
  authors:
13
13
  - Chiel Wester
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-05-27 00:00:00 +02:00
19
+ date: 2011-08-08 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -34,7 +34,7 @@ dependencies:
34
34
  type: :runtime
35
35
  version_requirements: *id001
36
36
  - !ruby/object:Gem::Dependency
37
- name: activeresource
37
+ name: httparty
38
38
  prerelease: false
39
39
  requirement: &id002 !ruby/object:Gem::Requirement
40
40
  none: false
@@ -48,9 +48,23 @@ dependencies:
48
48
  type: :runtime
49
49
  version_requirements: *id002
50
50
  - !ruby/object:Gem::Dependency
51
- name: bundler
51
+ name: activesupport
52
52
  prerelease: false
53
53
  requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ type: :runtime
63
+ version_requirements: *id003
64
+ - !ruby/object:Gem::Dependency
65
+ name: bundler
66
+ prerelease: false
67
+ requirement: &id004 !ruby/object:Gem::Requirement
54
68
  none: false
55
69
  requirements:
56
70
  - - ">="
@@ -62,11 +76,11 @@ dependencies:
62
76
  - 0
63
77
  version: 1.0.0
64
78
  type: :development
65
- version_requirements: *id003
79
+ version_requirements: *id004
66
80
  - !ruby/object:Gem::Dependency
67
81
  name: rspec
68
82
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
83
+ requirement: &id005 !ruby/object:Gem::Requirement
70
84
  none: false
71
85
  requirements:
72
86
  - - ">="
@@ -76,7 +90,21 @@ dependencies:
76
90
  - 0
77
91
  version: "0"
78
92
  type: :development
79
- version_requirements: *id004
93
+ version_requirements: *id005
94
+ - !ruby/object:Gem::Dependency
95
+ name: webmock
96
+ prerelease: false
97
+ requirement: &id006 !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ hash: 3
103
+ segments:
104
+ - 0
105
+ version: "0"
106
+ type: :development
107
+ version_requirements: *id006
80
108
  description: Make a connection to the prooflink connect api for single sign on authentication
81
109
  email:
82
110
  - chiel.wester@holder.nl
@@ -100,13 +128,15 @@ files:
100
128
  - lib/prooflink_connect/portable_contacts.rb
101
129
  - lib/prooflink_connect/portable_contacts/collection.rb
102
130
  - lib/prooflink_connect/portable_contacts/person.rb
131
+ - lib/prooflink_connect/share.rb
103
132
  - lib/prooflink_connect/share_button.rb
104
133
  - lib/prooflink_connect/version.rb
105
134
  - prooflink_connect.gemspec
135
+ - spec/prooflink_connect/share_spec.rb
106
136
  - spec/prooflink_connect_spec.rb
107
137
  - spec/spec_helper.rb
108
138
  has_rdoc: true
109
- homepage: https://github.com/chielwester/prooflink_connect
139
+ homepage: https://github.com/prooflink/prooflink_connect
110
140
  licenses: []
111
141
 
112
142
  post_install_message: