sp_2010 0.0.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.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/lib/file.rb +38 -0
- data/lib/files_response.rb +21 -0
- data/lib/sp_2010/version.rb +3 -0
- data/lib/sp_2010.rb +26 -0
- data/sp_2010.gemspec +30 -0
- data/spec/get_files_spec.rb +21 -0
- data/spec/spec_helper.rb +2 -0
- metadata +119 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/lib/file.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
module Sp2010
|
2
|
+
class File
|
3
|
+
attr_reader :xml
|
4
|
+
attr :name, :uri, :url, :path, :size, :is_folder, :is_aspx, :created_at, :updated_at, :etag
|
5
|
+
|
6
|
+
def initialize(node)
|
7
|
+
@xml = node
|
8
|
+
|
9
|
+
@name = dav_prop_at("./DAV:displayname").content
|
10
|
+
@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
|
+
|
14
|
+
@is_aspx = name[-5..-1] == ".aspx"
|
15
|
+
|
16
|
+
length = dav_prop_at("./DAV:getcontentlength").content
|
17
|
+
@size = length ? length.to_i : nil
|
18
|
+
|
19
|
+
isFolder = dav_prop_at("./DAV:isFolder")
|
20
|
+
@is_folder = isFolder ? isFolder.content == "t" : false
|
21
|
+
|
22
|
+
c = dav_prop_at("./DAV:getetag").content
|
23
|
+
@etag = c.match(/^['"](.*)['"]$/)[1]
|
24
|
+
|
25
|
+
@updated_at = dav_prop_at("./DAV:getlastmodified").content
|
26
|
+
@created_at = dav_prop_at("./DAV:creationdate").content
|
27
|
+
end
|
28
|
+
|
29
|
+
def webdav_namespace
|
30
|
+
webdav_namespace = {"DAV" => "DAV:"}
|
31
|
+
end
|
32
|
+
|
33
|
+
def dav_prop_at(prop)
|
34
|
+
@xml.xpath("./DAV:propstat/DAV:prop", webdav_namespace).at_xpath(prop, webdav_namespace)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,21 @@
|
|
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
|
data/lib/sp_2010.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require "sp_2010/version"
|
2
|
+
require 'httparty'
|
3
|
+
require 'json'
|
4
|
+
require 'net/http'
|
5
|
+
require 'uri'
|
6
|
+
require 'net/dav'
|
7
|
+
require 'file'
|
8
|
+
require 'files_response'
|
9
|
+
|
10
|
+
module Sp2010
|
11
|
+
class Client
|
12
|
+
include HTTParty
|
13
|
+
|
14
|
+
def self.get_files(host, user, password)
|
15
|
+
uri = URI.parse(host)
|
16
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
17
|
+
req = Net::HTTP::Propfind.new(uri.request_uri)
|
18
|
+
req.basic_auth(user, password)
|
19
|
+
|
20
|
+
res = http.request(req)
|
21
|
+
|
22
|
+
FilesResponse.new(res)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
data/sp_2010.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "sp_2010/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "sp_2010"
|
7
|
+
s.version = Sp2010::VERSION
|
8
|
+
s.authors = ["Jonathan Birkholz"]
|
9
|
+
s.email = ["rookieone@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Ruby gem for accessing files on Sharepoint 2010}
|
12
|
+
s.description = %q{Ruby gem for accessing files on Sharepoint 2010}
|
13
|
+
|
14
|
+
s.rubyforge_project = "sp_2010"
|
15
|
+
|
16
|
+
s.add_development_dependency "rspec"
|
17
|
+
s.add_development_dependency "httparty"
|
18
|
+
s.add_development_dependency "json"
|
19
|
+
s.add_development_dependency "net_dav"
|
20
|
+
s.add_development_dependency "nokogiri"
|
21
|
+
|
22
|
+
s.files = `git ls-files`.split("\n")
|
23
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
24
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
25
|
+
s.require_paths = ["lib"]
|
26
|
+
|
27
|
+
# specify any dependencies here; for example:
|
28
|
+
# s.add_development_dependency "rspec"
|
29
|
+
# s.add_runtime_dependency "rest-client"
|
30
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Get Files" do
|
4
|
+
|
5
|
+
context "invalid login" do
|
6
|
+
before(:each) do
|
7
|
+
@result = Sp2010::Client.get_files(ENV["SP_2010_HOST"], ENV["SP_2010_USERNAME"], "badpassword")
|
8
|
+
end
|
9
|
+
it { @result.should_not be_valid }
|
10
|
+
it { @result.files.count.should == 0 }
|
11
|
+
end
|
12
|
+
|
13
|
+
context "valid" do
|
14
|
+
before(:each) do
|
15
|
+
@result = Sp2010::Client.get_files(ENV["SP_2010_HOST"], ENV["SP_2010_USERNAME"], ENV["SP_2010_PASSWORD"])
|
16
|
+
end
|
17
|
+
it { @result.should_not be_nil }
|
18
|
+
it { @result.files.count.should > 0 }
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sp_2010
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.2
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Jonathan Birkholz
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-11-28 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rspec
|
17
|
+
prerelease: false
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
type: :development
|
25
|
+
version_requirements: *id001
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: httparty
|
28
|
+
prerelease: false
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: "0"
|
35
|
+
type: :development
|
36
|
+
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: json
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: "0"
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: net_dav
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
57
|
+
type: :development
|
58
|
+
version_requirements: *id004
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: nokogiri
|
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
|
+
description: Ruby gem for accessing files on Sharepoint 2010
|
71
|
+
email:
|
72
|
+
- rookieone@gmail.com
|
73
|
+
executables: []
|
74
|
+
|
75
|
+
extensions: []
|
76
|
+
|
77
|
+
extra_rdoc_files: []
|
78
|
+
|
79
|
+
files:
|
80
|
+
- .gitignore
|
81
|
+
- Gemfile
|
82
|
+
- Rakefile
|
83
|
+
- lib/file.rb
|
84
|
+
- lib/files_response.rb
|
85
|
+
- lib/sp_2010.rb
|
86
|
+
- lib/sp_2010/version.rb
|
87
|
+
- sp_2010.gemspec
|
88
|
+
- spec/get_files_spec.rb
|
89
|
+
- spec/spec_helper.rb
|
90
|
+
homepage: ""
|
91
|
+
licenses: []
|
92
|
+
|
93
|
+
post_install_message:
|
94
|
+
rdoc_options: []
|
95
|
+
|
96
|
+
require_paths:
|
97
|
+
- lib
|
98
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: "0"
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: "0"
|
110
|
+
requirements: []
|
111
|
+
|
112
|
+
rubyforge_project: sp_2010
|
113
|
+
rubygems_version: 1.8.8
|
114
|
+
signing_key:
|
115
|
+
specification_version: 3
|
116
|
+
summary: Ruby gem for accessing files on Sharepoint 2010
|
117
|
+
test_files:
|
118
|
+
- spec/get_files_spec.rb
|
119
|
+
- spec/spec_helper.rb
|