sk_sdk 0.0.3 → 0.0.4
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 +3 -2
- data/VERSION +1 -1
- data/lib/sk_sdk/README_ArCli.rdoc +11 -10
- data/lib/sk_sdk/oauth.rb +24 -15
- data/sk_sdk.gemspec +2 -2
- data/spec/settings.yml +5 -5
- data/spec/sk_sdk/ar_cli_spec.rb +14 -11
- data/spec/sk_sdk/oauth_spec.rb +6 -6
- data/spec/sk_sdk/signed_request_spec.rb +2 -2
- data/spec/spec_helper.rb +12 -1
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -29,12 +29,13 @@ Handling oAuth related URL's and getting an access token
|
|
29
29
|
|
30
30
|
=== SignedRequest
|
31
31
|
|
32
|
-
Helping in de/encoding of signed_request
|
32
|
+
Helping in de/encoding of signed_request parameter available in canvas pages and
|
33
|
+
PubSub/Webhook callbacks.
|
33
34
|
|
34
35
|
=== API client
|
35
36
|
|
36
37
|
Create classes out if thin air to CRUD SalesKing object's using activeresource
|
37
|
-
README
|
38
|
+
{see README}[https://github.com/salesking/sk_sdk/blob/master/lib/sk_sdk/README_ArCli.rdoc]
|
38
39
|
|
39
40
|
== Usage
|
40
41
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
@@ -1,10 +1,11 @@
|
|
1
1
|
= SalesKing API Client
|
2
2
|
|
3
|
-
|
3
|
+
ActiveResource based SalesKing API client. This client does not uses oAuth2 yet,
|
4
|
+
it still uses HTTBasic Auth with username and password.
|
4
5
|
|
5
|
-
This does NOT rely on parsing the JSON Schema, since
|
6
|
-
|
7
|
-
json parsing issues.
|
6
|
+
This does NOT rely on parsing the JSON Schema, since ActiveResource creates the
|
7
|
+
Getter/Setter methods(less restrict). The client also adds some patches to AR to
|
8
|
+
fix json parsing issues.
|
8
9
|
|
9
10
|
== Install
|
10
11
|
|
@@ -20,20 +21,20 @@ Dependencies (gem's):
|
|
20
21
|
SalesKing's api interface is RESTful(mostly) and returns & accepts JSON data.
|
21
22
|
All resources such as clients, invoices, products can be accessed via URL's
|
22
23
|
through standard HTTP methods GET, POST, PUT and DELETE.
|
23
|
-
see available
|
24
|
+
see available objects and endpoints here:
|
24
25
|
https://github.com/salesking/sk_api_schema/tree/master/json
|
25
26
|
|
26
|
-
|
27
|
-
usage of the new classes pretty straight forward:
|
27
|
+
First create the classes:
|
28
28
|
|
29
29
|
require "sk_sdk/ar_client"
|
30
30
|
SK::SDK::ArCli.make(:client)
|
31
|
-
|
31
|
+
|
32
|
+
# Create class within namespace
|
32
33
|
module; King; end
|
33
34
|
SK::SDK::ArCli.make(:credit_note, King)
|
34
35
|
|
35
|
-
Now the classes are available
|
36
|
-
be set for each class separate
|
36
|
+
Now the classes are available they need connection settings first. Those Must
|
37
|
+
be set for each class separate.
|
37
38
|
|
38
39
|
[Client, CreditNote].each do |i|
|
39
40
|
i.send(:set_connection, {:site => 'my_sub.salesking.eu',
|
data/lib/sk_sdk/oauth.rb
CHANGED
@@ -1,19 +1,28 @@
|
|
1
1
|
require 'cgi'
|
2
2
|
require 'curb'
|
3
3
|
module SK::SDK
|
4
|
-
# Authenticate your SalesKing App using oAuth2. This class
|
4
|
+
# Authenticate your SalesKing App using oAuth2. This class provides helpers
|
5
|
+
# to create the token & dialog url and to get an access token
|
5
6
|
class Oauth
|
6
7
|
|
7
|
-
attr_reader :
|
8
|
+
attr_reader :id, :secret, :redirect_url
|
8
9
|
attr_accessor :sub_domain
|
9
10
|
|
11
|
+
# Setup a new oAuth connection requires you to set some default:
|
12
|
+
# === Params
|
13
|
+
# opts<Hash{String=>String}>:: options for your app
|
14
|
+
# == Options(opts)
|
15
|
+
# id:: oAuth app id received after registering your app in SalesKing
|
16
|
+
# secret:: oAuth app secret received after registering your app in SalesKing
|
17
|
+
# scope:: permission your app requests
|
18
|
+
# redirect_url:: permission your app requests
|
10
19
|
def initialize(opts)
|
11
|
-
@
|
12
|
-
@
|
13
|
-
@
|
14
|
-
@
|
15
|
-
@
|
16
|
-
@sk_url = opts['sk_url']
|
20
|
+
@id = opts['id']
|
21
|
+
@secret = opts['secret']
|
22
|
+
@scope = opts['scope']
|
23
|
+
@redirect_url = opts['redirect_url']
|
24
|
+
@canvas_slug = opts['canvas_slug']
|
25
|
+
@sk_url = opts['sk_url'] || "https://*.salesking.eu"
|
17
26
|
@sub_domain = opts['sub_domain']
|
18
27
|
end
|
19
28
|
|
@@ -22,9 +31,9 @@ module SK::SDK
|
|
22
31
|
# === Returns
|
23
32
|
# <String>:: URL with parameter
|
24
33
|
def auth_dialog
|
25
|
-
params = { :client_id => @
|
26
|
-
:redirect_uri=> @
|
27
|
-
:scope => @
|
34
|
+
params = { :client_id => @id,
|
35
|
+
:redirect_uri=> @redirect_url,
|
36
|
+
:scope => @scope }
|
28
37
|
"#{sk_url}/oauth/authorize?#{to_url_params(params)}"
|
29
38
|
end
|
30
39
|
|
@@ -32,7 +41,7 @@ module SK::SDK
|
|
32
41
|
# === Returns
|
33
42
|
# <String>:: URL
|
34
43
|
def sk_canvas_url
|
35
|
-
"#{sk_url}/app/#{@
|
44
|
+
"#{sk_url}/app/#{@canvas_slug}"
|
36
45
|
end
|
37
46
|
|
38
47
|
# URL to get the access_token, used in the second step after you have
|
@@ -42,9 +51,9 @@ module SK::SDK
|
|
42
51
|
# === Returns
|
43
52
|
# <String>:: Url with parameter
|
44
53
|
def token_url(code)
|
45
|
-
params = { :client_id => @
|
46
|
-
:client_secret => @
|
47
|
-
:redirect_uri => @
|
54
|
+
params = { :client_id => @id,
|
55
|
+
:client_secret => @secret,
|
56
|
+
:redirect_uri => @redirect_url,
|
48
57
|
:code => code }
|
49
58
|
"#{sk_url}/oauth/access_token?#{to_url_params(params)}"
|
50
59
|
end
|
data/sk_sdk.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{sk_sdk}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Georg Leciejewski"]
|
12
|
-
s.date = %q{2011-03-
|
12
|
+
s.date = %q{2011-03-28}
|
13
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
14
|
s.email = %q{gl@salesking.eu}
|
15
15
|
s.extra_rdoc_files = [
|
data/spec/settings.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
sk_url: http://*.horsts-lokal.local
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
canvas_slug: canvas-page
|
3
|
+
id: 2d83d570635ee19c
|
4
|
+
secret: eb4005858e4947e4228a12a6b7306ee0
|
5
|
+
redirect_url: http://localhorst:4567
|
6
|
+
scope: "api/payments:read api/invoices:read"
|
7
7
|
session_secret: very_long_random_to_encode_the_session
|
data/spec/sk_sdk/ar_cli_spec.rb
CHANGED
@@ -44,18 +44,21 @@ describe SK::SDK::ArCli, "make new class" do
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
|
47
|
+
if sk_available?
|
48
|
+
describe SK::SDK::ArCli, "with real connection" do
|
48
49
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
end
|
50
|
+
before :all do
|
51
|
+
SK::SDK::ArCli.make(:client) unless Object.const_defined?('Client')
|
52
|
+
Client.set_connection( CONNECTION )
|
53
|
+
end
|
54
54
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
55
|
+
it "should save" do
|
56
|
+
c = Client.new :organisation=>"Rack'n Roll"
|
57
|
+
c.save.should be_true
|
58
|
+
c.id.should_not be_empty
|
59
|
+
c.number.should_not be_empty
|
60
|
+
end
|
60
61
|
end
|
62
|
+
else
|
63
|
+
puts "Sorry your local SalesKing server ain't running, skipping real connections tests"
|
61
64
|
end
|
data/spec/sk_sdk/oauth_spec.rb
CHANGED
@@ -21,9 +21,9 @@ describe SK::SDK::Oauth, "in general" do
|
|
21
21
|
a = SK::SDK::Oauth.new(@set)
|
22
22
|
a.sub_domain = 'alki'
|
23
23
|
a.auth_dialog.should include "http://alki.horsts-lokal.local/oauth/authorize?"
|
24
|
-
a.auth_dialog.should include @set['
|
25
|
-
a.auth_dialog.should include CGI::escape @set['
|
26
|
-
a.auth_dialog.should include CGI::escape @set['
|
24
|
+
a.auth_dialog.should include @set['id']
|
25
|
+
a.auth_dialog.should include CGI::escape @set['redirect_url']
|
26
|
+
a.auth_dialog.should include CGI::escape @set['scope']
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should get sk_canvas_url" do
|
@@ -36,9 +36,9 @@ describe SK::SDK::Oauth, "in general" do
|
|
36
36
|
a = SK::SDK::Oauth.new(@set)
|
37
37
|
a.sub_domain = 'alki'
|
38
38
|
url = a.token_url('some-code')
|
39
|
-
url.should include @set['
|
40
|
-
url.should include @set['
|
41
|
-
url.should include CGI::escape @set['
|
39
|
+
url.should include @set['id']
|
40
|
+
url.should include @set['secret']
|
41
|
+
url.should include CGI::escape @set['redirect_url']
|
42
42
|
end
|
43
43
|
|
44
44
|
end
|
@@ -7,11 +7,11 @@ describe SK::SDK::SignedRequest, "in general" do
|
|
7
7
|
load_settings
|
8
8
|
# fake request
|
9
9
|
@param_hash = {'hello' =>'coder', 'algorithm' => 'HMAC-SHA256'}
|
10
|
-
@param = SK::SDK::SignedRequest.signed_param( ActiveSupport::JSON.encode(@param_hash), @set['
|
10
|
+
@param = SK::SDK::SignedRequest.signed_param( ActiveSupport::JSON.encode(@param_hash), @set['secret'] )
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should decode payload" do
|
14
|
-
a = SK::SDK::SignedRequest.new(@param, @set['
|
14
|
+
a = SK::SDK::SignedRequest.new(@param, @set['secret'])
|
15
15
|
a.data.should_not be_nil
|
16
16
|
a.payload.should_not be_nil
|
17
17
|
a.sign.should_not be_nil
|
data/spec/spec_helper.rb
CHANGED
@@ -21,4 +21,15 @@ CONNECTION = {
|
|
21
21
|
:user => "demo@salesking.eu",
|
22
22
|
:password => "demo",
|
23
23
|
:format => :json
|
24
|
-
} unless defined?(CONNECTION)
|
24
|
+
} unless defined?(CONNECTION)
|
25
|
+
|
26
|
+
def sk_available?
|
27
|
+
SK::SDK::ArCli.make(:user) unless Object.const_defined?('User')
|
28
|
+
User.set_connection( CONNECTION )
|
29
|
+
begin
|
30
|
+
User.get(:current)
|
31
|
+
rescue Errno::ECONNREFUSED #ActiveResource::ResourceNotFound => e
|
32
|
+
return false
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
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:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
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-
|
18
|
+
date: 2011-03-28 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|