restful-sharepoint 0.2.4 → 0.2.5
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.
- checksums.yaml +4 -4
 - data/lib/restful-sharepoint/connection.rb +14 -11
 - data/lib/restful-sharepoint/objects/attachment.rb +1 -1
 - data/lib/restful-sharepoint/objects/file.rb +1 -1
 - data/lib/restful-sharepoint/objects/list.rb +1 -1
 - data/lib/restful-sharepoint/version.rb +1 -1
 - data/lib/restful-sharepoint.rb +1 -3
 - data/restful-sharepoint.gemspec +1 -1
 - data/spec/restfulsharepoint_spec.rb +2 -2
 - metadata +11 -11
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 44cef9ce93eb602accca9fff9cc11e3ee4a5a304b4351c7638b7453d6e789cfc
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 950a9322055853209cb87413dd802d3128ec43eac8ab888060bd13940fea1f49
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 9094e55c0e4d386192d4afa5df01455f93613e54e85edbc71ccf5628110bb7e323a31134fdc4710d509c136b34763c84e30a8ad24b34cc9a97303db7a5ec8684
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 5468b96644de62e3338495790bc10ed7963fcd4c66a03886de54b9eaae1533651219f1456ffd746dbfc315f02e42657dcb9a0e87c90dec352529065f2353b65a
         
     | 
| 
         @@ -23,22 +23,25 @@ module RestfulSharePoint 
     | 
|
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                # Path can be either relative to the site URL, or a complete URL itself.
         
     | 
| 
       25 
25 
     | 
    
         
             
                # Takes an optional `options` hash which are any number of valid OData query options (dollar sign prefix is added automatically)
         
     | 
| 
       26 
     | 
    
         
            -
                # Also takes an optional block that is provided the HTTPI::Request instance, allowing customisation of the request.
         
     | 
| 
       27 
26 
     | 
    
         
             
                def request(path, method, options: {}, body: nil)
         
     | 
| 
       28 
27 
     | 
    
         
             
                  url = URI.parse(path).is_a?(URI::HTTP) ? path : "#{@site_url}#{path}"
         
     | 
| 
       29 
28 
     | 
    
         
             
                  options_str = options.map { |k,v| "$#{k}=#{CGI.escape v.to_s}" }.join('&')
         
     | 
| 
       30 
29 
     | 
    
         
             
                  url += "?#{options_str}"
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                   
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                  httpclient = HTTPClient.new
         
     | 
| 
      
 32 
     | 
    
         
            +
                  httpclient.set_auth(nil, @username, @password) if @username
         
     | 
| 
      
 33 
     | 
    
         
            +
                  httpclient.ssl_config.set_default_paths
         
     | 
| 
      
 34 
     | 
    
         
            +
                  headers = {'accept' => 'application/json; odata=verbose'}
         
     | 
| 
       33 
35 
     | 
    
         
             
                  if body
         
     | 
| 
       34 
     | 
    
         
            -
                     
     | 
| 
       35 
     | 
    
         
            -
                     
     | 
| 
       36 
     | 
    
         
            -
                     
     | 
| 
       37 
     | 
    
         
            -
                     
     | 
| 
      
 36 
     | 
    
         
            +
                    body = JSON.dump(body).gsub('/', '\\/') # SharePoint requires forward slashes be escaped in JSON (WTF!!!)
         
     | 
| 
      
 37 
     | 
    
         
            +
                    headers['Content-Type'] = 'application/json'
         
     | 
| 
      
 38 
     | 
    
         
            +
                    headers['X-HTTP-Method'] = 'MERGE' # TODO: Extend logic to support all operations
         
     | 
| 
      
 39 
     | 
    
         
            +
                    headers['If-Match'] = '*'
         
     | 
| 
       38 
40 
     | 
    
         
             
                  end
         
     | 
| 
       39 
     | 
    
         
            -
                   
     | 
| 
       40 
     | 
    
         
            -
                  LOG.info "Making HTTP request to: #{ 
     | 
| 
       41 
     | 
    
         
            -
                  response =  
     | 
| 
      
 41 
     | 
    
         
            +
                  
         
     | 
| 
      
 42 
     | 
    
         
            +
                  LOG.info "Making HTTP request to: #{url}"
         
     | 
| 
      
 43 
     | 
    
         
            +
                  response = httpclient.request(method, url, nil, body, headers)
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
       42 
45 
     | 
    
         
             
                  if response.body.empty?
         
     | 
| 
       43 
46 
     | 
    
         
             
                    if response.code >= 300
         
     | 
| 
       44 
47 
     | 
    
         
             
                      raise RestError, "Server returned HTTP status #{response.code} with no message body."
         
     | 
| 
         @@ -84,7 +87,7 @@ module RestfulSharePoint 
     | 
|
| 
       84 
87 
     | 
    
         
             
                def parse_tree(tree)
         
     | 
| 
       85 
88 
     | 
    
         
             
                  indices = tree.respond_to?(:keys) ? tree.keys : 0...tree.length
         
     | 
| 
       86 
89 
     | 
    
         
             
                  indices.each do |i|
         
     | 
| 
       87 
     | 
    
         
            -
                    if tree[i]. 
     | 
| 
      
 90 
     | 
    
         
            +
                    if tree[i].is_a?(String) && tree[i] =~ /^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$/
         
     | 
| 
       88 
91 
     | 
    
         
             
                      tree[i] = DateTime.parse(tree[i]).new_offset(DateTime.now.offset)
         
     | 
| 
       89 
92 
     | 
    
         
             
                    elsif tree[i].respond_to?(:gsub!)
         
     | 
| 
       90 
93 
     | 
    
         
             
                      # Convert relative paths to absolute URL's.
         
     | 
| 
         @@ -3,7 +3,7 @@ module RestfulSharePoint 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
                def self.from_title(title, connection)
         
     | 
| 
       5 
5 
     | 
    
         
             
                  new(connection: connection).tap do |list|
         
     | 
| 
       6 
     | 
    
         
            -
                    list.define_singleton_method(:endpoint) { "/_api/web/lists/getbytitle('#{URI.encode title}')" }
         
     | 
| 
      
 6 
     | 
    
         
            +
                    list.define_singleton_method(:endpoint) { "/_api/web/lists/getbytitle('#{Addressable::URI.encode title}')" }
         
     | 
| 
       7 
7 
     | 
    
         
             
                  end
         
     | 
| 
       8 
8 
     | 
    
         
             
                end
         
     | 
| 
       9 
9 
     | 
    
         | 
    
        data/lib/restful-sharepoint.rb
    CHANGED
    
    | 
         @@ -1,13 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'json'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'httpi'
         
     | 
| 
       3 
2 
     | 
    
         
             
            require 'httpclient'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'addressable'
         
     | 
| 
       4 
4 
     | 
    
         
             
            require 'rubyntlm'
         
     | 
| 
       5 
5 
     | 
    
         
             
            require 'cgi'
         
     | 
| 
       6 
6 
     | 
    
         
             
            require 'logger'
         
     | 
| 
       7 
7 
     | 
    
         
             
            require 'forwardable'
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
            HTTPI.adapter = :httpclient
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
9 
     | 
    
         
             
            module RestfulSharePoint
         
     | 
| 
       12 
10 
     | 
    
         
             
              OBJECT_MAP = {
         
     | 
| 
       13 
11 
     | 
    
         
             
                "SP.Web" => :Web,
         
     | 
    
        data/restful-sharepoint.gemspec
    CHANGED
    
    | 
         @@ -12,7 +12,7 @@ Gem::Specification.new 'restful-sharepoint', RestfulSharePoint::VERSION do |s| 
     | 
|
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
              s.required_ruby_version = '>= 2.0.0'
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
              s.add_dependency 'httpi', '~> 2.4'
         
     | 
| 
       16 
15 
     | 
    
         
             
              s.add_dependency 'httpclient', '~> 2.8'
         
     | 
| 
       17 
16 
     | 
    
         
             
              s.add_dependency 'rubyntlm', '~> 0.6'
         
     | 
| 
      
 17 
     | 
    
         
            +
              s.add_dependency 'addressable', '~> 2.8'
         
     | 
| 
       18 
18 
     | 
    
         
             
            end
         
     | 
| 
         @@ -23,13 +23,13 @@ module RestfulSharePoint 
     | 
|
| 
       23 
23 
     | 
    
         
             
                end
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
                it "can work with an object" do
         
     | 
| 
       26 
     | 
    
         
            -
                  list = Object.new(connection: c, properties: c.get("/_api/web/lists/getbytitle('#{URI.encode CONFIG[:test_list_title]}')"))
         
     | 
| 
      
 26 
     | 
    
         
            +
                  list = Object.new(connection: c, properties: c.get("/_api/web/lists/getbytitle('#{Addressable::URI.encode CONFIG[:test_list_title]}')"))
         
     | 
| 
       27 
27 
     | 
    
         
             
                  expect(list['Title']).to eq(CONFIG[:test_list_title])
         
     | 
| 
       28 
28 
     | 
    
         
             
                end
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
                it "can automatically get an object or collection" do
         
     | 
| 
       31 
31 
     | 
    
         
             
                  lists = c.get_as_object('/_api/web/lists/')
         
     | 
| 
       32 
     | 
    
         
            -
                  list = c.get_as_object("/_api/web/lists/getbytitle('#{URI.encode CONFIG[:test_list_title]}')")
         
     | 
| 
      
 32 
     | 
    
         
            +
                  list = c.get_as_object("/_api/web/lists/getbytitle('#{Addressable::URI.encode CONFIG[:test_list_title]}')")
         
     | 
| 
       33 
33 
     | 
    
         
             
                  expect(lists).to be_a(Collection)
         
     | 
| 
       34 
34 
     | 
    
         
             
                  expect(list).to be_a(Object)
         
     | 
| 
       35 
35 
     | 
    
         
             
                end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,57 +1,57 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: restful-sharepoint
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.2.5
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Tom Wardrop
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2021-09-21 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
     | 
    
         
            -
              name:  
     | 
| 
      
 14 
     | 
    
         
            +
              name: httpclient
         
     | 
| 
       15 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
17 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version: '2. 
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '2.8'
         
     | 
| 
       20 
20 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       21 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
24 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
     | 
    
         
            -
                    version: '2. 
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '2.8'
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
     | 
    
         
            -
              name:  
     | 
| 
      
 28 
     | 
    
         
            +
              name: rubyntlm
         
     | 
| 
       29 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
30 
     | 
    
         
             
                requirements:
         
     | 
| 
       31 
31 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       32 
32 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '0.6'
         
     | 
| 
       34 
34 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       35 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       36 
36 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
37 
     | 
    
         
             
                requirements:
         
     | 
| 
       38 
38 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       39 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '0.6'
         
     | 
| 
       41 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
     | 
    
         
            -
              name:  
     | 
| 
      
 42 
     | 
    
         
            +
              name: addressable
         
     | 
| 
       43 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       44 
44 
     | 
    
         
             
                requirements:
         
     | 
| 
       45 
45 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       46 
46 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       47 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 47 
     | 
    
         
            +
                    version: '2.8'
         
     | 
| 
       48 
48 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       49 
49 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       50 
50 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       51 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
52 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       53 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       54 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 54 
     | 
    
         
            +
                    version: '2.8'
         
     | 
| 
       55 
55 
     | 
    
         
             
            description: Provides a convenient object model to the OData REST API of SharePoint
         
     | 
| 
       56 
56 
     | 
    
         
             
              2013 and newer.
         
     | 
| 
       57 
57 
     | 
    
         
             
            email: tomw@msc.qld.gov.au
         
     |