springcm-sdk 0.2.0 → 0.3.0
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/README.md +1 -3
 - data/lib/springcm-sdk/client.rb +6 -6
 - data/lib/springcm-sdk/folder.rb +11 -6
 - data/lib/springcm-sdk/helpers.rb +13 -0
 - data/lib/springcm-sdk/resource_list.rb +56 -0
 - data/lib/springcm-sdk/version.rb +1 -1
 - metadata +6 -5
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 70227f140ad8a68e84bd32aec03aeb899633107045e5c851e40f8b7d73068ede
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: bdc7c10bea0a4d8325816b55252d585a3d1898b53a040978023498e6f19cfb93
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 43a96d2cebb32bd566e90336517e0826bb21bf261a8c7b29e8c990ab087146fa530011d6086ef580691d01e3c065a0f5c85b52ad2d60e5ee0d66ebfbae836e6b
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: cc362d457fd602088481a9f4de399f670f1ffc6f50992447be13084470c6d081eab94dbd4834b45429520743edd406b7d50ae215ae0c28bce0392129fbb45a0c
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -48,6 +48,4 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/paulho 
     | 
|
| 
       48 
48 
     | 
    
         
             
            The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
         
     | 
| 
       49 
49 
     | 
    
         | 
| 
       50 
50 
     | 
    
         
             
            [SpringCM REST API Guide]: https://developer.springcm.com/guides/rest-api-guide
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
            [//]: # (TODO: Replace version tag below with vX.Y.Z)
         
     | 
| 
       53 
     | 
    
         
            -
            [documentation]: https://rubydoc.info/github/paulholden2/springcm-sdk/0.1.1
         
     | 
| 
      
 51 
     | 
    
         
            +
            [documentation]: https://rubydoc.info/github/paulholden2/springcm-sdk
         
     | 
    
        data/lib/springcm-sdk/client.rb
    CHANGED
    
    | 
         @@ -90,17 +90,17 @@ module Springcm 
     | 
|
| 
       90 
90 
     | 
    
         
             
                  end
         
     | 
| 
       91 
91 
     | 
    
         
             
                end
         
     | 
| 
       92 
92 
     | 
    
         | 
| 
       93 
     | 
    
         
            -
                def folder( 
     | 
| 
       94 
     | 
    
         
            -
                  if  
     | 
| 
      
 93 
     | 
    
         
            +
                def folder(path: nil, uid: nil)
         
     | 
| 
      
 94 
     | 
    
         
            +
                  if (path.nil? && uid.nil?) || (!path.nil? && !uid.nil?)
         
     | 
| 
       95 
95 
     | 
    
         
             
                    raise ArgumentError.new("Specify exactly one of: path, uid")
         
     | 
| 
       96 
96 
     | 
    
         
             
                  end
         
     | 
| 
       97 
97 
     | 
    
         
             
                  conn = authorized_connection(url: object_api_url)
         
     | 
| 
       98 
98 
     | 
    
         
             
                  res = conn.get do |req|
         
     | 
| 
       99 
     | 
    
         
            -
                    if ! 
     | 
| 
      
 99 
     | 
    
         
            +
                    if !path.nil?
         
     | 
| 
       100 
100 
     | 
    
         
             
                      req.url "folders"
         
     | 
| 
       101 
     | 
    
         
            -
                      req.params["path"] =  
     | 
| 
       102 
     | 
    
         
            -
                    elsif ! 
     | 
| 
       103 
     | 
    
         
            -
                      req.url "folders/#{ 
     | 
| 
      
 101 
     | 
    
         
            +
                      req.params["path"] = path
         
     | 
| 
      
 102 
     | 
    
         
            +
                    elsif !uid.nil?
         
     | 
| 
      
 103 
     | 
    
         
            +
                      req.url "folders/#{uid}"
         
     | 
| 
       104 
104 
     | 
    
         
             
                    end
         
     | 
| 
       105 
105 
     | 
    
         
             
                  end
         
     | 
| 
       106 
106 
     | 
    
         
             
                  if res.success?
         
     | 
    
        data/lib/springcm-sdk/folder.rb
    CHANGED
    
    | 
         @@ -1,7 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "springcm-sdk/resource"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "springcm-sdk/resource_list"
         
     | 
| 
       2 
3 
     | 
    
         
             
            require "springcm-sdk/mixins/access_level"
         
     | 
| 
       3 
4 
     | 
    
         
             
            require "springcm-sdk/mixins/parent_folder"
         
     | 
| 
       4 
5 
     | 
    
         
             
            require "springcm-sdk/mixins/documents"
         
     | 
| 
      
 6 
     | 
    
         
            +
            require "springcm-sdk/helpers"
         
     | 
| 
       5 
7 
     | 
    
         | 
| 
       6 
8 
     | 
    
         
             
            module Springcm
         
     | 
| 
       7 
9 
     | 
    
         
             
              class Folder < Resource
         
     | 
| 
         @@ -9,17 +11,17 @@ module Springcm 
     | 
|
| 
       9 
11 
     | 
    
         
             
                include Springcm::ParentFolder
         
     | 
| 
       10 
12 
     | 
    
         
             
                include Springcm::Documents
         
     | 
| 
       11 
13 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                def folders
         
     | 
| 
      
 14 
     | 
    
         
            +
                def folders(offset: 0, limit: 20)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  Helpers.validate_offset_limit!(offset, limit)
         
     | 
| 
       13 
16 
     | 
    
         
             
                  conn = @client.authorized_connection(url: @client.object_api_url)
         
     | 
| 
       14 
17 
     | 
    
         
             
                  res = conn.get do |req|
         
     | 
| 
       15 
18 
     | 
    
         
             
                    req.url "folders/#{uid}/folders"
         
     | 
| 
      
 19 
     | 
    
         
            +
                    req.params["offset"] = offset
         
     | 
| 
      
 20 
     | 
    
         
            +
                    req.params["limit"] = limit
         
     | 
| 
       16 
21 
     | 
    
         
             
                  end
         
     | 
| 
       17 
22 
     | 
    
         
             
                  if res.success?
         
     | 
| 
       18 
23 
     | 
    
         
             
                    data = JSON.parse(res.body)
         
     | 
| 
       19 
     | 
    
         
            -
                     
     | 
| 
       20 
     | 
    
         
            -
                      Folder.new(item, @client)
         
     | 
| 
       21 
     | 
    
         
            -
                    }
         
     | 
| 
       22 
     | 
    
         
            -
                    items
         
     | 
| 
      
 24 
     | 
    
         
            +
                    ResourceList.new(data, self, Folder, @client)
         
     | 
| 
       23 
25 
     | 
    
         
             
                  else
         
     | 
| 
       24 
26 
     | 
    
         
             
                    nil
         
     | 
| 
       25 
27 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -40,12 +42,15 @@ module Springcm 
     | 
|
| 
       40 
42 
     | 
    
         
             
                  end
         
     | 
| 
       41 
43 
     | 
    
         
             
                end
         
     | 
| 
       42 
44 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
                def documents
         
     | 
| 
      
 45 
     | 
    
         
            +
                def documents(offset: 0, limit: 20)
         
     | 
| 
      
 46 
     | 
    
         
            +
                  Helpers.validate_offset_limit!(offset, limit)
         
     | 
| 
       44 
47 
     | 
    
         
             
                  uri = URI(documents_href)
         
     | 
| 
       45 
48 
     | 
    
         
             
                  url = "#{uri.scheme}://#{uri.host}"
         
     | 
| 
       46 
49 
     | 
    
         
             
                  conn = @client.authorized_connection(url: url)
         
     | 
| 
       47 
50 
     | 
    
         
             
                  res = conn.get do |req|
         
     | 
| 
       48 
51 
     | 
    
         
             
                    req.url uri.path
         
     | 
| 
      
 52 
     | 
    
         
            +
                    req.params["offset"] = offset
         
     | 
| 
      
 53 
     | 
    
         
            +
                    req.params["limit"] = limit
         
     | 
| 
       49 
54 
     | 
    
         
             
                  end
         
     | 
| 
       50 
55 
     | 
    
         
             
                  if res.success?
         
     | 
| 
       51 
56 
     | 
    
         
             
                    data = JSON.parse(res.body)
         
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Springcm
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Helpers
         
     | 
| 
      
 3 
     | 
    
         
            +
                def self.validate_offset_limit!(offset, limit)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  if !limit.is_a?(Integer) || limit < 1 || limit > 1000
         
     | 
| 
      
 5 
     | 
    
         
            +
                    raise ArgumentError.new("Limit must be an integer between 1 and 1000 (inclusive).")
         
     | 
| 
      
 6 
     | 
    
         
            +
                  end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  if !offset.is_a?(Integer) || offset < 0
         
     | 
| 
      
 9 
     | 
    
         
            +
                    raise ArgumentError.new("Offset must be a positive, non-zero integer.")
         
     | 
| 
      
 10 
     | 
    
         
            +
                  end
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,56 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Springcm
         
     | 
| 
      
 2 
     | 
    
         
            +
              class ResourceList < Object
         
     | 
| 
      
 3 
     | 
    
         
            +
                def initialize(data, parent_folder, kind, client)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  @parent_folder = parent_folder
         
     | 
| 
      
 5 
     | 
    
         
            +
                  @kind = kind
         
     | 
| 
      
 6 
     | 
    
         
            +
                  super(data, client)
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def next
         
     | 
| 
      
 10 
     | 
    
         
            +
                  nav_list("Next")
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                def prev
         
     | 
| 
      
 14 
     | 
    
         
            +
                  nav_list("Previous")
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def first
         
     | 
| 
      
 18 
     | 
    
         
            +
                  nav_list("First")
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                def last
         
     | 
| 
      
 22 
     | 
    
         
            +
                  nav_list("Last")
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                def items
         
     | 
| 
      
 26 
     | 
    
         
            +
                  @data.fetch("Items", []).map { |item|
         
     | 
| 
      
 27 
     | 
    
         
            +
                    @kind.new(item, @client)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  }
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                private
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                def nav_list(mode)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  url = @data.fetch(mode, nil)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  return nil if url.nil?
         
     | 
| 
      
 36 
     | 
    
         
            +
                  method = method_for_kind!(@kind)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  uri = URI(url)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  query = CGI.parse(uri.query || "")
         
     | 
| 
      
 39 
     | 
    
         
            +
                  offset = query.fetch("offset", ["0"]).first.to_i
         
     | 
| 
      
 40 
     | 
    
         
            +
                  limit = query.fetch("limit", ["20"]).first.to_i
         
     | 
| 
      
 41 
     | 
    
         
            +
                  @parent_folder.send(method, offset: offset, limit: limit)
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                def method_for_kind!(kind)
         
     | 
| 
      
 45 
     | 
    
         
            +
                  method = nil
         
     | 
| 
      
 46 
     | 
    
         
            +
                  if kind == Springcm::Folder
         
     | 
| 
      
 47 
     | 
    
         
            +
                    method = :folders
         
     | 
| 
      
 48 
     | 
    
         
            +
                  elsif kind == Springcm::Document
         
     | 
| 
      
 49 
     | 
    
         
            +
                    method = :documents
         
     | 
| 
      
 50 
     | 
    
         
            +
                  else
         
     | 
| 
      
 51 
     | 
    
         
            +
                    raise ArgumentError.new("Resource kind must be one of: Springcm::Document, Springcm::Folder.")
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
                  return method
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/springcm-sdk/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: springcm-sdk
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Paul Holden
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2019-11- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-11-07 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: faraday
         
     | 
| 
         @@ -163,11 +163,13 @@ files: 
     | 
|
| 
       163 
163 
     | 
    
         
             
            - lib/springcm-sdk/client.rb
         
     | 
| 
       164 
164 
     | 
    
         
             
            - lib/springcm-sdk/document.rb
         
     | 
| 
       165 
165 
     | 
    
         
             
            - lib/springcm-sdk/folder.rb
         
     | 
| 
      
 166 
     | 
    
         
            +
            - lib/springcm-sdk/helpers.rb
         
     | 
| 
       166 
167 
     | 
    
         
             
            - lib/springcm-sdk/mixins/access_level.rb
         
     | 
| 
       167 
168 
     | 
    
         
             
            - lib/springcm-sdk/mixins/documents.rb
         
     | 
| 
       168 
169 
     | 
    
         
             
            - lib/springcm-sdk/mixins/parent_folder.rb
         
     | 
| 
       169 
170 
     | 
    
         
             
            - lib/springcm-sdk/object.rb
         
     | 
| 
       170 
171 
     | 
    
         
             
            - lib/springcm-sdk/resource.rb
         
     | 
| 
      
 172 
     | 
    
         
            +
            - lib/springcm-sdk/resource_list.rb
         
     | 
| 
       171 
173 
     | 
    
         
             
            - lib/springcm-sdk/version.rb
         
     | 
| 
       172 
174 
     | 
    
         
             
            - springcm-sdk.gemspec
         
     | 
| 
       173 
175 
     | 
    
         
             
            homepage: https://github.com/paulholden2/springcm-sdk
         
     | 
| 
         @@ -177,7 +179,7 @@ metadata: 
     | 
|
| 
       177 
179 
     | 
    
         
             
              allowed_push_host: https://rubygems.org
         
     | 
| 
       178 
180 
     | 
    
         
             
              homepage_uri: https://github.com/paulholden2/springcm-sdk
         
     | 
| 
       179 
181 
     | 
    
         
             
              source_code_uri: https://github.com/paulholden2/springcm-sdk
         
     | 
| 
       180 
     | 
    
         
            -
              documentation_uri: https://rubydoc.info/github/paulholden2/springcm-sdk/0. 
     | 
| 
      
 182 
     | 
    
         
            +
              documentation_uri: https://rubydoc.info/github/paulholden2/springcm-sdk/0.3.0
         
     | 
| 
       181 
183 
     | 
    
         
             
              changelog_uri: https://github.com/paulholden2/springcm-sdk/blob/master/CHANGELOG.md
         
     | 
| 
       182 
184 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       183 
185 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
         @@ -194,8 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       194 
196 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       195 
197 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       196 
198 
     | 
    
         
             
            requirements: []
         
     | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
       198 
     | 
    
         
            -
            rubygems_version: 2.7.7
         
     | 
| 
      
 199 
     | 
    
         
            +
            rubygems_version: 3.0.6
         
     | 
| 
       199 
200 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       200 
201 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       201 
202 
     | 
    
         
             
            summary: A library for working with the SpringCM REST API.
         
     |