teamdrive_api 0.1.1 → 0.1.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.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/README.md +4 -0
- data/Rakefile +2 -0
- data/lib/teamdrive_api/base.rb +26 -10
- data/lib/teamdrive_api/register.rb +43 -5
- data/lib/teamdrive_api/version.rb +1 -1
- data/teamdrive_api.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4004e15801a70734a32aa812d2a8ab6d28f02998
|
4
|
+
data.tar.gz: 7fbb6b1045159a5dd4e0e94ce5668fd71d834913
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 418127519db85d91e0956515bf2ddf7f7585f88e5964ad2eb2722ce9fbb7a84531f2b8f055014156cfbd63485191831b1e78bd5c7d487cf0ebc81fd671f71227
|
7
|
+
data.tar.gz: 75896c17dbbb51a0681c777216a406bcf41b3b2d286e4f187100e859aa4e0338026dfc71ba386056c930428a07ea8806f0f7c20cd164c7bcb440c90e7f3ed3d8
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# TeamdriveApi
|
2
2
|
|
3
|
+
[](https://travis-ci.org/mhutter/teamdrive_api)
|
4
|
+
[](https://codeclimate.com/github/mhutter/teamdrive_api)
|
5
|
+
[](https://codeclimate.com/github/mhutter/teamdrive_api)
|
6
|
+
|
3
7
|
Client library for the TeamDrive XML API.
|
4
8
|
|
5
9
|
## Project State
|
data/Rakefile
CHANGED
data/lib/teamdrive_api/base.rb
CHANGED
@@ -3,6 +3,7 @@ require 'httparty'
|
|
3
3
|
require 'uri'
|
4
4
|
|
5
5
|
module TeamdriveApi
|
6
|
+
# API-Baseclass for all XML RPC APIs
|
6
7
|
class Base # :nodoc:
|
7
8
|
include ::HTTParty
|
8
9
|
attr_reader :uri
|
@@ -16,15 +17,15 @@ module TeamdriveApi
|
|
16
17
|
# Generates the XML payload for the RPC
|
17
18
|
def payload_for(command, query = {})
|
18
19
|
out = ''
|
19
|
-
out <<
|
20
|
+
out << "<?xml version='1.0' encoding='UTF-8' ?>"
|
20
21
|
out << '<teamdrive>'
|
21
22
|
out << "<apiversion>#{@api_version}</apiversion>"
|
22
23
|
out << "<command>#{command}</command>"
|
23
24
|
out << "<requesttime>#{Time.now.to_i}</requesttime>"
|
24
|
-
query.each do |k,v|
|
25
|
+
query.each do |k, v|
|
25
26
|
next if v.nil?
|
26
27
|
v = v.to_s
|
27
|
-
v = %w
|
28
|
+
v = %w(true false).include?(v) ? '$' + v : v
|
28
29
|
out << "<#{k}>#{v}</#{k}>"
|
29
30
|
end
|
30
31
|
out << '</teamdrive>'
|
@@ -32,21 +33,36 @@ module TeamdriveApi
|
|
32
33
|
|
33
34
|
private
|
34
35
|
|
36
|
+
def check_for(method, hash, params, message)
|
37
|
+
keys = [params].flatten
|
38
|
+
return if keys.send(method) { |k| hash.key?(k) }
|
39
|
+
msg = keys.map { |k| %("#{k}") }.join(', ')
|
40
|
+
fail ArgumentError, "Provide #{message} of #{msg}"
|
41
|
+
end
|
42
|
+
|
43
|
+
# make sure at least one of the keys in +of+ exists in +in_hash+. Raise an
|
44
|
+
# +ArgumentError+ if not so.
|
45
|
+
def require_one(of: [], in_hash: {})
|
46
|
+
check_for(:any?, in_hash, of, 'at least one')
|
47
|
+
end
|
48
|
+
|
49
|
+
# make sure all of the keys in +of+ exists in +in_hash+. Raise an
|
50
|
+
# +ArgumentError+ if not so.
|
51
|
+
def require_all(of: [], in_hash: {})
|
52
|
+
check_for(:all?, in_hash, of, 'all')
|
53
|
+
end
|
54
|
+
|
35
55
|
def send_request(command, data = {})
|
36
56
|
body = payload_for(command, data)
|
37
57
|
res = self.class.post @uri,
|
38
58
|
headers: { 'User-Agent' => "TeamdriveApi v#{TeamdriveApi::VERSION}" },
|
39
59
|
body: body,
|
40
|
-
query: {
|
41
|
-
checksum: Digest::MD5.hexdigest(body + @api_checksum_salt)
|
42
|
-
}
|
60
|
+
query: { checksum: Digest::MD5.hexdigest(body + @api_checksum_salt) }
|
43
61
|
|
44
62
|
res = res['teamdrive'].symbolize_keys
|
45
63
|
unless res[:exception].nil?
|
46
|
-
fail TeamdriveApi::Error.new
|
47
|
-
|
48
|
-
res[:exception][:message]
|
49
|
-
)
|
64
|
+
fail TeamdriveApi::Error.new res[:exception][:primarycode],
|
65
|
+
res[:exception][:message]
|
50
66
|
end
|
51
67
|
res
|
52
68
|
end
|
@@ -11,18 +11,56 @@ module TeamdriveApi
|
|
11
11
|
@uri = URI.join(@host + '/', 'pbas/td2api/api/api.htm').to_s
|
12
12
|
end
|
13
13
|
|
14
|
+
# Assign user to license (added in 1.0.003)
|
15
|
+
#
|
16
|
+
# @param [String] username
|
17
|
+
# @param [String] number License Number
|
18
|
+
def assign_user_to_license(username, number)
|
19
|
+
res = send_request :assignusertolicense, username: username, number: number
|
20
|
+
res[:intresult].eql?('0')
|
21
|
+
end
|
22
|
+
|
23
|
+
# Create license without user (added in 1.0.003)
|
24
|
+
#
|
25
|
+
# @param [Hash] opts license options
|
26
|
+
# @option opts [String] :productname +server+, +client+
|
27
|
+
# @option opts [String] :type +monthly+ / +yearly+ / +permanent+
|
28
|
+
# @option opts [String] :featurevalue one of +webdavs+, +personal+, +professional+, +enterprise+
|
29
|
+
# @option opts [String] :limit Amount (for a client license)
|
30
|
+
# @option opts [String] :licensereference An optional external reference. Added with v1.0.004
|
31
|
+
# @option opts [String] :contactnumber An optional contact number. Added with v1.0.004
|
32
|
+
# @option opts [String] :validuntil An optional valid-until date. Format must be +DD.MM.YYYY+. Added with v1.0.004
|
33
|
+
# @option opts [String] :changeid An optional change id for license changes. Added with v1.0.004
|
34
|
+
def create_license_without_user(opts = {})
|
35
|
+
require_all of: [:productname, :type, :featurevalue], in_hash: opts
|
36
|
+
res = send_request :createlicensewithoutuser, opts
|
37
|
+
res[:intresult].eql?('0')
|
38
|
+
end
|
39
|
+
|
40
|
+
# Get User Data
|
41
|
+
#
|
42
|
+
# @param [String] username
|
43
|
+
# @param [String] distributor (optional, added in API release 1.0.003)
|
44
|
+
def get_user_data(username, distributor = nil)
|
45
|
+
send_request(:getuserdata, {
|
46
|
+
username: username,
|
47
|
+
distributor: distributor
|
48
|
+
})
|
49
|
+
end
|
50
|
+
|
14
51
|
# Remove user (added in +1.0.003+)
|
15
52
|
#
|
16
53
|
# @param [String] username to be deleted
|
17
54
|
# @param [Boolean] delete the user's license aswell
|
18
|
-
# @param [String] distributor will only be used if allowed by the API (see
|
55
|
+
# @param [String] distributor will only be used if allowed by the API (see
|
56
|
+
# +APIAllowSettingDistributor+ in the Teamdrive Register docs).
|
19
57
|
def remove_user(username, delete_license = false, distributor = nil)
|
20
|
-
res = send_request :removeuser,
|
58
|
+
res = send_request :removeuser,
|
21
59
|
username: username,
|
22
60
|
delete_license: delete_license,
|
23
61
|
distributor: distributor
|
24
|
-
|
25
|
-
|
62
|
+
|
63
|
+
res[:intresult].eql?('0')
|
26
64
|
end
|
27
65
|
|
28
66
|
# Search user
|
@@ -34,7 +72,7 @@ module TeamdriveApi
|
|
34
72
|
# @option query [Boolean] :showdevice (false)
|
35
73
|
# @option query [Boolean] :onlyownusers (false)
|
36
74
|
def search_user(query = {})
|
37
|
-
|
75
|
+
require_one of: [:username, :email], in_hash: query
|
38
76
|
query = {
|
39
77
|
showdevice: false,
|
40
78
|
onlyownusers: false
|
data/teamdrive_api.gemspec
CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_runtime_dependency "httparty", "~> 0.13"
|
27
27
|
|
28
28
|
spec.add_development_dependency "bundler", "~> 1.8"
|
29
|
+
spec.add_development_dependency "codeclimate-test-reporter"
|
29
30
|
spec.add_development_dependency "minitest", "~> 5.5"
|
30
31
|
spec.add_development_dependency "pry", "~> 0.10"
|
31
32
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: teamdrive_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manuel Hutter
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.8'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: codeclimate-test-reporter
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: minitest
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|