sk_sdk 0.0.1 → 0.0.2

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/README.rdoc CHANGED
@@ -7,7 +7,6 @@ Still in a very early stage
7
7
 
8
8
  == Install
9
9
 
10
-
11
10
  gem install sk_sdk
12
11
 
13
12
  Dependencies (gem's):
@@ -15,4 +14,11 @@ Dependencies (gem's):
15
14
  * activeresupport
16
15
  * curb
17
16
 
17
+ == Usage
18
+
19
+ The classes must be explicitly required
20
+
21
+ require 'sk_sdk/sign_req'
22
+ require 'sk_sdk/oauth'
23
+
18
24
  Copyright (c) 2011 Georg Leciejewski, released under the MIT license
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -1,11 +1,11 @@
1
1
  require 'base64'
2
2
  require "active_support/json"
3
3
  require 'openssl'
4
+
4
5
  module SK::SDK
5
6
  # Decode and validate signed requests which Salesking sends to canvas pages
6
7
  # and PubSub subscribers
7
8
  class SignedRequest
8
-
9
9
  attr_reader :signed_request, :app_secret, :data, :payload, :sign
10
10
 
11
11
  def initialize(signed_request, app_secret)
@@ -38,13 +38,35 @@ module SK::SDK
38
38
  @sign == OpenSSL::HMAC.hexdigest('sha256', @app_secret, @payload)
39
39
  end
40
40
 
41
- def encode(str)
41
+ # Base64 url encode a string and sign it using the given secret. The hmac
42
+ # signature and the encoded string are joined by . and returned
43
+ #
44
+ # === Parameter
45
+ # str<String>:: the string to encode
46
+ # secret<String>:: the string used to create the signature
47
+ # === Returns
48
+ # <String>:: hmac-sign.encoded-string
49
+ def self.signed_param(str, secret)
42
50
  # base65 url encode the json, remove trailing-padding =
43
- enc_str = [str].pack('m').tr('+/','-_').gsub("\n",'').gsub(/=+$/, '' )
51
+ enc_str = base64_url_encode(str)
44
52
  # create hmac signature
45
- hmac_sig = OpenSSL::HMAC.hexdigest('sha256',@app_secret, enc_str)
53
+ hmac_sig = OpenSSL::HMAC.hexdigest('sha256',secret, enc_str)
46
54
  # glue together and return
47
55
  [hmac_sig, enc_str].join('.')
48
56
  end
57
+
58
+ # Base64 url encode a string:
59
+ # NO padding = is added
60
+ # + is replaced by -
61
+ # / is replaced by _
62
+ #
63
+ # === Parameter
64
+ # str<String>:: the string to encode
65
+ # === Returns
66
+ # <String>:: base64url-encoded
67
+ def self.base64_url_encode(str)
68
+ [str].pack('m').tr('+/','-_').gsub("\n",'').gsub(/=+$/, '' )
69
+ end
70
+
49
71
  end
50
72
  end
data/sk_sdk.gemspec ADDED
@@ -0,0 +1,55 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{sk_sdk}
8
+ s.version = "0.0.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Georg Leciejewski"]
12
+ s.date = %q{2011-03-10}
13
+ s.description = %q{Connect your business world with SalesKing. This gem gives ruby developers a jump-start for building SalesKing Business Apps. Under the hood it provides classes to handle oAuth, make RESTfull API requests and parses JSON Schema }
14
+ s.email = %q{gl@salesking.eu}
15
+ s.extra_rdoc_files = [
16
+ "README.rdoc"
17
+ ]
18
+ s.files = [
19
+ "MIT-LICENSE",
20
+ "README.rdoc",
21
+ "Rakefile",
22
+ "VERSION",
23
+ "lib/sk_sdk.rb",
24
+ "lib/sk_sdk/oauth.rb",
25
+ "lib/sk_sdk/signed_request.rb",
26
+ "sk_sdk.gemspec",
27
+ "spec/oauth_spec.rb"
28
+ ]
29
+ s.homepage = %q{http://github.com/salesking/sk_sdk}
30
+ s.require_paths = ["lib"]
31
+ s.rubygems_version = %q{1.5.2}
32
+ s.summary = %q{SalesKing SDK Ruby}
33
+ s.test_files = [
34
+ "spec/oauth_spec.rb"
35
+ ]
36
+
37
+ if s.respond_to? :specification_version then
38
+ s.specification_version = 3
39
+
40
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
41
+ s.add_runtime_dependency(%q<curb>, [">= 0"])
42
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
43
+ s.add_development_dependency(%q<rspec>, [">= 0"])
44
+ else
45
+ s.add_dependency(%q<curb>, [">= 0"])
46
+ s.add_dependency(%q<activesupport>, [">= 0"])
47
+ s.add_dependency(%q<rspec>, [">= 0"])
48
+ end
49
+ else
50
+ s.add_dependency(%q<curb>, [">= 0"])
51
+ s.add_dependency(%q<activesupport>, [">= 0"])
52
+ s.add_dependency(%q<rspec>, [">= 0"])
53
+ end
54
+ end
55
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sk_sdk
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Georg Leciejewski
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-09 00:00:00 +01:00
18
+ date: 2011-03-10 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -76,6 +76,7 @@ files:
76
76
  - lib/sk_sdk.rb
77
77
  - lib/sk_sdk/oauth.rb
78
78
  - lib/sk_sdk/signed_request.rb
79
+ - sk_sdk.gemspec
79
80
  - spec/oauth_spec.rb
80
81
  has_rdoc: true
81
82
  homepage: http://github.com/salesking/sk_sdk