ecoportal-api-v2 1.1.7 → 2.0.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/.markdownlint.json +4 -0
- data/.rubocop.yml +54 -15
- data/.ruby-version +1 -0
- data/CHANGELOG.md +485 -373
- data/ecoportal-api-v2.gemspec +13 -12
- data/lib/ecoportal/api/common/concerns/benchmarkable.rb +47 -34
- data/lib/ecoportal/api/common/concerns/threadable.rb +41 -0
- data/lib/ecoportal/api/common/concerns.rb +1 -0
- data/lib/ecoportal/api/common/content/array_model.rb +85 -79
- data/lib/ecoportal/api/common/content/class_helpers.rb +34 -31
- data/lib/ecoportal/api/common/content/collection_model.rb +77 -65
- data/lib/ecoportal/api/common/content/double_model.rb +105 -87
- data/lib/ecoportal/api/common/content/wrapped_response.rb +11 -11
- data/lib/ecoportal/api/v2/page/component/reference_field.rb +17 -13
- data/lib/ecoportal/api/v2/page/component.rb +67 -68
- data/lib/ecoportal/api/v2/page/components.rb +9 -9
- data/lib/ecoportal/api/v2/page/force.rb +6 -7
- data/lib/ecoportal/api/v2/page/stages.rb +5 -6
- data/lib/ecoportal/api/v2/page.rb +35 -33
- data/lib/ecoportal/api/v2/pages/page_stage.rb +22 -20
- data/lib/ecoportal/api/v2/pages.rb +18 -14
- data/lib/ecoportal/api/v2/people.rb +2 -3
- data/lib/ecoportal/api/v2/registers.rb +28 -13
- data/lib/ecoportal/api/v2/s3/data.rb +27 -0
- data/lib/ecoportal/api/v2/s3/files/batch_upload.rb +110 -0
- data/lib/ecoportal/api/v2/s3/files/poll.rb +82 -0
- data/lib/ecoportal/api/v2/s3/files/poll_status.rb +52 -0
- data/lib/ecoportal/api/v2/s3/files.rb +132 -0
- data/lib/ecoportal/api/v2/s3/upload.rb +154 -0
- data/lib/ecoportal/api/v2/s3.rb +66 -0
- data/lib/ecoportal/api/v2.rb +10 -3
- data/lib/ecoportal/api/v2_version.rb +1 -1
- metadata +53 -54
| @@ -0,0 +1,66 @@ | |
| 1 | 
            +
            module Ecoportal
         | 
| 2 | 
            +
              module API
         | 
| 3 | 
            +
                class V2
         | 
| 4 | 
            +
                  # @attr_reader client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
         | 
| 5 | 
            +
                  class S3
         | 
| 6 | 
            +
                    class MissingLocalFile < ArgumentError; end
         | 
| 7 | 
            +
                    class CredentialsGetFailed < StandardError; end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                    extend Common::BaseClass
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    class_resolver :data_class, "Ecoportal::API::V2::S3::Data"
         | 
| 12 | 
            +
                    class_resolver :files_class, "Ecoportal::API::V2::S3::Files"
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                    attr_reader :client
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    # @param client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
         | 
| 17 | 
            +
                    # @return [Schemas] an instance object ready to make schema api requests.
         | 
| 18 | 
            +
                    def initialize(client)
         | 
| 19 | 
            +
                      @client = client
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    # Gets the S3 credentials to upload files
         | 
| 23 | 
            +
                    # @return [Ecoportal::API::V2::S3::Data]
         | 
| 24 | 
            +
                    def data
         | 
| 25 | 
            +
                      response = client.get("/s3/data")
         | 
| 26 | 
            +
                      body     = body_data(response.body)
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                      return data_class.new(body) if response.success?
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                      msg = "Could not get S3 credentials - Error #{response.status}: #{body}"
         | 
| 31 | 
            +
                      raise CredentialsGetFailed, msg
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    # @param file [String] full path to existing local file
         | 
| 35 | 
            +
                    # @param credentials [Ecoportal::API::V2::S3::Data, NilClass]
         | 
| 36 | 
            +
                    # @return [Hash, NilClass] with the s3_file_reference on success, and `nil` otherwise
         | 
| 37 | 
            +
                    def upload_file(file, credentials: data, &block)
         | 
| 38 | 
            +
                      msg = "The file '#{file}' does not exist"
         | 
| 39 | 
            +
                      raise MissingLocalFile, msg unless File.exist?(file)
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                      credentials ||= data
         | 
| 42 | 
            +
                      Upload.new(credentials, file: file).upload!(&block)
         | 
| 43 | 
            +
                    end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    # Obtain specific object for eP file api requests.
         | 
| 46 | 
            +
                    # @return [Files] an instance object ready to make eP file api requests.
         | 
| 47 | 
            +
                    def files
         | 
| 48 | 
            +
                      files_class.new(client, s3_api: self)
         | 
| 49 | 
            +
                    end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                    private
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                    def body_data(body)
         | 
| 54 | 
            +
                      return body unless body.is_a?(Hash)
         | 
| 55 | 
            +
                      return body unless body.key?("data")
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                      body["data"]
         | 
| 58 | 
            +
                    end
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
            end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            require 'ecoportal/api/v2/s3/data'
         | 
| 65 | 
            +
            require 'ecoportal/api/v2/s3/upload'
         | 
| 66 | 
            +
            require 'ecoportal/api/v2/s3/files'
         | 
    
        data/lib/ecoportal/api/v2.rb
    CHANGED
    
    | @@ -8,10 +8,10 @@ module Ecoportal | |
| 8 8 | 
             
                  extend Common::BaseClass
         | 
| 9 9 | 
             
                  include Common::Logging
         | 
| 10 10 |  | 
| 11 | 
            -
                  VERSION = "v2"
         | 
| 11 | 
            +
                  VERSION = "v2".freeze
         | 
| 12 12 |  | 
| 13 13 | 
             
                  class << self
         | 
| 14 | 
            -
                    def v2key | 
| 14 | 
            +
                    def v2key(ukey, gkey)
         | 
| 15 15 | 
             
                      Base64.urlsafe_encode64({
         | 
| 16 16 | 
             
                        organization: gkey,
         | 
| 17 17 | 
             
                        user:         ukey
         | 
| @@ -22,6 +22,7 @@ module Ecoportal | |
| 22 22 | 
             
                  class_resolver :people_class,    "Ecoportal::API::V2::People"
         | 
| 23 23 | 
             
                  class_resolver :registers_class, "Ecoportal::API::V2::Registers"
         | 
| 24 24 | 
             
                  class_resolver :pages_class,     "Ecoportal::API::V2::Pages"
         | 
| 25 | 
            +
                  class_resolver :s3_class,        "Ecoportal::API::V2::S3"
         | 
| 25 26 |  | 
| 26 27 | 
             
                  attr_reader :client, :logger
         | 
| 27 28 |  | 
| @@ -64,6 +65,12 @@ module Ecoportal | |
| 64 65 | 
             
                    pages_class.new(client)
         | 
| 65 66 | 
             
                  end
         | 
| 66 67 |  | 
| 68 | 
            +
                  # Obtain specific object for file api requests.
         | 
| 69 | 
            +
                  # @return [S3] an instance object ready to make files api requests.
         | 
| 70 | 
            +
                  def s3 # rubocop:disable Naming/VariableNumber
         | 
| 71 | 
            +
                    s3_class.new(client)
         | 
| 72 | 
            +
                  end
         | 
| 73 | 
            +
             | 
| 67 74 | 
             
                  private
         | 
| 68 75 |  | 
| 69 76 | 
             
                  def get_key(api_key: nil, user_key: nil, org_key: nil)
         | 
| @@ -72,7 +79,6 @@ module Ecoportal | |
| 72 79 | 
             
                    raise "You need to provide either an api_key or user_key" unless user_key
         | 
| 73 80 | 
             
                    raise "You need to provide an org_key as well (not just a user_key)" unless org_key
         | 
| 74 81 | 
             
                  end
         | 
| 75 | 
            -
             | 
| 76 82 | 
             
                end
         | 
| 77 83 | 
             
              end
         | 
| 78 84 | 
             
            end
         | 
| @@ -80,3 +86,4 @@ end | |
| 80 86 | 
             
            require 'ecoportal/api/v2/people'
         | 
| 81 87 | 
             
            require 'ecoportal/api/v2/pages'
         | 
| 82 88 | 
             
            require 'ecoportal/api/v2/registers'
         | 
| 89 | 
            +
            require 'ecoportal/api/v2/s3'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,55 +1,29 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: ecoportal-api-v2
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 2.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Oscar Segura
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2024- | 
| 11 | 
            +
            date: 2024-08-01 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name:  | 
| 15 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            -
                requirements:
         | 
| 17 | 
            -
                - - ">="
         | 
| 18 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: 2.4.12
         | 
| 20 | 
            -
                - - "<"
         | 
| 21 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 22 | 
            -
                    version: '3'
         | 
| 23 | 
            -
              type: :development
         | 
| 24 | 
            -
              prerelease: false
         | 
| 25 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 26 | 
            -
                requirements:
         | 
| 27 | 
            -
                - - ">="
         | 
| 28 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 29 | 
            -
                    version: 2.4.12
         | 
| 30 | 
            -
                - - "<"
         | 
| 31 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 32 | 
            -
                    version: '3'
         | 
| 33 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 34 | 
            -
              name: rspec
         | 
| 14 | 
            +
              name: pry
         | 
| 35 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 36 16 | 
             
                requirements:
         | 
| 37 17 | 
             
                - - ">="
         | 
| 38 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 39 | 
            -
                    version:  | 
| 40 | 
            -
                - - "<"
         | 
| 41 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 42 | 
            -
                    version: '4'
         | 
| 19 | 
            +
                    version: '0.14'
         | 
| 43 20 | 
             
              type: :development
         | 
| 44 21 | 
             
              prerelease: false
         | 
| 45 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 46 23 | 
             
                requirements:
         | 
| 47 24 | 
             
                - - ">="
         | 
| 48 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 49 | 
            -
                    version:  | 
| 50 | 
            -
                - - "<"
         | 
| 51 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 52 | 
            -
                    version: '4'
         | 
| 26 | 
            +
                    version: '0.14'
         | 
| 53 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 54 28 | 
             
              name: rake
         | 
| 55 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -71,32 +45,32 @@ dependencies: | |
| 71 45 | 
             
                  - !ruby/object:Gem::Version
         | 
| 72 46 | 
             
                    version: '14'
         | 
| 73 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 74 | 
            -
              name:  | 
| 48 | 
            +
              name: redcarpet
         | 
| 75 49 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 76 50 | 
             
                requirements:
         | 
| 77 51 | 
             
                - - ">="
         | 
| 78 52 | 
             
                  - !ruby/object:Gem::Version
         | 
| 79 | 
            -
                    version:  | 
| 53 | 
            +
                    version: 3.6.0
         | 
| 80 54 | 
             
                - - "<"
         | 
| 81 55 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: ' | 
| 56 | 
            +
                    version: '4'
         | 
| 83 57 | 
             
              type: :development
         | 
| 84 58 | 
             
              prerelease: false
         | 
| 85 59 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 86 60 | 
             
                requirements:
         | 
| 87 61 | 
             
                - - ">="
         | 
| 88 62 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version:  | 
| 63 | 
            +
                    version: 3.6.0
         | 
| 90 64 | 
             
                - - "<"
         | 
| 91 65 | 
             
                  - !ruby/object:Gem::Version
         | 
| 92 | 
            -
                    version: ' | 
| 66 | 
            +
                    version: '4'
         | 
| 93 67 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 94 | 
            -
              name:  | 
| 68 | 
            +
              name: rspec
         | 
| 95 69 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 96 70 | 
             
                requirements:
         | 
| 97 71 | 
             
                - - ">="
         | 
| 98 72 | 
             
                  - !ruby/object:Gem::Version
         | 
| 99 | 
            -
                    version: 3. | 
| 73 | 
            +
                    version: 3.12.0
         | 
| 100 74 | 
             
                - - "<"
         | 
| 101 75 | 
             
                  - !ruby/object:Gem::Version
         | 
| 102 76 | 
             
                    version: '4'
         | 
| @@ -106,44 +80,58 @@ dependencies: | |
| 106 80 | 
             
                requirements:
         | 
| 107 81 | 
             
                - - ">="
         | 
| 108 82 | 
             
                  - !ruby/object:Gem::Version
         | 
| 109 | 
            -
                    version: 3. | 
| 83 | 
            +
                    version: 3.12.0
         | 
| 110 84 | 
             
                - - "<"
         | 
| 111 85 | 
             
                  - !ruby/object:Gem::Version
         | 
| 112 86 | 
             
                    version: '4'
         | 
| 113 87 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 114 | 
            -
              name:  | 
| 88 | 
            +
              name: yard
         | 
| 115 89 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 116 90 | 
             
                requirements:
         | 
| 117 | 
            -
                - - " | 
| 91 | 
            +
                - - "~>"
         | 
| 118 92 | 
             
                  - !ruby/object:Gem::Version
         | 
| 119 | 
            -
                    version:  | 
| 93 | 
            +
                    version: 0.9.34
         | 
| 120 94 | 
             
              type: :development
         | 
| 121 95 | 
             
              prerelease: false
         | 
| 122 96 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 123 97 | 
             
                requirements:
         | 
| 124 | 
            -
                - - " | 
| 98 | 
            +
                - - "~>"
         | 
| 125 99 | 
             
                  - !ruby/object:Gem::Version
         | 
| 126 | 
            -
                    version:  | 
| 100 | 
            +
                    version: 0.9.34
         | 
| 127 101 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 128 102 | 
             
              name: ecoportal-api
         | 
| 129 103 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 130 104 | 
             
                requirements:
         | 
| 131 | 
            -
                - - " | 
| 132 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 133 | 
            -
                    version: 0.9.6
         | 
| 134 | 
            -
                - - "<"
         | 
| 105 | 
            +
                - - "~>"
         | 
| 135 106 | 
             
                  - !ruby/object:Gem::Version
         | 
| 136 107 | 
             
                    version: '0.10'
         | 
| 137 108 | 
             
              type: :runtime
         | 
| 138 109 | 
             
              prerelease: false
         | 
| 139 110 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 140 111 | 
             
                requirements:
         | 
| 112 | 
            +
                - - "~>"
         | 
| 113 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 114 | 
            +
                    version: '0.10'
         | 
| 115 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 116 | 
            +
              name: mime-types
         | 
| 117 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 118 | 
            +
                requirements:
         | 
| 119 | 
            +
                - - "~>"
         | 
| 120 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 121 | 
            +
                    version: '3.5'
         | 
| 141 122 | 
             
                - - ">="
         | 
| 142 123 | 
             
                  - !ruby/object:Gem::Version
         | 
| 143 | 
            -
                    version:  | 
| 144 | 
            -
             | 
| 124 | 
            +
                    version: 3.5.2
         | 
| 125 | 
            +
              type: :runtime
         | 
| 126 | 
            +
              prerelease: false
         | 
| 127 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 128 | 
            +
                requirements:
         | 
| 129 | 
            +
                - - "~>"
         | 
| 145 130 | 
             
                  - !ruby/object:Gem::Version
         | 
| 146 | 
            -
                    version: ' | 
| 131 | 
            +
                    version: '3.5'
         | 
| 132 | 
            +
                - - ">="
         | 
| 133 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 134 | 
            +
                    version: 3.5.2
         | 
| 147 135 | 
             
            description:
         | 
| 148 136 | 
             
            email:
         | 
| 149 137 | 
             
            - rien@ecoportal.co.nz
         | 
| @@ -154,8 +142,10 @@ extensions: [] | |
| 154 142 | 
             
            extra_rdoc_files: []
         | 
| 155 143 | 
             
            files:
         | 
| 156 144 | 
             
            - ".gitignore"
         | 
| 145 | 
            +
            - ".markdownlint.json"
         | 
| 157 146 | 
             
            - ".rspec"
         | 
| 158 147 | 
             
            - ".rubocop.yml"
         | 
| 148 | 
            +
            - ".ruby-version"
         | 
| 159 149 | 
             
            - ".yardopts"
         | 
| 160 150 | 
             
            - CHANGELOG.md
         | 
| 161 151 | 
             
            - Gemfile
         | 
| @@ -169,6 +159,7 @@ files: | |
| 169 159 | 
             
            - lib/ecoportal/api/common.v2.rb
         | 
| 170 160 | 
             
            - lib/ecoportal/api/common/concerns.rb
         | 
| 171 161 | 
             
            - lib/ecoportal/api/common/concerns/benchmarkable.rb
         | 
| 162 | 
            +
            - lib/ecoportal/api/common/concerns/threadable.rb
         | 
| 172 163 | 
             
            - lib/ecoportal/api/common/content.rb
         | 
| 173 164 | 
             
            - lib/ecoportal/api/common/content/array_model.rb
         | 
| 174 165 | 
             
            - lib/ecoportal/api/common/content/class_helpers.rb
         | 
| @@ -249,11 +240,19 @@ files: | |
| 249 240 | 
             
            - lib/ecoportal/api/v2/registers/stage_result.rb
         | 
| 250 241 | 
             
            - lib/ecoportal/api/v2/registers/stages_result.rb
         | 
| 251 242 | 
             
            - lib/ecoportal/api/v2/registers/template.rb
         | 
| 243 | 
            +
            - lib/ecoportal/api/v2/s3.rb
         | 
| 244 | 
            +
            - lib/ecoportal/api/v2/s3/data.rb
         | 
| 245 | 
            +
            - lib/ecoportal/api/v2/s3/files.rb
         | 
| 246 | 
            +
            - lib/ecoportal/api/v2/s3/files/batch_upload.rb
         | 
| 247 | 
            +
            - lib/ecoportal/api/v2/s3/files/poll.rb
         | 
| 248 | 
            +
            - lib/ecoportal/api/v2/s3/files/poll_status.rb
         | 
| 249 | 
            +
            - lib/ecoportal/api/v2/s3/upload.rb
         | 
| 252 250 | 
             
            - lib/ecoportal/api/v2_version.rb
         | 
| 253 251 | 
             
            homepage: https://www.ecoportal.com
         | 
| 254 252 | 
             
            licenses:
         | 
| 255 253 | 
             
            - MIT
         | 
| 256 | 
            -
            metadata: | 
| 254 | 
            +
            metadata:
         | 
| 255 | 
            +
              rubygems_mfa_required: 'true'
         | 
| 257 256 | 
             
            post_install_message:
         | 
| 258 257 | 
             
            rdoc_options: []
         | 
| 259 258 | 
             
            require_paths:
         | 
| @@ -262,14 +261,14 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 262 261 | 
             
              requirements:
         | 
| 263 262 | 
             
              - - ">="
         | 
| 264 263 | 
             
                - !ruby/object:Gem::Version
         | 
| 265 | 
            -
                  version: 2. | 
| 264 | 
            +
                  version: 3.2.2
         | 
| 266 265 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 267 266 | 
             
              requirements:
         | 
| 268 267 | 
             
              - - ">="
         | 
| 269 268 | 
             
                - !ruby/object:Gem::Version
         | 
| 270 269 | 
             
                  version: '0'
         | 
| 271 270 | 
             
            requirements: []
         | 
| 272 | 
            -
            rubygems_version: 3. | 
| 271 | 
            +
            rubygems_version: 3.5.6
         | 
| 273 272 | 
             
            signing_key:
         | 
| 274 273 | 
             
            specification_version: 4
         | 
| 275 274 | 
             
            summary: A collection of helpers for interacting with the ecoPortal MS's V2 API
         |