viewpoint-spws 0.5.0

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.
@@ -0,0 +1,96 @@
1
+ =begin
2
+ This file is part of ViewpointSPWS; the Ruby library for Microsoft Sharepoint Web Services.
3
+
4
+ Copyright © 2011 Dan Wanek <dan.wanek@gmail.com>
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ =end
18
+
19
+ # This class represents the Sharepoint User and Groups Web Service.
20
+ # @see http://msdn.microsoft.com/en-us/library/ms772647(v=office.12).aspx
21
+ class Viewpoint::SPWS::Websvc::UserGroup
22
+ include Viewpoint::SPWS::Websvc::WebServiceBase
23
+
24
+ def initialize(spcon)
25
+ @default_ns = 'http://schemas.microsoft.com/sharepoint/soap/directory/'
26
+ @ws_endpoint = '_vti_bin/UserGroup.asmx'
27
+ super
28
+ end
29
+
30
+ def get_all_user_collection_from_web
31
+ soapmsg = build_soap_envelope do |type, builder|
32
+ if(type == :header)
33
+ else
34
+ builder.GetAllUserCollectionFromWeb {
35
+ builder.parent.default_namespace = @default_ns
36
+ }
37
+ end
38
+ end
39
+ soaprsp = Nokogiri::XML(send_soap_request(soapmsg.doc.to_xml))
40
+ ns = {'xmlns' => @default_ns}
41
+ users = []
42
+ soaprsp.xpath('//xmlns:Users/xmlns:User', ns).each do |li|
43
+ users << Types::User.new(self,li)
44
+ end
45
+ users
46
+ end
47
+
48
+ # Returns information about a specified user
49
+ # @param [String] user A username to retrieve infor for. It must be of the form
50
+ # DOMAIN\username
51
+ def get_user_info(user)
52
+ soapmsg = build_soap_envelope do |type, builder|
53
+ if(type == :header)
54
+ else
55
+ builder.GetUserInfo {
56
+ builder.parent.default_namespace = @default_ns
57
+ builder.userLoginName(user)
58
+ }
59
+ end
60
+ end
61
+ soaprsp = Nokogiri::XML(send_soap_request(soapmsg.doc.to_xml))
62
+ ns = {'xmlns' => @default_ns}
63
+ user = soaprsp.xpath('//xmlns:GetUserInfo/xmlns:User', ns).first
64
+ Types::User.new(self,user)
65
+ end
66
+
67
+ # Get user logins from e-mail addresses
68
+ # @see http://msdn.microsoft.com/en-us/library/ms774890(v=office.12).aspx
69
+ # @param [Array<String>] emails an Array of e-mail addresses to search for
70
+ # @return [Hash] a hash of email to login mappings
71
+ def get_user_login_from_email(emails)
72
+ soapmsg = build_soap_envelope do |type, builder|
73
+ if(type == :header)
74
+ else
75
+ builder.GetUserLoginFromEmail {
76
+ builder.parent.default_namespace = @default_ns
77
+ builder.emailXml {
78
+ builder.Users {
79
+ emails.each do |email|
80
+ builder.User(:Email => email)
81
+ end
82
+ }
83
+ }
84
+ }
85
+ end
86
+ end
87
+ soaprsp = Nokogiri::XML(send_soap_request(soapmsg.doc.to_xml))
88
+ ns = {'xmlns' => @default_ns}
89
+ logins = {}
90
+ soaprsp.xpath('//xmlns:GetUserLoginFromEmail/xmlns:User', ns).each do |li|
91
+ logins[li['Email']] = li['Login']
92
+ end
93
+ logins
94
+ end
95
+
96
+ end
@@ -0,0 +1,65 @@
1
+ =begin
2
+ This file is part of ViewpointSPWS; the Ruby library for Microsoft Sharepoint Web Services.
3
+
4
+ Copyright © 2011 Dan Wanek <dan.wanek@gmail.com>
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ =end
18
+
19
+ # This module represents the common elements of Sharepoint Web Services
20
+ module Viewpoint::SPWS::Websvc
21
+ module WebServiceBase
22
+ include Viewpoint::SPWS
23
+
24
+ NAMESPACES = {
25
+ 'xmlns:soap' => 'http://www.w3.org/2003/05/soap-envelope',
26
+ 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
27
+ 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
28
+ }.freeze
29
+
30
+ attr_reader :spcon
31
+
32
+ # @param [Viewpoint::SPWS::Connection] spcon A connection to a Sharepoint Site
33
+ def initialize(spcon)
34
+ @log = Logging.logger[self.class.name.to_s.to_sym]
35
+ @spcon = spcon
36
+ raise "Auth failure" unless(@spcon.authenticate(@ws_endpoint))
37
+ end
38
+
39
+ private
40
+
41
+ def build_soap_envelope
42
+ new_ent = Nokogiri::XML::Builder.new do |xml|
43
+ xml.Envelope(NAMESPACES) do |ent|
44
+ xml.parent.namespace = xml.parent.namespace_definitions.find{|ns|ns.prefix=="soap"}
45
+ ent['soap'].Header {
46
+ yield(:header, ent) if block_given?
47
+ }
48
+ ent['soap'].Body {
49
+ yield(:body, ent) if block_given?
50
+ }
51
+ end
52
+ end
53
+ end
54
+
55
+ # Send the SOAP request to the endpoint
56
+ # @param [String] soapmsg an XML formatted string
57
+ def send_soap_request(soapmsg)
58
+ @log.debug "Sending SOAP Request:\n----------------\n#{soapmsg}\n----------------"
59
+ respmsg = @spcon.post(@ws_endpoint, soapmsg)
60
+ @log.debug "Received SOAP Response:\n----------------\n#{Nokogiri::XML(respmsg).to_xml}\n----------------"
61
+ respmsg
62
+ end
63
+
64
+ end
65
+ end
@@ -0,0 +1,17 @@
1
+ =begin
2
+ This file is part of ViewpointSPWS; the Ruby library for Microsoft Sharepoint Web Services.
3
+
4
+ Copyright © 2011 Dan Wanek <dan.wanek@gmail.com>
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ =end
@@ -0,0 +1,22 @@
1
+ $: << File.dirname(__FILE__) + '/../lib/'
2
+ require 'yaml'
3
+ require 'date'
4
+ require 'viewpoint/spws'
5
+
6
+ # To run these tests put configuration into a file called site_info.yaml
7
+ # ---
8
+ # :site: sp_site_base
9
+ # :user: user
10
+ # :pass: pass
11
+
12
+ module SpecHelper
13
+ def self.specdir
14
+ File.dirname(__FILE__)
15
+ end
16
+ end
17
+
18
+ RSpec.configure do |config|
19
+ config.before(:all) do
20
+ @conf = YAML.load(File.open("#{SpecHelper.specdir}/site_info.yaml",'r'))
21
+ end
22
+ end
@@ -0,0 +1,43 @@
1
+ $: << File.dirname(__FILE__)
2
+ require 'spec_helper'
3
+
4
+ describe 'Test the Sharepoint List web service functionality' do
5
+ before(:all) do
6
+ @scli = Viewpoint::SPWSClient.new(@conf[:site], @conf[:user], @conf[:pass])
7
+ end
8
+
9
+ it 'should return the Lists web service' do
10
+ @scli.lists_ws.should be_an_instance_of Viewpoint::SPWS::Websvc::Lists
11
+ end
12
+
13
+ it 'should return the Copy web service' do
14
+ @scli.copy_ws.should be_an_instance_of Viewpoint::SPWS::Websvc::Copy
15
+ end
16
+
17
+ it 'should return the UserGroup web service' do
18
+ @scli.usergroup_ws.should be_an_instance_of Viewpoint::SPWS::Websvc::UserGroup
19
+ end
20
+
21
+ it 'should retrieve the Lists from a given Sharepoint site' do
22
+ lists = @scli.get_lists
23
+ lists.should be_an_instance_of(Array)
24
+ lists.first.should be_a_kind_of(Viewpoint::SPWS::Types::List)
25
+ end
26
+
27
+ it 'should retrieve the Items from a given List' do
28
+ lists = @scli.get_lists
29
+ items = lists.first.items
30
+ items.should be_an_instance_of(Array)
31
+ end
32
+
33
+ it 'should retrieve a User given a domain login' do
34
+ u = @scli.get_user @conf[:user_login]
35
+ u.should be_an_instance_of(Viewpoint::SPWS::Types::User)
36
+ end
37
+
38
+ it 'should retrieve a User given an e-mail' do
39
+ u = @scli.get_user @conf[:user_email]
40
+ u.should be_an_instance_of(Viewpoint::SPWS::Types::User)
41
+ end
42
+
43
+ end
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "viewpoint/spws/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "viewpoint-spws"
7
+ s.version = Viewpoint::SPWS::VERSION
8
+ s.date = Date.today.to_s
9
+ s.author = "Dan Wanek"
10
+ s.email = "dan.wanek@gmail.com"
11
+ s.homepage = "http://github.com/zenchild/viewpoint-spws"
12
+ s.summary = "A Ruby client access library for Microsoft Sharepoint Web Services (SPWS)"
13
+ s.description = %q{TODO: Write a gem description}
14
+ s.description = <<-EOF
15
+ A Ruby client access library for Microsoft Sharepoint Web Services (SPWS). It is a work in progress. Methods are still being added from the Sharepoint API docs.
16
+ EOF
17
+ s.required_ruby_version = '>= 1.8.7'
18
+
19
+ s.rubyforge_project = nil
20
+
21
+ s.files = `git ls-files`.split("\n")
22
+ s.test_files = `git ls-files -- {spec}/*`.split("\n")
23
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
24
+ s.require_paths = ["lib"]
25
+ s.rdoc_options = %w(-x spec/)
26
+ s.extra_rdoc_files = %w(README.md LICENSE)
27
+
28
+ s.add_runtime_dependency 'nokogiri', '~> 1.5.0'
29
+ s.add_runtime_dependency 'httpclient', '~> 2.2.4'
30
+ s.add_runtime_dependency 'logging', '~> 1.6.1'
31
+ s.add_runtime_dependency 'rubyntlm'
32
+ end
metadata ADDED
@@ -0,0 +1,120 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: viewpoint-spws
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Dan Wanek
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: &11969560 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.5.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *11969560
25
+ - !ruby/object:Gem::Dependency
26
+ name: httpclient
27
+ requirement: &11969100 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 2.2.4
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *11969100
36
+ - !ruby/object:Gem::Dependency
37
+ name: logging
38
+ requirement: &11968540 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 1.6.1
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *11968540
47
+ - !ruby/object:Gem::Dependency
48
+ name: rubyntlm
49
+ requirement: &11968100 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *11968100
58
+ description: ! ' A Ruby client access library for Microsoft Sharepoint Web Services
59
+ (SPWS). It is a work in progress. Methods are still being added from the Sharepoint
60
+ API docs.
61
+
62
+ '
63
+ email: dan.wanek@gmail.com
64
+ executables: []
65
+ extensions: []
66
+ extra_rdoc_files:
67
+ - README.md
68
+ - LICENSE
69
+ files:
70
+ - .rvmrc
71
+ - Gemfile
72
+ - LICENSE
73
+ - README.md
74
+ - Rakefile
75
+ - lib/extensions/string.rb
76
+ - lib/viewpoint/spws.rb
77
+ - lib/viewpoint/spws/connection.rb
78
+ - lib/viewpoint/spws/spws_client.rb
79
+ - lib/viewpoint/spws/types.rb
80
+ - lib/viewpoint/spws/types/document_library.rb
81
+ - lib/viewpoint/spws/types/list.rb
82
+ - lib/viewpoint/spws/types/list_item.rb
83
+ - lib/viewpoint/spws/types/tasks_list.rb
84
+ - lib/viewpoint/spws/types/user.rb
85
+ - lib/viewpoint/spws/version.rb
86
+ - lib/viewpoint/spws/websvc/copy.rb
87
+ - lib/viewpoint/spws/websvc/lists.rb
88
+ - lib/viewpoint/spws/websvc/user_group.rb
89
+ - lib/viewpoint/spws/websvc/web_service_base.rb
90
+ - preamble
91
+ - spec/spec_helper.rb
92
+ - spec/spws_client_spec.rb
93
+ - viewpoint-spws.gemspec
94
+ homepage: http://github.com/zenchild/viewpoint-spws
95
+ licenses: []
96
+ post_install_message:
97
+ rdoc_options:
98
+ - -x
99
+ - spec/
100
+ require_paths:
101
+ - lib
102
+ required_ruby_version: !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: 1.8.7
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ requirements: []
115
+ rubyforge_project:
116
+ rubygems_version: 1.8.10
117
+ signing_key:
118
+ specification_version: 3
119
+ summary: A Ruby client access library for Microsoft Sharepoint Web Services (SPWS)
120
+ test_files: []