sp_2010 0.0.5 → 0.0.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.
@@ -1,3 +1,5 @@
1
+ require 'domainatrix'
2
+
1
3
  module Sp2010
2
4
  class File
3
5
  attr_reader :xml
@@ -8,8 +10,8 @@ module Sp2010
8
10
 
9
11
  @name = dav_prop_at("./DAV:displayname").content
10
12
  @url = @xml.at_xpath("./DAV:href", webdav_namespace).content
11
- @uri = URI.parse(URI.escape(@url))
12
- @path = Pathname.new URI.unescape uri.path
13
+ @uri = Domainatrix.parse(@url)
14
+ @path = @uri.path
13
15
 
14
16
  @is_aspx = name[-5..-1] == ".aspx"
15
17
 
@@ -4,22 +4,63 @@ require 'json'
4
4
  require 'net/http'
5
5
  require 'uri'
6
6
  require 'file'
7
- require 'files_response'
7
+ require 'nokogiri'
8
+ require 'ntlm/http'
8
9
 
9
10
  module Sp2010
10
11
  class Client
11
12
  include HTTParty
12
13
 
13
- def self.get_files(host, user, password)
14
+ def self.get_files(options={})
15
+ host = options[:host]
16
+ domain = options[:domain]
17
+ user = options[:user]
18
+ password = options[:password]
14
19
  uri = URI.parse(host)
15
20
  http = Net::HTTP.new(uri.host, uri.port)
21
+
22
+ if (use_ssl?(host))
23
+ http.use_ssl = true
24
+ end
25
+
16
26
  req = Net::HTTP::Propfind.new(uri.request_uri)
17
- req.basic_auth(user, password)
27
+
28
+ if domain
29
+ req.ntlm_auth(user, domain, password)
30
+ else
31
+ req.basic_auth(user, password)
32
+ end
18
33
 
19
34
  res = http.request(req)
20
35
 
21
36
  FilesResponse.new(res)
22
37
  end
23
38
 
39
+ def self.use_ssl?(host)
40
+ x = URI.split(host)
41
+ false if x.count == 0
42
+ x[0] == "https"
43
+ end
44
+
45
+ end
46
+
47
+ class FilesResponse
48
+ attr :files, :error_message
49
+
50
+ def initialize(response)
51
+ if response.code == "401"
52
+ @error_message = "Unauthorized access. Check your username and password."
53
+ @files = []
54
+ elsif response.code == "207"
55
+ @error_message = ""
56
+ xml= ::Nokogiri::XML(response.body)
57
+ @files = (xml).xpath("./D:multistatus/D:response").map {|node| File.new(node) }
58
+ end
59
+ end
60
+
61
+ def valid?
62
+ @error_message.empty?
63
+ end
64
+
24
65
  end
25
66
  end
@@ -1,3 +1,3 @@
1
1
  module Sp2010
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -17,6 +17,8 @@ Gem::Specification.new do |s|
17
17
  s.add_development_dependency "httparty"
18
18
  s.add_development_dependency "json"
19
19
  s.add_development_dependency "nokogiri"
20
+ s.add_development_dependency "ruby-ntlm"
21
+ s.add_development_dependency "domainatrix"
20
22
 
21
23
  s.files = `git ls-files`.split("\n")
22
24
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -4,7 +4,11 @@ describe "Get Files" do
4
4
 
5
5
  context "invalid login" do
6
6
  before(:each) do
7
- @result = Sp2010::Client.get_files(ENV["SP_2010_HOST"], ENV["SP_2010_USERNAME"], "badpassword")
7
+ @result = Sp2010::Client.get_files({
8
+ :host => ENV["SP_2010_HOST"],
9
+ :user => ENV["SP_2010_USERNAME"],
10
+ :password => "badpassword"
11
+ })
8
12
  end
9
13
  it { @result.should_not be_valid }
10
14
  it { @result.files.count.should == 0 }
@@ -12,10 +16,36 @@ describe "Get Files" do
12
16
 
13
17
  context "valid" do
14
18
  before(:each) do
15
- @result = Sp2010::Client.get_files(ENV["SP_2010_HOST"], ENV["SP_2010_USERNAME"], ENV["SP_2010_PASSWORD"])
19
+ @result = Sp2010::Client.get_files({
20
+ :host => ENV["SP_2010_HOST"],
21
+ :user => ENV["SP_2010_USERNAME"],
22
+ :password => ENV["SP_2010_PASSWORD"]
23
+ })
16
24
  end
17
- it { @result.should_not be_nil }
18
25
  it { @result.files.count.should > 0 }
19
26
  end
20
27
 
28
+ context "valid scenario 2" do
29
+ before(:each) do
30
+ @result = Sp2010::Client.get_files({
31
+ :host => ENV["SP_2010_HOST_2"],
32
+ :domain => ENV["SP_2010_DOMAIN_2"],
33
+ :user => ENV["SP_2010_USERNAME_2"],
34
+ :password => ENV["SP_2010_PASSWORD_2"]
35
+ })
36
+ end
37
+ it { @result.files.count.should > 0 }
38
+ end
39
+
40
+ context "valid scenario 3" do
41
+ before(:each) do
42
+ @result = Sp2010::Client.get_files({
43
+ :host => ENV["SP_2010_HOST_3"],
44
+ :user => ENV["SP_2010_USERNAME_3"],
45
+ :password => ENV["SP_2010_PASSWORD_3"]
46
+ })
47
+ end
48
+ it { @result.files.count.should > 0 }
49
+ end
50
+
21
51
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: sp_2010
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.5
5
+ version: 0.0.6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jonathan Birkholz
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-11-28 00:00:00 Z
13
+ date: 2011-12-08 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
@@ -56,6 +56,28 @@ dependencies:
56
56
  version: "0"
57
57
  type: :development
58
58
  version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
60
+ name: ruby-ntlm
61
+ prerelease: false
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ type: :development
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
71
+ name: domainatrix
72
+ prerelease: false
73
+ requirement: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: "0"
79
+ type: :development
80
+ version_requirements: *id006
59
81
  description: Ruby gem for accessing files on Sharepoint 2010
60
82
  email:
61
83
  - rookieone@gmail.com
@@ -70,7 +92,6 @@ files:
70
92
  - Gemfile
71
93
  - Rakefile
72
94
  - lib/file.rb
73
- - lib/files_response.rb
74
95
  - lib/sp_2010.rb
75
96
  - lib/sp_2010/version.rb
76
97
  - sp_2010.gemspec
@@ -1,21 +0,0 @@
1
- module Sp2010
2
- class FilesResponse
3
- attr :files, :error_message
4
-
5
- def initialize(response)
6
- if response.code == "401"
7
- @error_message = "Unauthorized access. Check your username and password."
8
- @files = []
9
- elsif response.code == "207"
10
- @error_message = ""
11
- xml= Nokogiri::XML(response.body)
12
- @files = (xml).xpath("./D:multistatus/D:response").map {|node| File.new(node) }
13
- end
14
- end
15
-
16
- def valid?
17
- @error_message.empty?
18
- end
19
-
20
- end
21
- end