sp_2010 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in sp_2010.gemspec
4
+ gemspec
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
@@ -0,0 +1,3 @@
1
+ module Sp2010
2
+ VERSION = "0.0.2"
3
+ 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
@@ -0,0 +1,2 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'sp_2010')
2
+ require 'httparty'
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