inforouter 0.2.0 → 0.2.6

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzY1MjIwNGZmMjQ3YjE1NTRjOTcyYTNmYzVjOWU0ZjYxYjQyYTlmNg==
4
+ MWE4Mzc1Y2Y1ODA2ZjkwMTUxYWQwZjE4Y2ZhZmQ2ZTNhZmI4M2IxNA==
5
5
  data.tar.gz: !binary |-
6
- MDBkNWZhNWVhMWM1Yzk5YmRkZjMyNWU2M2I0OGQ0MWM0ZjA4N2Q4Yg==
7
- !binary "U0hBNTEy":
6
+ MTc5NTgyZGRiZDBjYzk0ZWZhMWIyZGEwNTczZjMzMjU3YTViNzNmMw==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- YjQzYWQ0MzQwNmExZjNlM2U3NzFmNTEyMjIzYzBkMjA1Y2VlMDJkZGJkNTRi
10
- ODA2NTQ1MDQ4N2UzNTYxY2NmZjU4ZmQxOTJjNWFlZmRjNzM4NTU3MGE1NmEz
11
- ZjliZDNjOWFlMjE3NjM5ODAyNjU2NTNhNzQ1ZTUxNGZmMjQxZWQ=
9
+ MWU5ZTlmNzg5NDliZGE2YzNhNmY0MTRkNWU1ZDQ1YjA2NDZjN2NiZDYwZTU5
10
+ OTFmMjgwYjAwYjJmNjVmNTFjZTQ3MGIyZWZjN2I3YTMxZTAxYjc4M2M0ZGZk
11
+ ZTliZTU5ZDg2OWUwYTRkYjY4ZGFlYzM3YzU3OGFlNDI2YTYyMDc=
12
12
  data.tar.gz: !binary |-
13
- Y2U5NjBmODhjOTA1OTcwZjRlYjQxMDQwZDYyMTdkMWM0MGZhZmQ4NjE3MzBl
14
- M2UyMzQ5MDk1OWJhZTQ1OTliNjA0YTc2MDM2YzE3M2ZkMzUzM2RiYzJlMGM5
15
- NjhiZTQ5YTNjYmZmODliYWIzNmUzNjE0OTgyMjhmMmM5NWM0ZTA=
13
+ MWU4ZjM5MjA5YTRjY2QwODFlMmZjYWE5ZWYwMWE0NTA1ODRkODg0MmRjMTdl
14
+ YzRmMDdkNzY1MDk5YWZhNmE5ODZmZDI5YmNhNjNlYTE1M2RmYjYyYzI4MjBk
15
+ NmI0MmE3YWRhOGU2NjM1ZDQ3ZWU3ZDQzMzlkY2E3NTFiZTZmYmM=
@@ -16,9 +16,6 @@ Documentation:
16
16
  # don't require classes to be documented
17
17
  Enabled: false
18
18
 
19
- HashSyntax:
20
- EnforcedStyle: hash_rockets
21
-
22
19
  NumericLiterals:
23
20
  # don't separate numeric literals with _
24
21
  Enabled: false
data/README.md CHANGED
@@ -110,6 +110,36 @@ The following constants are defined in <tt>rights.rb</tt>.
110
110
  * <tt>CHANGE</tt>
111
111
  * <tt>FULL_CONTROL</tt>
112
112
 
113
+ Update a property set row on a folder.
114
+
115
+ class LetterRow < Inforouter::PropertyRow
116
+ attr_accessor :letter_type
117
+ attr_accessor :subject
118
+
119
+ def to_hash
120
+ {
121
+ 'RowNbr' => index + 1,
122
+ 'LetterType' => letter_type,
123
+ 'Subject' => subject
124
+ }
125
+ end
126
+ end
127
+
128
+ folder = Inforouter::Folder.new path: '/Path/To/Folder'
129
+ property_set = Inforouter::PropertySet.new name: 'LETTER'
130
+ property_set.rows << LetterRow.new(
131
+ index: 0,
132
+ letter_type: 'Business',
133
+ subject: 'Subject 1 - updated subject. Lorem dolor sit amet.'
134
+ )
135
+ property_set.rows << LetterRow.new(
136
+ index: 1,
137
+ letter_type: 'Business',
138
+ subject: 'Subject 2 - updated subject. Lorem Dolor Sit amet.'
139
+ )
140
+ folder.property_sets << property_set
141
+ folder.update_property_sets
142
+
113
143
  Sets the rules of the specified folder.
114
144
 
115
145
  folder = Inforouter::Folder.new path: '/Path/To/Folder'
@@ -7,10 +7,10 @@ Gem::Specification.new do |spec|
7
7
  spec.name = 'inforouter'
8
8
  spec.version = Inforouter::Version
9
9
  spec.authors = ['Tom Fenton']
10
- spec.email = ['tom@ncs.co.nz']
10
+ spec.email = ['tom.fenton@ncschameleon.co.nz']
11
11
  spec.description = %q(A Ruby interface to the infoRouter SOAP API.)
12
12
  spec.summary = spec.description
13
- spec.homepage = 'https://github.com/ncssoftware/inforouter'
13
+ spec.homepage = 'https://github.com/ncschameleon/inforouter'
14
14
  spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files`.split("\n")
@@ -13,6 +13,8 @@ require 'inforouter/access_list_user_group_item'
13
13
  require 'inforouter/access_list_user_item'
14
14
  require 'inforouter/document'
15
15
  require 'inforouter/folder'
16
+ require 'inforouter/property_set'
17
+ require 'inforouter/property_row'
16
18
  require 'inforouter/rights'
17
19
  require 'inforouter/rule_item'
18
20
  require 'inforouter/rules'
@@ -32,7 +34,7 @@ module Inforouter
32
34
 
33
35
  # Returns true if the gem has been configured.
34
36
  def configured?
35
- !!configured
37
+ !configured.nil?
36
38
  end
37
39
 
38
40
  # Configure the gem
@@ -9,8 +9,8 @@ module Inforouter
9
9
 
10
10
  def initialize(params = {})
11
11
  params = {
12
- :user_groups => [],
13
- :users => []
12
+ user_groups: [],
13
+ users: []
14
14
  }.merge(params)
15
15
  super params
16
16
  end
@@ -36,15 +36,29 @@ module Inforouter
36
36
  # 4 (Add & Read)
37
37
  # 5 (Change)
38
38
  # 6 (Full Control)
39
+ #
40
+ # @return [String]
39
41
  def to_xml
40
42
  builder = Nokogiri::XML::Builder.new do |xml|
41
43
  xml.AccessList do
42
- xml.DomainMembers(domain_members.to_hash) if domain_members
43
- user_groups.each { |user_group| xml.UserGroup(user_group.to_hash) }
44
- users.each { |user| xml.User(user.to_hash) }
44
+ xml.DomainMembers(Right: domain_members.right) if domain_members
45
+ user_groups.each do |user_group|
46
+ xml.UserGroup(
47
+ Domain: user_group.domain,
48
+ GroupName: user_group.name,
49
+ Right: user_group.right
50
+ )
51
+ end
52
+ users.each do |user|
53
+ xml.User(
54
+ Domain: user.domain,
55
+ UserName: user.name,
56
+ Right: user.right
57
+ )
58
+ end
45
59
  end
46
60
  end
47
- builder.doc.root.to_xml
61
+ builder.doc.root.to_s
48
62
  end
49
63
  end
50
64
  end
@@ -2,10 +2,5 @@ module Inforouter
2
2
  class AccessListDomainMembersItem < Record
3
3
  attr_accessor :right
4
4
  attr_accessor :description
5
-
6
- # Convert the object to a useable hash for SOAP requests.
7
- def to_hash
8
- { 'Right' => right }
9
- end
10
5
  end
11
6
  end
@@ -4,14 +4,5 @@ module Inforouter
4
4
  attr_accessor :name
5
5
  attr_accessor :right
6
6
  attr_accessor :description
7
-
8
- # Convert the object to a useable hash for SOAP requests.
9
- def to_hash
10
- {
11
- 'Domain' => domain,
12
- 'UserGroupName' => name,
13
- 'Right' => right
14
- }
15
- end
16
7
  end
17
8
  end
@@ -4,14 +4,5 @@ module Inforouter
4
4
  attr_accessor :name
5
5
  attr_accessor :right
6
6
  attr_accessor :description
7
-
8
- # Convert the object to a useable hash for SOAP requests.
9
- def to_hash
10
- {
11
- 'Domain' => domain,
12
- 'UserName' => name,
13
- 'Right' => right
14
- }
15
- end
16
7
  end
17
8
  end
@@ -9,18 +9,19 @@ module Inforouter
9
9
  # @return [Inforouter::Client]
10
10
  def initialize(options = {})
11
11
  options = {
12
- :log => false,
13
- :logger => Logger.new($stdout),
14
- :log_level => :info
12
+ log: false,
13
+ logger: Logger.new($stdout),
14
+ log_level: :info
15
15
  }.merge(options)
16
16
 
17
17
  @client = Savon.client(
18
- :wsdl => Inforouter.configuration.wsdl,
19
- :convert_request_keys_to => :camelcase,
20
- :pretty_print_xml => true,
21
- :log => options[:log],
22
- :logger => options[:logger],
23
- :log_level => options[:log_level]
18
+ wsdl: Inforouter.configuration.wsdl,
19
+ convert_request_keys_to: :camelcase,
20
+ pretty_print_xml: true,
21
+ ssl_verify_mode: :none,
22
+ log: options[:log],
23
+ logger: options[:logger],
24
+ log_level: options[:log_level]
24
25
  )
25
26
 
26
27
  @ticket = nil
@@ -46,7 +47,7 @@ module Inforouter
46
47
  # @param message [Hash]
47
48
  def call(method, message = {})
48
49
  safe do
49
- @client.call method, :message => message.merge(authentication_params)
50
+ @client.call method, message: message.merge(authentication_params)
50
51
  end
51
52
  end
52
53
 
@@ -68,7 +69,7 @@ module Inforouter
68
69
  # @return [Hash]
69
70
  def authentication_params
70
71
  {
71
- :authentication_ticket => ticket
72
+ authentication_ticket: ticket
72
73
  }
73
74
  end
74
75
 
@@ -83,7 +84,7 @@ module Inforouter
83
84
  # @return [String]
84
85
  def authenticate_user
85
86
  ticket = nil
86
- response = @client.call(:authenticate_user, :message => message_params)
87
+ response = @client.call(:authenticate_user, message: message_params)
87
88
  if response.success?
88
89
  data = response.to_array(:authenticate_user_response,
89
90
  :authenticate_user_result,
@@ -100,8 +101,8 @@ module Inforouter
100
101
  def valid_ticket?(ticket)
101
102
  result = false
102
103
  unless ticket.nil?
103
- message = { :authentication_ticket => ticket }
104
- response = @client.call(:is_valid_ticket, :message => message)
104
+ message = { authentication_ticket: ticket }
105
+ response = @client.call(:is_valid_ticket, message: message)
105
106
  if response.success?
106
107
  data = response.to_array(:is_valid_ticket_response,
107
108
  :is_valid_ticket_result,
@@ -1,7 +1,7 @@
1
1
  module Inforouter #:nodoc
2
2
  class Document < Record
3
3
  # Document ID.
4
- attr_accessor :document_id
4
+ attr_accessor :id
5
5
  # Document name.
6
6
  attr_accessor :name
7
7
  # Document path.
@@ -16,10 +16,10 @@ module Inforouter #:nodoc
16
16
  attr_accessor :modification_date
17
17
  # Document checkout date.
18
18
  attr_accessor :checkout_date
19
- # Document checkout by.
20
- attr_accessor :checkout_by
21
- # Document checkout by user name.
22
- attr_accessor :checkout_by_user_name
19
+ # Document checkout by username.
20
+ attr_accessor :checkout_by_username
21
+ # Document checkout by full name.
22
+ attr_accessor :checkout_by_full_name
23
23
  # Document size.
24
24
  attr_accessor :size
25
25
  # Document type.
@@ -44,8 +44,12 @@ module Inforouter #:nodoc
44
44
  attr_accessor :doc_type_id
45
45
  # Document doc type name.
46
46
  attr_accessor :doc_type_name
47
- # Document version number.
48
- attr_accessor :version_number
47
+ # Document version.
48
+ attr_accessor :version
49
+ # Document published version.
50
+ attr_accessor :published_version
51
+ # Document type.
52
+ attr_accessor :type
49
53
 
50
54
  # @return [Boolean]
51
55
  def exists?
@@ -58,7 +62,7 @@ module Inforouter #:nodoc
58
62
 
59
63
  # @return [Hash]
60
64
  def path_params
61
- { :path => path }
65
+ { path: path }
62
66
  end
63
67
  end
64
68
  end
@@ -7,10 +7,7 @@ module Inforouter #:nodoc:
7
7
  # @param message [String] Error message.
8
8
  # @param raw [String] Raw data from the SOAP response.
9
9
  def initialize(message, raw)
10
- super(compose_message('api_error',
11
- :message => message,
12
- :raw => raw
13
- ))
10
+ super(compose_message('api_error', message: message, raw: raw))
14
11
  end
15
12
  end
16
13
  end
@@ -31,7 +31,7 @@ module Inforouter #:nodoc:
31
31
  # message.
32
32
  #
33
33
  # @example Translate the message.
34
- # error.translate("errors", :key => value)
34
+ # error.translate('errors', key: value)
35
35
  #
36
36
  # @param key [String] The key of the error in the locales.
37
37
  # @param options [Hash] The objects to pass to create the message.
@@ -5,7 +5,7 @@ module Inforouter #:nodoc:
5
5
  class MissingConfigOption < InforouterError
6
6
  # @param name [String]
7
7
  def initialize(name)
8
- super(compose_message('missing_config_option', :name => name))
8
+ super(compose_message('missing_config_option', name: name))
9
9
  end
10
10
  end
11
11
  end
@@ -12,8 +12,8 @@ module Inforouter #:nodoc:
12
12
  fault_code = fault[:fault][:faultcode]
13
13
  fault_string = parse_fault(fault[:fault][:faultstring])
14
14
  super(compose_message('soap_error',
15
- :message => fault_string,
16
- :code => fault_code
15
+ message: fault_string,
16
+ code: fault_code
17
17
  ))
18
18
  end
19
19
  end
@@ -8,9 +8,9 @@ module Inforouter #:nodoc:
8
8
  # @param chain [String] Complete SOAP response chain in which the key could not be found.
9
9
  def initialize(raw, key, chain)
10
10
  super(compose_message('unexpected_soap_response',
11
- :key => key,
12
- :raw => raw,
13
- :chain => chain
11
+ key: key,
12
+ raw: raw,
13
+ chain: chain
14
14
  ))
15
15
  end
16
16
  end
@@ -2,7 +2,7 @@ module Inforouter #:nodoc:
2
2
  # A <tt>Folder</tt> defines an infoRouter folder.
3
3
  class Folder < Record
4
4
  # Folder ID.
5
- attr_accessor :folder_id
5
+ attr_accessor :id
6
6
  # Folder parent ID.
7
7
  attr_accessor :parent_id
8
8
  # Folder name.
@@ -19,6 +19,8 @@ module Inforouter #:nodoc:
19
19
  attr_accessor :domain_id
20
20
  # Folder access list.
21
21
  attr_accessor :access_list
22
+ # Folder property sets. Array of <tt>Inforouter::PropertySet</tt>s.
23
+ attr_accessor :property_sets
22
24
  # Folder rules.
23
25
  attr_accessor :rules
24
26
  # Folder folders. Array of <tt>Inforouter::Folder</tt>s.
@@ -27,14 +29,10 @@ module Inforouter #:nodoc:
27
29
  attr_accessor :documents
28
30
 
29
31
  def initialize(params = {})
30
- params = {
31
- :folders = [],
32
- :documents = []
33
- }.merge(params)
32
+ params = { property_sets: [] }.merge(params)
34
33
  super params
35
34
  end
36
35
 
37
- # @return [String]
38
36
  def description
39
37
  @description ||= begin
40
38
  response = Inforouter.client.request :get_folder, folder_params
@@ -43,6 +41,28 @@ module Inforouter #:nodoc:
43
41
  end
44
42
  end
45
43
 
44
+ def documents
45
+ @documents ||= begin
46
+ response = Inforouter.client.request :get_documents1, path_params
47
+ @documents = Inforouter::Responses::Documents.parse response
48
+ end
49
+ end
50
+
51
+ def folders
52
+ @folders ||= begin
53
+ response = Inforouter.client.request :get_folders1, path_params
54
+ @folders = Inforouter::Responses::Folders.parse response
55
+ end
56
+ end
57
+
58
+ def property_sets
59
+ @property_sets ||= begin
60
+ response = Inforouter.client.request :get_folder, folder_params(with_property_sets: true)
61
+ folder = Inforouter::Responses::Folder.parse response
62
+ @property_sets = folder.property_sets
63
+ end
64
+ end
65
+
46
66
  # Setting the path also sets the name if not already set.
47
67
  def path=(path)
48
68
  @name ||= path.split('/').last
@@ -63,42 +83,59 @@ module Inforouter #:nodoc:
63
83
  result[:@success] == 'true'
64
84
  end
65
85
 
66
- # @return [Array<Inforouter::Folder>]
67
- def folders
68
- @folders ||= begin
69
- response = Inforouter.client.request :get_folders_and_documents, folders_and_documents_params
70
- @folders, @documents = Inforouter::Responses::FoldersDocuments.parse response
71
- @folders
72
- end
73
- end
74
-
75
- # @return [Array<Inforouter::Document>]
76
- def documents
77
- @documents ||= begin
78
- response = Inforouter.client.request :get_folders_and_documents, folders_and_documents_params
79
- @folders, @documents = Inforouter::Responses::FoldersDocuments.parse response
80
- @documents
81
- end
86
+ # @return [Boolean]
87
+ def update_access_list(options = {})
88
+ options = { apply_to_tree: false }.merge(options)
89
+ request_params = {
90
+ :path => path,
91
+ 'AccessListXML' => access_list.to_xml,
92
+ :apply_to_tree => options[:apply_to_tree] ? 1 : 0
93
+ }
94
+ response = Inforouter.client.request :set_access_list, request_params
95
+ result = Inforouter::Responses::SetAccessList.parse response
96
+ result[:@success] == 'true'
82
97
  end
83
98
 
84
99
  # @return [Boolean]
85
100
  def update_properties
86
101
  request_params = {
87
- :path => path,
88
- :new_folder_name => name,
89
- :description => description
102
+ path: path,
103
+ new_folder_name: name,
104
+ new_description: description
90
105
  }
91
106
  response = Inforouter.client.request :update_folder_properties, request_params
92
107
  result = Inforouter::Responses::UpdateFolderProperties.parse response
93
108
  result[:@success] == 'true'
94
109
  end
95
110
 
111
+ # @return [Boolean]
112
+ def add_property_sets
113
+ request_params = {
114
+ :path => path,
115
+ 'xmlpset' => PropertySet.to_xml(property_sets)
116
+ }
117
+ response = Inforouter.client.request :add_property_set_row, request_params
118
+ result = Inforouter::Responses::AddPropertySetRow.parse response
119
+ result[:@success] == 'true'
120
+ end
121
+
122
+ # @return [Boolean]
123
+ def update_property_sets
124
+ request_params = {
125
+ :path => path,
126
+ 'xmlpset' => PropertySet.to_xml(property_sets)
127
+ }
128
+ response = Inforouter.client.request :update_property_set_row, request_params
129
+ result = Inforouter::Responses::UpdatePropertySetRow response
130
+ result[:@success] == 'true'
131
+ end
132
+
96
133
  # @return [Boolean]
97
134
  def update_rules(options = {})
98
- options = { :apply_to_tree => false }.merge(options)
135
+ options = { apply_to_tree: false }.merge(options)
99
136
  request_params = {
100
137
  :path => path,
101
- 'xmlRules' => rules.to_xml,
138
+ 'xmlRules' => rules.to_hash,
102
139
  :apply_to_tree => options[:apply_to_tree] ? 1 : 0
103
140
  }
104
141
  response = Inforouter.client.request :set_folder_rules, request_params
@@ -110,30 +147,19 @@ module Inforouter #:nodoc:
110
147
 
111
148
  # @return [Hash]
112
149
  def path_params
113
- { :path => path }
150
+ { path: path }
114
151
  end
115
152
 
116
153
  # @return [Hash]
117
- def folder_params
154
+ def folder_params(options = {})
155
+ options = { with_property_sets: false }.merge(options)
118
156
  {
119
157
  :path => path,
120
158
  :with_rules => 0,
121
- 'withPropertySets' => 0,
159
+ 'withPropertySets' => options[:with_property_sets] ? 1 : 0,
122
160
  'withSecurity' => 0,
123
161
  'withOwner' => 0
124
162
  }
125
163
  end
126
-
127
- # @return [Hash]
128
- def folders_and_documents_params
129
- {
130
- :path => path,
131
- 'withrules' => 0,
132
- 'withPropertySets' => 0,
133
- 'withSecurity' => 0,
134
- 'withOwner' => 0,
135
- 'withVersions' => 0
136
- }
137
- end
138
164
  end
139
165
  end
@@ -0,0 +1,11 @@
1
+ module Inforouter #:nodoc:
2
+ class PropertyRow < Record
3
+ # Property row index.
4
+ attr_accessor :index
5
+
6
+ def initialize(params = {})
7
+ params = { index: 0 }.merge(params)
8
+ super params
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,34 @@
1
+ module Inforouter #:nodoc:
2
+ class PropertySet < Record
3
+ # Property set name.
4
+ attr_accessor :name
5
+ # Array of <tt>Inforouter::PropertyRow</tt>s.
6
+ attr_accessor :rows
7
+
8
+ def initialize(params = {})
9
+ params = { rows: [] }.merge(params)
10
+ super params
11
+ end
12
+
13
+ # <Propertysets>
14
+ # <propertyset Name="LETTER">
15
+ # <propertyrow RowNbr="1" LetterType="Business" Subject="Subject 1 - updated subject Lorem dolor sit amet.."/>
16
+ # <propertyrow RowNbr="2" LetterType="Business" Subject="Subject 2 - updated subject ..Lorem Dolor Sit amet.."/>
17
+ # </propertyset>
18
+ # </Propertysets>
19
+ #
20
+ # @return [String]
21
+ def self.to_xml(property_sets)
22
+ builder = Nokogiri::XML::Builder.new do |xml|
23
+ xml.Propertysets do
24
+ property_sets.each do |property_set|
25
+ xml.propertyset(Name: property_set.name) do
26
+ property_set.rows.each { |row| row.to_xml(xml) }
27
+ end
28
+ end
29
+ end
30
+ end
31
+ builder.doc.root.to_xml
32
+ end
33
+ end
34
+ end
@@ -1,14 +1,18 @@
1
1
  require 'inforouter/responses/base'
2
2
  require 'inforouter/responses/generic'
3
+ require 'inforouter/responses/access_list'
3
4
  require 'inforouter/responses/create_folder'
4
5
  require 'inforouter/responses/delete_folder'
5
6
  require 'inforouter/responses/document'
6
7
  require 'inforouter/responses/document_exists'
8
+ require 'inforouter/responses/documents'
7
9
  require 'inforouter/responses/folder'
8
10
  require 'inforouter/responses/folder_exists'
11
+ require 'inforouter/responses/folders'
9
12
  require 'inforouter/responses/set_access_list'
10
13
  require 'inforouter/responses/set_folder_rules'
11
14
  require 'inforouter/responses/update_folder_properties'
12
15
  require 'inforouter/responses/update_property_set_definition'
16
+ require 'inforouter/responses/add_property_set_row'
13
17
  require 'inforouter/responses/update_property_set_row'
14
18
  require 'inforouter/responses/users'
@@ -0,0 +1,10 @@
1
+ module Inforouter #:nodoc:
2
+ module Responses #:nodoc:
3
+ # Response to an infoRouter Get Access List API call.
4
+ #
5
+ # See http://www.inforouter.com/web-services-80/default.aspx?op=GetAccessList
6
+ class AccessList < Generic
7
+ response_key :get_access_list
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module Inforouter #:nodoc:
2
+ module Responses #:nodoc:
3
+ # Response to an infoRouter Add Property Set Row API call.
4
+ #
5
+ # See http://www.inforouter.com/web-services-80/default.aspx?op=AddPropertySetRow
6
+ class AddPropertySetRow < Generic
7
+ response_key :add_property_set_row
8
+ end
9
+ end
10
+ end
@@ -18,28 +18,28 @@ module Inforouter #:nodoc:
18
18
  response = new(savon_response)
19
19
  document = response.match('get_document_response/get_document_result/response/document')
20
20
  Inforouter::Document.new(
21
- :document_id => document[:@document_id].to_i,
22
- :name => document[:@name].strip,
23
- :path => document[:@path].strip,
24
- :description => document[:@description].strip,
25
- :update_instructions => document[:@update_instructions].strip,
26
- :creation_date => parse_datetime(document[:@creation_date]),
27
- :modification_date => parse_datetime(document[:@modification_date]),
28
- :checkout_date => parse_datetime(document[:@checkout_date]),
29
- :checkout_by => document[:@checkout_by].strip,
30
- :checkout_by_user_name => document[:@checkout_by_user_name].strip,
31
- :size => document[:@size].to_i,
32
- :type => document[:@type].strip,
33
- :percent_complete => document[:@percent_complete].to_i,
34
- :importance => document[:@importance].strip,
35
- :retention_date => parse_datetime(document[:@retention_date]),
36
- :disposition_date => parse_datetime(document[:@disposition_date]),
37
- :expiration_date => parse_datetime(document[:@expiration_date]),
38
- :register_date => parse_datetime(document[:@register_date]),
39
- :registered_by => document[:@registered_by].strip,
40
- :doc_type_id => document[:@doc_type_id].to_i,
41
- :doc_type_name => document[:@doc_type_name].strip,
42
- :version_number => document[:@version_number].to_i,
21
+ id: document[:@document_id].to_i,
22
+ name: document[:@name].strip,
23
+ path: document[:@path].strip,
24
+ description: document[:@description].strip,
25
+ update_instructions: document[:@update_instructions].strip,
26
+ creation_date: parse_datetime(document[:@creation_date]),
27
+ modification_date: parse_datetime(document[:@modification_date]),
28
+ checkout_date: parse_datetime(document[:@checkout_date]),
29
+ checkout_by_username: document[:@checkout_by_user_name].strip,
30
+ checkout_by_full_name: document[:@checkout_by].strip,
31
+ size: document[:@size].to_i,
32
+ type: document[:@type].strip,
33
+ percent_complete: document[:@percent_complete].to_i,
34
+ importance: document[:@importance].strip,
35
+ retention_date: parse_datetime(document[:@retention_date]),
36
+ disposition_date: parse_datetime(document[:@disposition_date]),
37
+ expiration_date: parse_datetime(document[:@expiration_date]),
38
+ register_date: parse_datetime(document[:@register_date]),
39
+ registered_by: document[:@registered_by].strip,
40
+ doc_type_id: document[:@doc_type_id].to_i,
41
+ doc_type_name: document[:@doc_type_name].strip,
42
+ version: document[:@version_number].to_i
43
43
  )
44
44
  end
45
45
  end
@@ -0,0 +1,39 @@
1
+ module Inforouter #:nodoc:
2
+ module Responses #:nodoc:
3
+ # Returns the list of documents in the specified path in short form.
4
+ #
5
+ # http://www.inforouter.com/web-services-80/default.aspx?op=GetDocuments1
6
+ class Documents < Base
7
+ response_success 'get_documents1_response/get_documents1_result/response/@success'
8
+ error_message 'get_documents1_response/get_documents1_result/response/@error'
9
+
10
+ class << self
11
+ # Parse an infoRouter response.
12
+ #
13
+ # @param savon_response [Savon::Response] SOAP response.
14
+ #
15
+ # @return [Array<Inforouter::Document>]
16
+ def parse(savon_response)
17
+ response = new(savon_response)
18
+ documents = response.match('get_documents1_response/get_documents1_result/response/d')
19
+ documents.map do |document|
20
+ Inforouter::Document.new(
21
+ id: document[:@id].to_i,
22
+ name: document[:@n].strip,
23
+ modification_date: parse_datetime(document[:@mdate]),
24
+ creation_date: parse_datetime(document[:@cdate]),
25
+ size: document[:@size].to_i,
26
+ description: document[:@dformat].strip,
27
+ checkout_by_username: document[:@chkoutbyusername].strip,
28
+ checkout_by_full_name: document[:@chkoutbyfullname].strip,
29
+ version: document[:@version].to_i,
30
+ register_date: parse_datetime(document[:@regdate]),
31
+ published_version: document[:@publishedversion].to_i,
32
+ type: document[:@dtype].to_i
33
+ )
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -17,14 +17,14 @@ module Inforouter #:nodoc:
17
17
  response = new(savon_response)
18
18
  folder = response.match('get_folder_response/get_folder_result/response/folder')
19
19
  Inforouter::Folder.new(
20
- :folder_id => folder[:@folder_id].to_i,
21
- :parent_id => folder[:@parent_id].to_i,
22
- :name => folder[:@name].strip,
23
- :path => folder[:@path].strip,
24
- :description => folder[:@description].strip,
25
- :creation_date => parse_datetime(folder[:@creation_date]),
26
- :owner_name => folder[:@owner_name].strip,
27
- :domain_id => folder[:@domain_id].to_i
20
+ id: folder[:@folder_id].to_i,
21
+ parent_id: folder[:@parent_id].to_i,
22
+ name: folder[:@name].strip,
23
+ path: folder[:@path].strip,
24
+ description: folder[:@description].strip,
25
+ creation_date: parse_datetime(folder[:@creation_date]),
26
+ owner_name: folder[:@owner_name].strip,
27
+ domain_id: folder[:@domain_id].to_i
28
28
  )
29
29
  end
30
30
  end
@@ -0,0 +1,29 @@
1
+ module Inforouter #:nodoc:
2
+ module Responses #:nodoc:
3
+ # Returns the list of sub folders in the specified path in short form.
4
+ #
5
+ # http://www.inforouter.com/web-services-80/default.aspx?op=GetFolders1
6
+ class Folders < Base
7
+ response_success 'get_folders1_response/get_folders1_result/response/@success'
8
+ error_message 'get_folders1_response/get_folders1_result/response/@error'
9
+
10
+ class << self
11
+ # Parse an infoRouter response.
12
+ #
13
+ # @param savon_response [Savon::Response] SOAP response.
14
+ #
15
+ # @return [Array<Inforouter::Folder>]
16
+ def parse(savon_response)
17
+ response = new(savon_response)
18
+ folders = response.match('get_folders1_response/get_folders1_result/response/f')
19
+ folders.map do |folder|
20
+ Inforouter::Folder.new(
21
+ id: folder[:@id].to_i,
22
+ name: folder[:@n].strip
23
+ )
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -18,17 +18,17 @@ module Inforouter #:nodoc:
18
18
  users = response.match('get_all_users_response/get_all_users_result/response/users/user')
19
19
  users.map do |user|
20
20
  Inforouter::User.new(
21
- :user_id => user[:@user_id].to_i,
22
- :domain => user[:@domain].strip,
23
- :user_name => user[:@user_name].strip,
24
- :first_name => user[:@first_name].strip,
25
- :last_name => user[:@last_name].strip,
26
- :last_logon => DateTime.strptime(user[:@last_logon_date], '%Y-%m-%d %H:%M:%S'),
27
- :last_password_change => DateTime.strptime(user[:@last_password_change_date], '%Y-%m-%d %H:%M:%S'),
28
- :authentication_authority => user[:@authentication_authority].strip,
29
- :read_only => user[:@read_only_user] == 'TRUE',
30
- :email => user[:@email].strip,
31
- :enabled => user[:@enabled] == 'TRUE'
21
+ id: user[:@user_id].to_i,
22
+ domain: user[:@domain].strip,
23
+ user_name: user[:@user_name].strip,
24
+ first_name: user[:@first_name].strip,
25
+ last_name: user[:@last_name].strip,
26
+ last_logon: DateTime.strptime(user[:@last_logon_date], '%Y-%m-%d %H:%M:%S'),
27
+ last_password_change: DateTime.strptime(user[:@last_password_change_date], '%Y-%m-%d %H:%M:%S'),
28
+ authentication_authority: user[:@authentication_authority].strip,
29
+ read_only: user[:@read_only_user] == 'TRUE',
30
+ email: user[:@email].strip,
31
+ enabled: user[:@enabled] == 'TRUE'
32
32
  )
33
33
  end
34
34
  end
@@ -8,8 +8,8 @@ module Inforouter
8
8
  # @return [Hash]
9
9
  def to_hash
10
10
  {
11
- :Name => name,
12
- :Value => value
11
+ :@Name => name,
12
+ :@Value => value
13
13
  }
14
14
  end
15
15
 
@@ -5,20 +5,20 @@ module Inforouter
5
5
 
6
6
  def initialize(params = {})
7
7
  params = {
8
- :allowable_file_types => '',
9
- :checkins => false,
10
- :checkouts => false,
11
- :document_deletes => false,
12
- :folder_deletes => false,
13
- :new_documents => false,
14
- :new_folders => false,
15
- :classified_documents => false
8
+ allowable_file_types: '',
9
+ checkins: false,
10
+ checkouts: false,
11
+ document_deletes: false,
12
+ folder_deletes: false,
13
+ new_documents: false,
14
+ new_folders: false,
15
+ classified_documents: false
16
16
  }.merge(params)
17
17
  @rules = []
18
18
  params.each do |key, value|
19
19
  @rules << Inforouter::RuleItem.new(
20
- :name => key.to_s.camelize,
21
- :value => value
20
+ name: key.to_s.camelize,
21
+ value: value
22
22
  )
23
23
  end
24
24
  end
@@ -39,13 +39,29 @@ module Inforouter
39
39
  # <Rule Name="NewFolders" Value="disallows" />
40
40
  # <Rule Name="ClassifiedDocuments" Value="allows" />
41
41
  # </Rules>
42
- def to_xml
43
- builder = Nokogiri::XML::Builder.new do |xml|
44
- xml.Rules do
45
- rules.each { |rule| xml.Rules(rule.to_hash) }
46
- end
47
- end
48
- builder.doc.root.to_xml
42
+ #
43
+ # Example
44
+ #
45
+ # { :rules =>
46
+ # { :rule =>
47
+ # [
48
+ # { :@Name => "AllowableFileTypes", :@Value => "BMP,DOC,JPG,XLS" },
49
+ # { :@Name => "Checkins", :@Value => "disallows" },
50
+ # { :@Name => "Checkouts", :@Value => "disallows" },
51
+ # { :@Name => "DocumentDeletes", :@Value => "disallows" },
52
+ # { :@Name => "FolderDeletes", :@Value => "disallows" },
53
+ # { :@Name => "NewDocuments", :@Value => "disallows" },
54
+ # { :@Name => "NewFolders", :@Value => "disallows" },
55
+ # { :@Name => "ClassifiedDocuments", :@Value => "allows" }
56
+ # ]
57
+ # }
58
+ # }
59
+ #
60
+ # @return [Hash]
61
+ def to_hash
62
+ rules_hash = { rule: [] }
63
+ rules.each { |rule| rules_hash[:rule] << rule.to_hash }
64
+ { rules: rules_hash }
49
65
  end
50
66
  end
51
67
  end
@@ -2,7 +2,7 @@ module Inforouter #:nodoc:
2
2
  # A <tt>User</tt> defines an infoRouter user.
3
3
  class User < Record
4
4
  # User ID.
5
- attr_accessor :user_id
5
+ attr_accessor :id
6
6
  # User domain.
7
7
  attr_accessor :domain
8
8
  # User username.
@@ -2,7 +2,7 @@ module Inforouter
2
2
  class Version
3
3
  MAJOR = 0
4
4
  MINOR = 2
5
- PATCH = 0
5
+ PATCH = 6
6
6
  PRE = nil
7
7
 
8
8
  class << self
@@ -7,7 +7,7 @@ class TestConfiguration < TestSetup
7
7
 
8
8
  def test_missing_configuration
9
9
  assert_raise Inforouter::Errors::MissingConfig do
10
- Inforouter.client.request :dummy, :body => {}
10
+ Inforouter.client.request :dummy, body: {}
11
11
  end
12
12
  end
13
13
 
@@ -16,7 +16,7 @@ class TestConfiguration < TestSetup
16
16
  config.username = 'inforouter_username'
17
17
  end
18
18
  assert_raise Inforouter::Errors::MissingConfigOption do
19
- Inforouter.client.request :dummy, :body => {}
19
+ Inforouter.client.request :dummy, body: {}
20
20
  end
21
21
  end
22
22
 
@@ -25,7 +25,7 @@ class TestConfiguration < TestSetup
25
25
  config.host = 'inforouter_host'
26
26
  end
27
27
  assert_raise Inforouter::Errors::MissingConfigOption do
28
- Inforouter.client.request :dummy, :body => {}
28
+ Inforouter.client.request :dummy, body: {}
29
29
  end
30
30
  end
31
31
  end
@@ -5,7 +5,6 @@ class TestSetup < Test::Unit::TextCase
5
5
 
6
6
  def setup
7
7
  Inforouter.configure do |config|
8
- config.wsdl = ENV['INFOROUTER_WSDL'] || 'inforouter.wsdl'
9
8
  config.host = ENV['INFOROUTER_HOST'] || 'inforouter_host'
10
9
  config.username = ENV['INFOROUTER_USERNAME'] || 'inforouter_username'
11
10
  config.password = ENV['INFOROUTER_PASSWORD'] || 'inforouter_password'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inforouter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Fenton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-23 00:00:00.000000000 Z
11
+ date: 2015-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -124,7 +124,7 @@ dependencies:
124
124
  version: 0.16.0
125
125
  description: A Ruby interface to the infoRouter SOAP API.
126
126
  email:
127
- - tom@ncs.co.nz
127
+ - tom.fenton@ncschameleon.co.nz
128
128
  executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
@@ -155,15 +155,21 @@ files:
155
155
  - lib/inforouter/errors/soap_error.rb
156
156
  - lib/inforouter/errors/unexpected_soap_response_error.rb
157
157
  - lib/inforouter/folder.rb
158
+ - lib/inforouter/property_row.rb
159
+ - lib/inforouter/property_set.rb
158
160
  - lib/inforouter/record.rb
159
161
  - lib/inforouter/responses.rb
162
+ - lib/inforouter/responses/access_list.rb
163
+ - lib/inforouter/responses/add_property_set_row.rb
160
164
  - lib/inforouter/responses/base.rb
161
165
  - lib/inforouter/responses/create_folder.rb
162
166
  - lib/inforouter/responses/delete_folder.rb
163
167
  - lib/inforouter/responses/document.rb
164
168
  - lib/inforouter/responses/document_exists.rb
169
+ - lib/inforouter/responses/documents.rb
165
170
  - lib/inforouter/responses/folder.rb
166
171
  - lib/inforouter/responses/folder_exists.rb
172
+ - lib/inforouter/responses/folders.rb
167
173
  - lib/inforouter/responses/generic.rb
168
174
  - lib/inforouter/responses/set_access_list.rb
169
175
  - lib/inforouter/responses/set_folder_rules.rb
@@ -181,7 +187,7 @@ files:
181
187
  - test/test_client.rb
182
188
  - test/test_configuration.rb
183
189
  - test/test_setup.rb
184
- homepage: https://github.com/ncssoftware/inforouter
190
+ homepage: https://github.com/ncschameleon/inforouter
185
191
  licenses:
186
192
  - MIT
187
193
  metadata: {}
@@ -201,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
201
207
  version: '0'
202
208
  requirements: []
203
209
  rubyforge_project:
204
- rubygems_version: 2.0.6
210
+ rubygems_version: 2.4.5
205
211
  signing_key:
206
212
  specification_version: 4
207
213
  summary: A Ruby interface to the infoRouter SOAP API.