licensario 0.0.2 → 0.0.3
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.md +23 -23
- data/lib/licensario/api.rb +11 -4
- data/lib/licensario/base.rb +3 -2
- data/lib/licensario/user.rb +6 -0
- data/lib/licensario/version.rb +1 -1
- data/spec/licensario_spec.rb +3 -0
- data/spec/manual_tests.rb +4 -1
- metadata +14 -14
data/README.md
CHANGED
@@ -31,34 +31,34 @@ base API class which you need to configure before start working. These are the s
|
|
31
31
|
|
32
32
|
1. **Configure**: first you need to setup your connection to Licensario's API server. You can do so by:
|
33
33
|
|
34
|
-
```ruby
|
35
|
-
|
36
|
-
```
|
34
|
+
```ruby
|
35
|
+
Licensario::Base.establish_connection(key: "MY_API_KEY" , secret: "MY_API_SECRET" )
|
36
|
+
```
|
37
37
|
|
38
38
|
2. **Use**: now you can start playing with Licensario's interface classes. This gem provides you with four
|
39
39
|
public accessible ones: *Licensario::User*, *Licensario::License*, *Licensario::LicensedResource* and *Licensario::LicensedFeature*.
|
40
40
|
You can now do cool things like:
|
41
41
|
|
42
|
-
```ruby
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
```
|
42
|
+
```ruby
|
43
|
+
# Initialize an User
|
44
|
+
user = Licensario::User.new(external_user_id: 1, email: 'some@user.net')
|
45
|
+
|
46
|
+
# Retrieve this user's Licenses
|
47
|
+
feature_ids = [1..100]
|
48
|
+
payment_plan_ids = [1..100]
|
49
|
+
licenses = user.get_licenses(feature_ids, payment_plan_ids)
|
50
|
+
|
51
|
+
# Get the current amount available of a given Feature
|
52
|
+
feature_id = '19273812'
|
53
|
+
payment_plan_id = '123987128'
|
54
|
+
feature_amount = user.get_available_feature_amount(feature_id, payment_plan_id)
|
55
|
+
|
56
|
+
# Increment the previous feature's usage (i.e. diminish the available amount)
|
57
|
+
user.increment_feature_usage(1, feature_id, payment_plan_id)
|
58
|
+
|
59
|
+
# Create a new License for this User
|
60
|
+
new_license = user.create_license(payment_plan_id)
|
61
|
+
```
|
62
62
|
|
63
63
|
3. **Rock'n'Roll'**: Now that you have the hang of it, be sure to take a look at the [RDocs](http://rdoc.info/github/marcelow/licensario/master/frames) for more detailed information
|
64
64
|
on the finer aspects of the gem. Don't worry, we made sure to make it super easy to get you up and running in no time.
|
data/lib/licensario/api.rb
CHANGED
@@ -3,10 +3,10 @@
|
|
3
3
|
module Licensario
|
4
4
|
class API
|
5
5
|
|
6
|
-
attr_reader :key, :secret, :base_url
|
6
|
+
attr_reader :key, :secret, :base_url, :debug
|
7
7
|
|
8
|
-
def initialize(key, secret, base_url = 'users.licensario.com', use_ssl = true)
|
9
|
-
@key, @secret, @base_url, @use_ssl = key, secret, base_url, use_ssl
|
8
|
+
def initialize(key, secret, base_url = 'users.licensario.com', use_ssl = true, debug = false)
|
9
|
+
@key, @secret, @base_url, @use_ssl, @debug = key, secret, base_url, use_ssl, debug
|
10
10
|
end
|
11
11
|
|
12
12
|
# Forms the appropriate request URL
|
@@ -19,7 +19,6 @@ module Licensario
|
|
19
19
|
begin
|
20
20
|
uri = URI.parse(request_url(resource))
|
21
21
|
uri.query = URI.encode_www_form(params) if !params.empty? and method == :get
|
22
|
-
puts "#{method} - #{uri.request_uri}"
|
23
22
|
http = Net::HTTP.new(uri.host, uri.port)
|
24
23
|
http.use_ssl = @use_ssl
|
25
24
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE if @use_ssl
|
@@ -40,6 +39,14 @@ module Licensario
|
|
40
39
|
request['LCNS_DISABLE_SIGN'] = 'true'
|
41
40
|
request.set_form_data(params) if !params.empty? and [:post,:put].include?(method)
|
42
41
|
response = http.request(request)
|
42
|
+
if @debug
|
43
|
+
puts "################################"
|
44
|
+
puts "REQUEST: #{method.upcase} #{uri.request_uri}"
|
45
|
+
puts "PARAMETERS: #{params}" if !params.empty? and [:post,:put].include?(method)
|
46
|
+
puts "RESPONSE CODE: #{response.code}"
|
47
|
+
puts "BODY:\n#{response.body}"
|
48
|
+
puts "================================"
|
49
|
+
end
|
43
50
|
return { body: response.body, status: response.code.to_i }
|
44
51
|
rescue
|
45
52
|
return { body: nil, status: nil }
|
data/lib/licensario/base.rb
CHANGED
@@ -20,9 +20,10 @@ module Licensario
|
|
20
20
|
def self.establish_connection(options = {})
|
21
21
|
@options = {
|
22
22
|
base_url: 'users.licensario.com',
|
23
|
-
use_ssl: true
|
23
|
+
use_ssl: true,
|
24
|
+
debug: false
|
24
25
|
}.merge(options)
|
25
|
-
@@api = Licensario::API.new(@options[:key], @options[:secret], @options[:base_url], @options[:use_ssl])
|
26
|
+
@@api = Licensario::API.new(@options[:key], @options[:secret], @options[:base_url], @options[:use_ssl], @options[:debug])
|
26
27
|
end
|
27
28
|
|
28
29
|
def self.api
|
data/lib/licensario/user.rb
CHANGED
@@ -51,6 +51,12 @@ module Licensario
|
|
51
51
|
return res[:status] == 200
|
52
52
|
end
|
53
53
|
|
54
|
+
# Update a given Feature usage
|
55
|
+
def update_feature_usage(amount, feature_id, payment_plan_id = nil)
|
56
|
+
res = @@api.do_request(:put, build_url("/features/#{feature_id}/alloc"), { 'amount' => amount.to_s, 'paymentPlanId' => payment_plan_id })
|
57
|
+
return res[:status] == 200
|
58
|
+
end
|
59
|
+
|
54
60
|
# Create a license for this User
|
55
61
|
def create_license(payment_plan_id)
|
56
62
|
res = @@api.do_request(:post, build_url("/licenses"), { 'paymentPlanId' => payment_plan_id.to_s })
|
data/lib/licensario/version.rb
CHANGED
data/spec/licensario_spec.rb
CHANGED
@@ -17,6 +17,9 @@ describe Licensario do
|
|
17
17
|
user.increment_feature_usage(1, feature_id, payment_plan_id)
|
18
18
|
new_feature_amount = user.get_available_feature_amount(feature_id, payment_plan_id)
|
19
19
|
( feature_amount - new_feature_amount ).should eq(1)
|
20
|
+
user.update_feature_usage(feature_amount, feature_id, payment_plan_id)
|
21
|
+
new_feature_amount = user.get_available_feature_amount(feature_id, payment_plan_id)
|
22
|
+
new_feature_amount.should eq(feature_amount)
|
20
23
|
end
|
21
24
|
|
22
25
|
describe Licensario::User do
|
data/spec/manual_tests.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
Licensario::Base.establish_connection(
|
2
2
|
key: "db886331e9105fc19dc9fd6df2caebab9f112c3c81877ea3a3bfcfe3076aa77d",
|
3
|
-
secret: "5545981d57eb3244e857d561946f4ee312023000da1b9f6b86ab017ee48e5c2d"
|
3
|
+
secret: "5545981d57eb3244e857d561946f4ee312023000da1b9f6b86ab017ee48e5c2d",
|
4
|
+
debug: true
|
4
5
|
)
|
5
6
|
|
6
7
|
res = Licensario::Base.api.ensure_external_user_exists('1', 'some@user.net')
|
@@ -21,6 +22,8 @@ licenses = user.get_licenses([feature_id],[payment_plan_id])
|
|
21
22
|
|
22
23
|
feature_amount = user.get_available_feature_amount(feature_id, payment_plan_id)
|
23
24
|
|
25
|
+
user.update_feature_usage(1, feature_id, payment_plan_id)
|
26
|
+
|
24
27
|
user.increment_feature_usage(1, feature_id, payment_plan_id)
|
25
28
|
|
26
29
|
new_feature_amount = user.get_available_feature_amount(feature_id, payment_plan_id)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: licensario
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &22299180 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *22299180
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: factory_girl
|
27
|
-
requirement: &
|
27
|
+
requirement: &22298760 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *22298760
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: guard
|
38
|
-
requirement: &
|
38
|
+
requirement: &22298340 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *22298340
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: shoulda
|
49
|
-
requirement: &
|
49
|
+
requirement: &22297920 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *22297920
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rdoc
|
60
|
-
requirement: &
|
60
|
+
requirement: &22297500 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *22297500
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: nokogiri
|
71
|
-
requirement: &
|
71
|
+
requirement: &22297080 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *22297080
|
80
80
|
description: Licensario SDK
|
81
81
|
email:
|
82
82
|
- marcelo.wiermann@gmail.com
|