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 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