cognitive_vision 0.3.1 → 0.4.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 +8 -8
- data/lib/cognitive_vision/analyze_image.rb +3 -3
- data/lib/cognitive_vision/analyze_response.rb +11 -12
- data/lib/cognitive_vision/category.rb +10 -0
- data/lib/cognitive_vision/description.rb +10 -0
- data/lib/cognitive_vision/description_caption.rb +10 -0
- data/lib/cognitive_vision/image_feature/adult.rb +16 -0
- data/lib/cognitive_vision/image_feature/category.rb +13 -0
- data/lib/cognitive_vision/image_feature/description.rb +17 -0
- data/lib/cognitive_vision/image_feature/face.rb +13 -0
- data/lib/cognitive_vision/image_feature/tag.rb +13 -0
- data/lib/cognitive_vision/image_features.rb +23 -0
- data/lib/cognitive_vision/tag.rb +10 -0
- data/lib/cognitive_vision/version.rb +1 -1
- data/lib/cognitive_vision.rb +10 -0
- metadata +12 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            !binary "U0hBMQ==":
         | 
| 3 3 | 
             
              metadata.gz: !binary |-
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                ZDJhN2Y1MzljZTBjYWEwMmY0Njc5MjNhM2EwM2FlYjYxNzU1MTdhNw==
         | 
| 5 5 | 
             
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                NmEzNmNjZGYxNTQzMWRkMmE3OTgzNjc2NDFjY2VjYzRlNTFhMTA5ZA==
         | 
| 7 7 | 
             
            SHA512:
         | 
| 8 8 | 
             
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 9 | 
            +
                MzU0MmI5NDE2MDI1Mjc1M2ZkYTcwMjYyZmUzMmE0OTcxNjAxZWI1ZTgzZjcw
         | 
| 10 | 
            +
                YWYwNDdmNmRhNDI1MjBjN2QyMzdkMGMyMDUxNGViZThlNWVhMjVmMDgzNTcx
         | 
| 11 | 
            +
                ZTVhZDBlNWE3YTQ5MGRhMDU0OWMxMTIzZWQ4OTI1YWI2ZmU5ZmM=
         | 
| 12 12 | 
             
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 13 | 
            +
                NTE0ODRkZmUyODIwMTM2ZWE5Yjc4MjY1NmZmYmQyZWJiYmQ2NDQ1ZDkwNGEx
         | 
| 14 | 
            +
                MzhmMTgxMTRlYWRiYTlmMjM4Njg2YjRkZjI2YWFmYTE1MmU1M2ZmZWFkY2Jl
         | 
| 15 | 
            +
                NTIxY2JkZmFlZTUzOWMxYjU4MjkzNzZjMzBlMTgwYzk4OTkwMzM=
         | 
| @@ -8,13 +8,13 @@ module CognitiveVision | |
| 8 8 | 
             
                class UnknownError          < StandardError; end
         | 
| 9 9 |  | 
| 10 10 | 
             
                def self.analyze_image(image_url, types = [:faces])
         | 
| 11 | 
            -
                   | 
| 11 | 
            +
                  features = ImageFeatures.new(types)
         | 
| 12 12 | 
             
                  body     = { 'url' => image_url }
         | 
| 13 | 
            -
                  params   = { 'visualFeatures' =>  | 
| 13 | 
            +
                  params   = { 'visualFeatures' => features.features_string }
         | 
| 14 14 | 
             
                  response = Connection.new.post('/analyze', params, body)
         | 
| 15 15 |  | 
| 16 16 | 
             
                  treat_errors(response) if response.code != 200
         | 
| 17 | 
            -
                  AnalyzeResponse.parse(response.body)
         | 
| 17 | 
            +
                  AnalyzeResponse.parse(response.body, features)
         | 
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 20 | 
             
                def self.treat_errors(response)
         | 
| @@ -1,21 +1,20 @@ | |
| 1 1 | 
             
            module CognitiveVision
         | 
| 2 2 | 
             
              class AnalyzeResponse
         | 
| 3 | 
            -
                attr_reader :adult, :faces
         | 
| 3 | 
            +
                attr_reader :adult, :categories, :description, :faces, :tags
         | 
| 4 4 |  | 
| 5 5 | 
             
                def initialize(options = {})
         | 
| 6 | 
            -
                  @adult | 
| 7 | 
            -
                  @ | 
| 6 | 
            +
                  @adult       = options.fetch(:adult, nil)
         | 
| 7 | 
            +
                  @categories  = options.fetch(:categories, [])
         | 
| 8 | 
            +
                  @description = options.fetch(:description, nil)
         | 
| 9 | 
            +
                  @faces       = options.fetch(:faces, [])
         | 
| 10 | 
            +
                  @tags        = options.fetch(:tags, [])
         | 
| 8 11 | 
             
                end
         | 
| 9 12 |  | 
| 10 | 
            -
                def self.parse(response_hash)
         | 
| 11 | 
            -
                   | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
                                      racy_content: adult_response['isRacyContent'], adult_score: adult_response['adultScore'],
         | 
| 16 | 
            -
                                      racy_score: adult_response['racyScore'])
         | 
| 17 | 
            -
                          end
         | 
| 18 | 
            -
                  new(faces: faces, adult: adult)
         | 
| 13 | 
            +
                def self.parse(response_hash, features)
         | 
| 14 | 
            +
                  parsed = features.analyzers.map do |analyzer|
         | 
| 15 | 
            +
                             [analyzer.key.to_sym, analyzer.parse(response_hash)]
         | 
| 16 | 
            +
                           end
         | 
| 17 | 
            +
                  new(Hash[parsed])
         | 
| 19 18 | 
             
                end
         | 
| 20 19 | 
             
              end
         | 
| 21 20 | 
             
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            module CognitiveVision
         | 
| 2 | 
            +
              module ImageFeature
         | 
| 3 | 
            +
                class Adult
         | 
| 4 | 
            +
                  def key
         | 
| 5 | 
            +
                    'adult'
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def parse(response)
         | 
| 9 | 
            +
                    adult_response = response[key]
         | 
| 10 | 
            +
                    CognitiveVision::Adult.new(adult_content: adult_response['isAdultContent'],
         | 
| 11 | 
            +
                                               adult_score: adult_response['adultScore'], racy_score: adult_response['racyScore'],
         | 
| 12 | 
            +
                                               racy_content: adult_response['isRacyContent'])
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            module CognitiveVision
         | 
| 2 | 
            +
              module ImageFeature
         | 
| 3 | 
            +
                class Category
         | 
| 4 | 
            +
                  def key
         | 
| 5 | 
            +
                    'categories'
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def parse(response)
         | 
| 9 | 
            +
                    response[key].map { |category| CognitiveVision::Category.new(name: category['name'], score: category['score']) }
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            module CognitiveVision
         | 
| 2 | 
            +
              module ImageFeature
         | 
| 3 | 
            +
                class Description
         | 
| 4 | 
            +
                  def key
         | 
| 5 | 
            +
                    'description'
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def parse(response)
         | 
| 9 | 
            +
                    description_response = response[key]
         | 
| 10 | 
            +
                    captions = description_response['captions'].map do |caption|
         | 
| 11 | 
            +
                      CognitiveVision::DescriptionCaption.new(text: caption['text'], confidence: caption['confidence'])
         | 
| 12 | 
            +
                    end
         | 
| 13 | 
            +
                    CognitiveVision::Description.new(tags: description_response['tags'], captions: captions)
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            module CognitiveVision
         | 
| 2 | 
            +
              class ImageFeatures
         | 
| 3 | 
            +
                ANALYZERS = {
         | 
| 4 | 
            +
                  adult:       ImageFeature::Adult.new,
         | 
| 5 | 
            +
                  categories:  ImageFeature::Category.new,
         | 
| 6 | 
            +
                  description: ImageFeature::Description.new,
         | 
| 7 | 
            +
                  faces:       ImageFeature::Face.new,
         | 
| 8 | 
            +
                  tags:        ImageFeature::Tag.new
         | 
| 9 | 
            +
                }
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def initialize(features)
         | 
| 12 | 
            +
                  @features = [features].flatten
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def features_string
         | 
| 16 | 
            +
                  @features.join(',')
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def analyzers
         | 
| 20 | 
            +
                  ANALYZERS.map{ |feature, analyzer| analyzer if @features.include?(feature) }.reject(&:nil?)
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
    
        data/lib/cognitive_vision.rb
    CHANGED
    
    | @@ -1,8 +1,18 @@ | |
| 1 1 | 
             
            require 'cognitive_vision/version'
         | 
| 2 2 | 
             
            require 'cognitive_vision/configuration'
         | 
| 3 3 | 
             
            require 'cognitive_vision/connection'
         | 
| 4 | 
            +
            require 'cognitive_vision/image_feature/adult'
         | 
| 5 | 
            +
            require 'cognitive_vision/image_feature/category'
         | 
| 6 | 
            +
            require 'cognitive_vision/image_feature/description'
         | 
| 7 | 
            +
            require 'cognitive_vision/image_feature/face'
         | 
| 8 | 
            +
            require 'cognitive_vision/image_feature/tag'
         | 
| 9 | 
            +
            require 'cognitive_vision/image_features'
         | 
| 4 10 | 
             
            require 'cognitive_vision/adult'
         | 
| 11 | 
            +
            require 'cognitive_vision/category'
         | 
| 12 | 
            +
            require 'cognitive_vision/description'
         | 
| 13 | 
            +
            require 'cognitive_vision/description_caption'
         | 
| 5 14 | 
             
            require 'cognitive_vision/face'
         | 
| 15 | 
            +
            require 'cognitive_vision/tag'
         | 
| 6 16 | 
             
            require 'cognitive_vision/analyze_response'
         | 
| 7 17 | 
             
            require 'cognitive_vision/analyze_image'
         | 
| 8 18 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: cognitive_vision
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Carlos Ribeiro
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2016-09- | 
| 11 | 
            +
            date: 2016-09-12 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -173,9 +173,19 @@ files: | |
| 173 173 | 
             
            - lib/cognitive_vision/adult.rb
         | 
| 174 174 | 
             
            - lib/cognitive_vision/analyze_image.rb
         | 
| 175 175 | 
             
            - lib/cognitive_vision/analyze_response.rb
         | 
| 176 | 
            +
            - lib/cognitive_vision/category.rb
         | 
| 176 177 | 
             
            - lib/cognitive_vision/configuration.rb
         | 
| 177 178 | 
             
            - lib/cognitive_vision/connection.rb
         | 
| 179 | 
            +
            - lib/cognitive_vision/description.rb
         | 
| 180 | 
            +
            - lib/cognitive_vision/description_caption.rb
         | 
| 178 181 | 
             
            - lib/cognitive_vision/face.rb
         | 
| 182 | 
            +
            - lib/cognitive_vision/image_feature/adult.rb
         | 
| 183 | 
            +
            - lib/cognitive_vision/image_feature/category.rb
         | 
| 184 | 
            +
            - lib/cognitive_vision/image_feature/description.rb
         | 
| 185 | 
            +
            - lib/cognitive_vision/image_feature/face.rb
         | 
| 186 | 
            +
            - lib/cognitive_vision/image_feature/tag.rb
         | 
| 187 | 
            +
            - lib/cognitive_vision/image_features.rb
         | 
| 188 | 
            +
            - lib/cognitive_vision/tag.rb
         | 
| 179 189 | 
             
            - lib/cognitive_vision/version.rb
         | 
| 180 190 | 
             
            homepage: https://github.com/mattr/cognitive_vision
         | 
| 181 191 | 
             
            licenses:
         |