idnio 2.3.3b → 2.3.4b
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/idnio/version.rb +2 -2
- data/lib/objects/access-profiles.rb +47 -37
- data/lib/objects/account-profiles.rb +6 -6
- data/lib/objects/account-schemas.rb +65 -29
- data/lib/objects/attribute-sync-config.rb +51 -23
- data/lib/objects/branding.rb +2 -2
- data/lib/objects/campaign-filters.rb +38 -24
- data/lib/objects/connectors.rb +7 -7
- data/lib/objects/email-templates.rb +11 -5
- data/lib/objects/identity-attributes.rb +2 -2
- data/lib/objects/identity-profiles.rb +7 -7
- data/lib/objects/integrations.rb +8 -5
- data/lib/objects/lifecycle-states.rb +29 -15
- data/lib/objects/password-policies.rb +1 -1
- data/lib/objects/password-sync-groups.rb +1 -1
- data/lib/objects/reference-resolver.rb +72 -32
- data/lib/objects/roles.rb +104 -46
- data/lib/objects/rules.rb +6 -6
- data/lib/objects/sources.rb +53 -22
- data/lib/objects/transforms.rb +9 -9
- metadata +3 -3
- metadata.gz.sig +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 234e7989d08547431973ed6b2eba00dadbf49a44a487acec83bd821e55c075cd
         | 
| 4 | 
            +
              data.tar.gz: b4f45179bebc778d5336a3c5e961d03157def8760fd24eab659617505a497cf4
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 4b18ac54cd44404626e4e8a3977ddef9e1fc0e47a922eae6af19f183e46aef469971595ccd5255b5b88b196238d8f1a57fbff67d19f1e2744cd878ee10a57ce9
         | 
| 7 | 
            +
              data.tar.gz: 716c81d01d634d63744f170363298a5d93fe982a5328eeaaa51433e0a0a483c030168eba2e44a614e8694383a3982a87d25889cdd1cb2f19cbed600ed32a1a7c
         | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | Binary file | 
    
        data.tar.gz.sig
    CHANGED
    
    | Binary file | 
    
        data/lib/idnio/version.rb
    CHANGED
    
    
| @@ -7,32 +7,39 @@ require "idnio/markdown" | |
| 7 7 | 
             
            module AccessProfiles
         | 
| 8 8 |  | 
| 9 9 | 
             
              #
         | 
| 10 | 
            -
              #  | 
| 10 | 
            +
              # Gets Access Profile Name from ID
         | 
| 11 11 | 
             
              #
         | 
| 12 | 
            -
              def self. | 
| 12 | 
            +
              def self.get_name_from_id( id )
         | 
| 13 | 
            +
                result = ReferenceResolver.search_for_single_object( "accessprofiles", "id:#{id}" )
         | 
| 14 | 
            +
                unless result.nil?
         | 
| 15 | 
            +
                  return result['name']
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
                return nil
         | 
| 18 | 
            +
              end
         | 
| 13 19 |  | 
| 14 | 
            -
             | 
| 20 | 
            +
              #
         | 
| 21 | 
            +
              # Gets Access Profile ID from Name
         | 
| 22 | 
            +
              #
         | 
| 23 | 
            +
              def self.get_id_from_name( name )
         | 
| 24 | 
            +
                result = ReferenceResolver.search_for_single_object( "accessprofiles", "name:#{name}" )
         | 
| 25 | 
            +
                unless result.nil?
         | 
| 26 | 
            +
                  return result['id']
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
                return nil
         | 
| 29 | 
            +
              end
         | 
| 15 30 |  | 
| 31 | 
            +
              #
         | 
| 32 | 
            +
              # Converts Entitlement IDs to Entitlement Names
         | 
| 33 | 
            +
              #
         | 
| 34 | 
            +
              def self.get_entitlements( entitlement_ids )
         | 
| 35 | 
            +
                entitlement_names = []
         | 
| 16 36 | 
             
                entitlement_ids.each do |entitlement_id|
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                   | 
| 19 | 
            -
             | 
| 20 | 
            -
                  case response
         | 
| 21 | 
            -
                  when Net::HTTPSuccess
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                    entitlements = JSON.parse( response.body )
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                    entitlements.each do |entitlement|
         | 
| 26 | 
            -
                      if (entitlementNames != "")
         | 
| 27 | 
            -
                        entitlementNames << ";"
         | 
| 28 | 
            -
                      end
         | 
| 29 | 
            -
                      entitlementNames << entitlement['name']
         | 
| 30 | 
            -
                    end
         | 
| 37 | 
            +
                  result = ReferenceResolver.search_for_single_object( "entitlements", "id:#{entitlement_id}" )
         | 
| 38 | 
            +
                  unless result.nil?
         | 
| 39 | 
            +
                    entitlement_names.push( result['name'] )
         | 
| 31 40 | 
             
                  end
         | 
| 32 | 
            -
             | 
| 33 41 | 
             
                end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
                return entitlementNames
         | 
| 42 | 
            +
                return entitlement_names
         | 
| 36 43 | 
             
              end
         | 
| 37 44 |  | 
| 38 45 | 
             
              #
         | 
| @@ -45,22 +52,22 @@ module AccessProfiles | |
| 45 52 | 
             
                case response
         | 
| 46 53 | 
             
                when Net::HTTPSuccess
         | 
| 47 54 |  | 
| 48 | 
            -
                   | 
| 55 | 
            +
                  access_profiles = JSON.parse( response.body )
         | 
| 49 56 |  | 
| 50 | 
            -
                  $log.info "\ | 
| 57 | 
            +
                  $log.info "\tRetrieved #{access_profiles['count']} access profiles."
         | 
| 51 58 |  | 
| 52 | 
            -
                   | 
| 59 | 
            +
                  access_profiles['items'].each do |access_profile|
         | 
| 53 60 |  | 
| 54 | 
            -
                    $log.info "\tAccess Profile: #{ | 
| 61 | 
            +
                    $log.info "\tAccess Profile: #{access_profile["name"]}"
         | 
| 55 62 |  | 
| 56 | 
            -
                     | 
| 63 | 
            +
                    access_profile['entitlementNames'] = AccessProfiles.get_entitlements( access_profile['entitlements'] )
         | 
| 57 64 |  | 
| 58 | 
            -
                    Program.write_file( "#{directory}/access-profiles/", "Access Profile - #{ | 
| 65 | 
            +
                    Program.write_file( "#{directory}/access-profiles/", "Access Profile - #{access_profile["name"]}.json", JSON.pretty_generate( access_profile ) )
         | 
| 59 66 |  | 
| 60 67 | 
             
                  end # transforms["items"].each do |transform|
         | 
| 61 68 |  | 
| 62 69 | 
             
                else
         | 
| 63 | 
            -
                  $log.error "\tError: Unable to  | 
| 70 | 
            +
                  $log.error "\tError: Unable to retrieve access profiles."
         | 
| 64 71 | 
             
                end # case response
         | 
| 65 72 |  | 
| 66 73 | 
             
              end # def self.export( directory )
         | 
| @@ -82,23 +89,26 @@ module AccessProfiles | |
| 82 89 | 
             
                case response
         | 
| 83 90 | 
             
                when Net::HTTPSuccess
         | 
| 84 91 |  | 
| 85 | 
            -
                   | 
| 92 | 
            +
                  access_profiles = JSON.parse( response.body )
         | 
| 86 93 |  | 
| 87 | 
            -
                  $log.info "\ | 
| 94 | 
            +
                  $log.info "\tRetrieved #{access_profiles['count']} access profiles."
         | 
| 88 95 |  | 
| 89 | 
            -
                  Markdown.h2 | 
| 90 | 
            -
                  Markdown.text | 
| 91 | 
            -
                  Markdown.text | 
| 96 | 
            +
                  Markdown.h2 "Access Profiles"
         | 
| 97 | 
            +
                  Markdown.text "| Name | Description | Requestable | Entitlements |\n"
         | 
| 98 | 
            +
                  Markdown.text "|------|-------------|-------------|--------------|\n"
         | 
| 92 99 |  | 
| 93 | 
            -
                   | 
| 100 | 
            +
                  access_profiles['items'].each do |access_profile|
         | 
| 94 101 |  | 
| 95 | 
            -
                    $log.info "\tAccess Profile: #{ | 
| 96 | 
            -
                    Markdown.text( "|#{accessProfile["name"]}|#{accessProfile["description"]}|#{accessProfile["sourceName"]}: #{AccessProfiles.getEntitlements(accessProfile["entitlements"])}|#{accessProfile["requestable"]}|\n")
         | 
| 102 | 
            +
                    $log.info "\tAccess Profile: #{access_profile["name"]}"
         | 
| 97 103 |  | 
| 98 | 
            -
             | 
| 104 | 
            +
                    entitlement_names = AccessProfiles.get_entitlements( access_profile['entitlements'] )
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                    Markdown.text( "|#{access_profile["name"]}|#{access_profile["description"]}|#{access_profile["sourceName"]}: #{Program.humanize( access_profile["requestable"] )}|#{entitlement_names.join(", ")}|\n")
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                  end # access_profiles['items'].each do |access_profile|
         | 
| 99 109 |  | 
| 100 110 | 
             
                else
         | 
| 101 | 
            -
                  $log.error "\tError: Unable to  | 
| 111 | 
            +
                  $log.error "\tError: Unable to retrieve access profiles."
         | 
| 102 112 | 
             
                end # case response
         | 
| 103 113 |  | 
| 104 114 | 
             
                Markdown.write
         | 
| @@ -18,7 +18,7 @@ module AccountProfiles | |
| 18 18 |  | 
| 19 19 | 
             
                  sources = JSON.parse( response.body )
         | 
| 20 20 |  | 
| 21 | 
            -
                  $log.info "\ | 
| 21 | 
            +
                  $log.info "\tRetrieved account profiles, across #{sources.count} sources."
         | 
| 22 22 |  | 
| 23 23 | 
             
                  sources.each do |source|
         | 
| 24 24 |  | 
| @@ -37,13 +37,13 @@ module AccountProfiles | |
| 37 37 | 
             
                      end # accountProfiles.each do |accountProfile|
         | 
| 38 38 |  | 
| 39 39 | 
             
                    else
         | 
| 40 | 
            -
                      $log.error "\tError: Unable to  | 
| 40 | 
            +
                      $log.error "\tError: Unable to retrieve account profile for source #{source["name"]}."
         | 
| 41 41 | 
             
                    end # case response
         | 
| 42 42 |  | 
| 43 43 | 
             
                  end # sources.each do |source|
         | 
| 44 44 |  | 
| 45 45 | 
             
                else
         | 
| 46 | 
            -
                  $log.error "\tError: Unable to  | 
| 46 | 
            +
                  $log.error "\tError: Unable to retrieve sources, for account profiles."
         | 
| 47 47 | 
             
                end # case response
         | 
| 48 48 |  | 
| 49 49 | 
             
              end # def self.export( directory )
         | 
| @@ -114,7 +114,7 @@ module AccountProfiles | |
| 114 114 |  | 
| 115 115 | 
             
                  sources = JSON.parse( response.body )
         | 
| 116 116 |  | 
| 117 | 
            -
                  $log.info "\ | 
| 117 | 
            +
                  $log.info "\tRetrieved account profiles, across #{sources.count} sources."
         | 
| 118 118 |  | 
| 119 119 | 
             
                  Markdown.h2( "Account Profiles" )
         | 
| 120 120 |  | 
| @@ -152,13 +152,13 @@ module AccountProfiles | |
| 152 152 | 
             
                      end # accountProfiles.each do |accountProfile|
         | 
| 153 153 |  | 
| 154 154 | 
             
                    else
         | 
| 155 | 
            -
                      $log.error "\tError: Unable to  | 
| 155 | 
            +
                      $log.error "\tError: Unable to retrieve account profile for source #{source["name"]}."
         | 
| 156 156 | 
             
                    end # case response
         | 
| 157 157 |  | 
| 158 158 | 
             
                  end # sources.each do |source|
         | 
| 159 159 |  | 
| 160 160 | 
             
                else
         | 
| 161 | 
            -
                  $log.error "\tError: Unable to  | 
| 161 | 
            +
                  $log.error "\tError: Unable to retrieve sources, for account profiles."
         | 
| 162 162 | 
             
                end # case response
         | 
| 163 163 |  | 
| 164 164 | 
             
                Markdown.write
         | 
| @@ -212,7 +212,7 @@ s | |
| 212 212 |  | 
| 213 213 | 
             
                  unless sources.nil?
         | 
| 214 214 |  | 
| 215 | 
            -
                    $log.info "\ | 
| 215 | 
            +
                    $log.info "\tRetrieved account schemas, across #{sources.count} sources."
         | 
| 216 216 |  | 
| 217 217 | 
             
                    sources.each do |source|
         | 
| 218 218 |  | 
| @@ -224,11 +224,18 @@ s | |
| 224 224 | 
             
                      when Net::HTTPSuccess
         | 
| 225 225 |  | 
| 226 226 | 
             
                        account_schema = JSON.parse( response.body )
         | 
| 227 | 
            -
             | 
| 228 227 | 
             
                        Program.write_file("#{directory}/account-schemas/", "Account Schema - #{source['name']} - #{account_schema['objectType']}.json", JSON.pretty_generate( account_schema ) )
         | 
| 229 228 |  | 
| 229 | 
            +
                      # When an account schema is null, we get a HTTP 400 Bad Request instead of null, empty or 204 No Content.  We've raised a bug (IDNARSENAL-6274) on this.
         | 
| 230 | 
            +
                      # Until this returns something better, we'll protect our code and only output this only in debug mode.  We don't want to error unnecessarily.
         | 
| 231 | 
            +
                      when Net::HTTPBadRequest
         | 
| 232 | 
            +
             | 
| 233 | 
            +
                        $log.debug "\tError: Unable to fetch account schema for source '#{source['name']}'. Received 400 Bad Request, likely due to empty or null schema."
         | 
| 234 | 
            +
             | 
| 230 235 | 
             
                      else
         | 
| 236 | 
            +
             | 
| 231 237 | 
             
                        $log.error "\tError: Unable to fetch account schema for source '#{source['name']}'."
         | 
| 238 | 
            +
             | 
| 232 239 | 
             
                      end # case response
         | 
| 233 240 |  | 
| 234 241 | 
             
                    end # sources.each do |source|
         | 
| @@ -236,7 +243,7 @@ s | |
| 236 243 | 
             
                  end # unless sources.nil?
         | 
| 237 244 |  | 
| 238 245 | 
             
                else
         | 
| 239 | 
            -
                  $log.error "\tError: Unable to  | 
| 246 | 
            +
                  $log.error "\tError: Unable to retrieve sources."
         | 
| 240 247 | 
             
                end # case response
         | 
| 241 248 |  | 
| 242 249 | 
             
              end
         | 
| @@ -305,36 +312,65 @@ s | |
| 305 312 | 
             
              # Documents Account Schema configurations.
         | 
| 306 313 | 
             
              #
         | 
| 307 314 | 
             
              def self.doc
         | 
| 308 | 
            -
                Markdown.h2( "Account Schemas" )
         | 
| 309 315 |  | 
| 310 | 
            -
                response = IDNAPI.get( | 
| 311 | 
            -
             | 
| 316 | 
            +
                response = IDNAPI.get("#{$url}/cc/api/source/list", $token)
         | 
| 317 | 
            +
             | 
| 318 | 
            +
                case response
         | 
| 319 | 
            +
                when Net::HTTPSuccess
         | 
| 320 | 
            +
             | 
| 312 321 | 
             
                  sources = JSON.parse( response.body )
         | 
| 313 322 |  | 
| 314 | 
            -
                   | 
| 315 | 
            -
             | 
| 316 | 
            -
             | 
| 317 | 
            -
             | 
| 318 | 
            -
                     | 
| 319 | 
            -
             | 
| 320 | 
            -
             | 
| 321 | 
            -
             | 
| 322 | 
            -
             | 
| 323 | 
            -
             | 
| 324 | 
            -
             | 
| 325 | 
            -
             | 
| 326 | 
            -
             | 
| 327 | 
            -
             | 
| 328 | 
            -
             | 
| 329 | 
            -
                         | 
| 330 | 
            -
             | 
| 331 | 
            -
                         | 
| 332 | 
            -
             | 
| 323 | 
            +
                  unless sources.nil?
         | 
| 324 | 
            +
             | 
| 325 | 
            +
                    $log.info "\tRetrieved account schemas, across #{sources.count} sources."
         | 
| 326 | 
            +
             | 
| 327 | 
            +
                    Markdown.h2 "Account Schemas"
         | 
| 328 | 
            +
             | 
| 329 | 
            +
                    sources.each do |source|
         | 
| 330 | 
            +
             | 
| 331 | 
            +
                      $log.info "\tAccount Schema: #{source['name']}"
         | 
| 332 | 
            +
             | 
| 333 | 
            +
                      response = IDNAPI.get( "#{$url}/cc/api/source/getAccountSchema/#{source['id']}", $token )
         | 
| 334 | 
            +
             | 
| 335 | 
            +
                      case response
         | 
| 336 | 
            +
                      when Net::HTTPSuccess
         | 
| 337 | 
            +
             | 
| 338 | 
            +
                        account_schema = JSON.parse( response.body )
         | 
| 339 | 
            +
             | 
| 340 | 
            +
                        $log.info "\tAccount Schema: #{source["name"]} - #{account_schema["objectType"]}"
         | 
| 341 | 
            +
             | 
| 342 | 
            +
                        unless ( account_schema["attributes"].nil? || account_schema["attributes"].empty? )
         | 
| 343 | 
            +
                          Markdown.h3( "#{source["name"]}" )
         | 
| 344 | 
            +
                          Markdown.text( " - Object Type: #{account_schema["objectType"]}\n" )
         | 
| 345 | 
            +
                          Markdown.text( " - Account ID: #{account_schema["identityAttribute"]}\n" )
         | 
| 346 | 
            +
                          Markdown.text( " - Account Name: #{account_schema["displayAttribute"]}\n" )
         | 
| 347 | 
            +
                          Markdown.text( " - Group Attribute: #{account_schema["groupAttribute"]}\n\n" )
         | 
| 348 | 
            +
                          Markdown.text( "| Name | Description | Type | Multi-valued | Entitlement |\n" )
         | 
| 349 | 
            +
                          Markdown.text( "|------|-------------|------|--------------|-------------|\n" )
         | 
| 350 | 
            +
                          account_schema["attributes"].each do |attribute|
         | 
| 351 | 
            +
                            Markdown.text( "|#{attribute["name"]}|#{attribute["description"]}|#{attribute["type"]}|#{Program.humanize( attribute["entitlement"] )}|#{Program.humanize( attribute["multi"] )}|\n" )
         | 
| 352 | 
            +
                          end
         | 
| 333 353 | 
             
                        end
         | 
| 334 | 
            -
             | 
| 335 | 
            -
             | 
| 336 | 
            -
             | 
| 337 | 
            -
             | 
| 354 | 
            +
             | 
| 355 | 
            +
                      # When an account schema is null, we get a HTTP 400 Bad Request instead of null, empty or 204 No Content.  We've raised a bug (IDNARSENAL-6274) on this.
         | 
| 356 | 
            +
                      # Until this returns something better, we'll protect our code and only output this only in debug mode.  We don't want to error unnecessarily.
         | 
| 357 | 
            +
                      when Net::HTTPBadRequest
         | 
| 358 | 
            +
             | 
| 359 | 
            +
                        $log.debug "\tError: Unable to fetch account schema for source '#{source['name']}'. Received 400 Bad Request, likely due to empty or null schema."
         | 
| 360 | 
            +
             | 
| 361 | 
            +
                      else
         | 
| 362 | 
            +
             | 
| 363 | 
            +
                        $log.error "\tError: Unable to fetch account schema for source '#{source['name']}'."
         | 
| 364 | 
            +
             | 
| 365 | 
            +
                      end # case response
         | 
| 366 | 
            +
             | 
| 367 | 
            +
                    end # sources.each do |source|
         | 
| 368 | 
            +
             | 
| 369 | 
            +
                  end # unless sources.nil?
         | 
| 370 | 
            +
             | 
| 371 | 
            +
                else
         | 
| 372 | 
            +
                  $log.error "\tError: Unable to retrieve sources."
         | 
| 373 | 
            +
                end # case response
         | 
| 338 374 |  | 
| 339 375 | 
             
                Markdown.write
         | 
| 340 376 | 
             
              end
         | 
| @@ -33,21 +33,36 @@ module AttributeSyncConfig | |
| 33 33 | 
             
              def self.export( directory )
         | 
| 34 34 |  | 
| 35 35 | 
             
                response = IDNAPI.get( "#{$url}/cc/api/source/list", $token )
         | 
| 36 | 
            -
             | 
| 36 | 
            +
             | 
| 37 | 
            +
                case response
         | 
| 38 | 
            +
                when Net::HTTPSuccess
         | 
| 39 | 
            +
             | 
| 37 40 | 
             
                  sources = JSON.parse( response.body )
         | 
| 38 41 |  | 
| 39 | 
            -
                  $log.info "\ | 
| 42 | 
            +
                  $log.info "\tRetrieved attribute sync config, across #{sources.count} sources."
         | 
| 40 43 |  | 
| 41 44 | 
             
                  sources.each do |source|
         | 
| 45 | 
            +
             | 
| 42 46 | 
             
                    response = IDNAPI.get( "#{$url}/cc/api/source/getAttributeSyncConfig/#{source["id"]}", $token )
         | 
| 43 47 |  | 
| 44 | 
            -
                     | 
| 45 | 
            -
             | 
| 48 | 
            +
                    case response
         | 
| 49 | 
            +
                    when Net::HTTPSuccess
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                      attribute_sync_config = JSON.parse( response.body )
         | 
| 52 | 
            +
             | 
| 46 53 | 
             
                      $log.info "\tAttribute Sync Config: #{source["name"]}"
         | 
| 47 | 
            -
                      Program.write_file( "#{directory}/attribute-sync-config/", "Attribute Sync Config - #{source["name"]}.json", JSON.pretty_generate(  | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 54 | 
            +
                      Program.write_file( "#{directory}/attribute-sync-config/", "Attribute Sync Config - #{source["name"]}.json", JSON.pretty_generate( attribute_sync_config ) )
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                    else
         | 
| 57 | 
            +
                      $log.error "\tError: Unable to retrieve attribute sync config."
         | 
| 58 | 
            +
                    end # case response
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                  end # sources.each do |source|s
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                else
         | 
| 63 | 
            +
                  $log.error "\tError: Unable to retrieve sources."
         | 
| 64 | 
            +
                end # case response
         | 
| 65 | 
            +
             | 
| 51 66 | 
             
              end
         | 
| 52 67 |  | 
| 53 68 | 
             
              #
         | 
| @@ -89,33 +104,46 @@ module AttributeSyncConfig | |
| 89 104 | 
             
              #
         | 
| 90 105 | 
             
              def self.doc
         | 
| 91 106 |  | 
| 92 | 
            -
                Markdown.h2( "Attribute Sync Config" )
         | 
| 93 | 
            -
             | 
| 94 107 | 
             
                response = IDNAPI.get( "#{$url}/cc/api/source/list", $token )
         | 
| 95 108 |  | 
| 96 | 
            -
                 | 
| 109 | 
            +
                case response
         | 
| 110 | 
            +
                when Net::HTTPSuccess
         | 
| 97 111 |  | 
| 98 112 | 
             
                  sources = JSON.parse( response.body )
         | 
| 99 113 |  | 
| 100 | 
            -
                  $log.info "\ | 
| 114 | 
            +
                  $log.info "\tRetrieved attribute sync config, across #{sources.count} sources."
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                  Markdown.h2 "Attribute Sync Config"
         | 
| 101 117 |  | 
| 102 118 | 
             
                  sources.each do |source|
         | 
| 103 119 |  | 
| 104 120 | 
             
                    response = IDNAPI.get( "#{$url}/cc/api/source/getAttributeSyncConfig/#{source["id"]}", $token )
         | 
| 105 | 
            -
                    syncAttributes = JSON.parse( response.body )
         | 
| 106 121 |  | 
| 107 | 
            -
                     | 
| 122 | 
            +
                    case response
         | 
| 123 | 
            +
                    when Net::HTTPSuccess
         | 
| 124 | 
            +
             | 
| 125 | 
            +
                      attribute_sync_config = JSON.parse( response.body )
         | 
| 108 126 |  | 
| 109 | 
            -
             | 
| 110 | 
            -
             | 
| 111 | 
            -
                       | 
| 112 | 
            -
             | 
| 113 | 
            -
             | 
| 114 | 
            -
                        Markdown.text( " | 
| 127 | 
            +
                      $log.info "\tAttribute Sync Config: #{source["name"]}"
         | 
| 128 | 
            +
             | 
| 129 | 
            +
                      unless ( attribute_sync_config.nil? || attribute_sync_config["syncAttributes"].nil? || attribute_sync_config["syncAttributes"].empty? )
         | 
| 130 | 
            +
                        Markdown.h3( "#{source["name"]}" )
         | 
| 131 | 
            +
                        Markdown.text( "| Account Attribute | Identity Attribute | Enabled? |\n" )
         | 
| 132 | 
            +
                        Markdown.text( "|-------------------|--------------------|----------|\n" )
         | 
| 133 | 
            +
                        attribute_sync_config["syncAttributes"].each do |sync_attribute|
         | 
| 134 | 
            +
                          Markdown.text( "|#{sync_attribute["targetAttribute"]}|#{sync_attribute["identityAttributeName"]}|#{Program.humanize( sync_attribute["enabled"] )}|\n" )
         | 
| 135 | 
            +
                        end
         | 
| 115 136 | 
             
                      end
         | 
| 116 | 
            -
             | 
| 117 | 
            -
             | 
| 118 | 
            -
             | 
| 137 | 
            +
             | 
| 138 | 
            +
                    else
         | 
| 139 | 
            +
                      $log.error "\tError: Unable to retrieve attribute sync config."
         | 
| 140 | 
            +
                    end # case response
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                  end # sources.each do |source|s
         | 
| 143 | 
            +
             | 
| 144 | 
            +
                else
         | 
| 145 | 
            +
                  $log.error "\tError: Unable to retrieve sources."
         | 
| 146 | 
            +
                end # case response
         | 
| 119 147 |  | 
| 120 148 | 
             
                Markdown.write
         | 
| 121 149 | 
             
              end
         | 
    
        data/lib/objects/branding.rb
    CHANGED
    
    | @@ -18,7 +18,7 @@ module Branding | |
| 18 18 |  | 
| 19 19 | 
             
                  brands = JSON.parse( response.body )
         | 
| 20 20 |  | 
| 21 | 
            -
                  $log.info "\ | 
| 21 | 
            +
                  $log.info "\tRetrieved branding configurations."
         | 
| 22 22 |  | 
| 23 23 | 
             
                  brands['items'].each do |brand|
         | 
| 24 24 |  | 
| @@ -28,7 +28,7 @@ module Branding | |
| 28 28 | 
             
                  end # brands['items'].each do |brand|
         | 
| 29 29 |  | 
| 30 30 | 
             
                else
         | 
| 31 | 
            -
                  $log.error "\tError: Unable to  | 
| 31 | 
            +
                  $log.error "\tError: Unable to retrieve branding."
         | 
| 32 32 | 
             
                end # case response
         | 
| 33 33 |  | 
| 34 34 | 
             
              end
         |