veye 0.0.2
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 +15 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +51 -0
- data/README.md +271 -0
- data/README.rdoc +6 -0
- data/Rakefile +44 -0
- data/bin/veye +390 -0
- data/lib/veye/api/base_resource.rb +29 -0
- data/lib/veye/api/json_response.rb +56 -0
- data/lib/veye/api/resource.rb +22 -0
- data/lib/veye/api.rb +3 -0
- data/lib/veye/package/follow.rb +50 -0
- data/lib/veye/package/info.rb +50 -0
- data/lib/veye/package/info_csv.rb +18 -0
- data/lib/veye/package/info_json.rb +14 -0
- data/lib/veye/package/info_pretty.rb +27 -0
- data/lib/veye/package/info_table.rb +29 -0
- data/lib/veye/package/search.rb +46 -0
- data/lib/veye/package/search_csv.rb +33 -0
- data/lib/veye/package/search_json.rb +19 -0
- data/lib/veye/package/search_pretty.rb +35 -0
- data/lib/veye/package/search_table.rb +40 -0
- data/lib/veye/package.rb +23 -0
- data/lib/veye/pagination/pagination_csv.rb +17 -0
- data/lib/veye/pagination/pagination_json.rb +12 -0
- data/lib/veye/pagination/pagination_pretty.rb +22 -0
- data/lib/veye/pagination/pagination_table.rb +22 -0
- data/lib/veye/pagination/show.rb +26 -0
- data/lib/veye/pagination.rb +7 -0
- data/lib/veye/project/check.rb +147 -0
- data/lib/veye/project/licence.rb +48 -0
- data/lib/veye/project/project_csv.rb +28 -0
- data/lib/veye/project/project_dependency_csv.rb +25 -0
- data/lib/veye/project/project_dependency_json.rb +12 -0
- data/lib/veye/project/project_dependency_pretty.rb +30 -0
- data/lib/veye/project/project_dependency_table.rb +27 -0
- data/lib/veye/project/project_json.rb +13 -0
- data/lib/veye/project/project_licence_csv.rb +19 -0
- data/lib/veye/project/project_licence_json.rb +12 -0
- data/lib/veye/project/project_licence_pretty.rb +23 -0
- data/lib/veye/project/project_licence_table.rb +29 -0
- data/lib/veye/project/project_pretty.rb +28 -0
- data/lib/veye/project/project_table.rb +30 -0
- data/lib/veye/project.rb +11 -0
- data/lib/veye/service.rb +14 -0
- data/lib/veye/user/favorite_csv.rb +28 -0
- data/lib/veye/user/favorite_json.rb +14 -0
- data/lib/veye/user/favorite_pretty.rb +25 -0
- data/lib/veye/user/favorite_table.rb +28 -0
- data/lib/veye/user/me.rb +75 -0
- data/lib/veye/user/profile_csv.rb +21 -0
- data/lib/veye/user/profile_json.rb +14 -0
- data/lib/veye/user/profile_pretty.rb +31 -0
- data/lib/veye/user/profile_table.rb +34 -0
- data/lib/veye/user.rb +7 -0
- data/lib/veye/version.rb +13 -0
- data/lib/veye.rb +82 -0
- data/test/default_test.rb +14 -0
- data/test/files/Gemfile +20 -0
- data/test/files/maven-1.0.1.pom +128 -0
- data/test/test_helper.rb +9 -0
- data/veye.rdoc +5 -0
- metadata +229 -0
| @@ -0,0 +1,46 @@ | |
| 1 | 
            +
            require_relative 'search_csv.rb'
         | 
| 2 | 
            +
            require_relative 'search_json.rb'
         | 
| 3 | 
            +
            require_relative 'search_pretty.rb'
         | 
| 4 | 
            +
            require_relative 'search_table.rb'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            module Veye
         | 
| 7 | 
            +
              module Package
         | 
| 8 | 
            +
                
         | 
| 9 | 
            +
                class Search
         | 
| 10 | 
            +
                    @@output_formats = {
         | 
| 11 | 
            +
                        'csv'       => SearchCSV.new,
         | 
| 12 | 
            +
                        'json'      => SearchJSON.new,
         | 
| 13 | 
            +
                        'pretty'    => SearchPretty.new,
         | 
| 14 | 
            +
                        'table'     => SearchTable.new
         | 
| 15 | 
            +
                    }
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    def self.search(search_term, language = nil, group_id = nil, page = nil)
         | 
| 18 | 
            +
                      search_api = Veye::API::Resource.new "#{RESOURCE_PATH}/search" 
         | 
| 19 | 
            +
                      
         | 
| 20 | 
            +
                      search_response = nil
         | 
| 21 | 
            +
                      search_params = {:q => search_term.to_s}
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                      search_params[:lang] = Package.encode_language(language) unless language.nil?
         | 
| 24 | 
            +
                      search_params[:g] = group_id unless group_id.nil?
         | 
| 25 | 
            +
                      search_params[:page] = page unless page.nil?
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                      request_params = {:params => search_params}
         | 
| 28 | 
            +
                      search_api.resource["/#{search_term}"].get(request_params) do |response, request, result, &block|
         | 
| 29 | 
            +
                          search_response = API::JSONResponse.new(request, result, response)    
         | 
| 30 | 
            +
                      end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                      return search_response
         | 
| 33 | 
            +
                    end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    def self.format(search_results, format = 'pretty', paging = nil)
         | 
| 36 | 
            +
                        
         | 
| 37 | 
            +
                        formatter = @@output_formats[format]
         | 
| 38 | 
            +
                        formatter.before
         | 
| 39 | 
            +
                        formatter.format(search_results)
         | 
| 40 | 
            +
                        formatter.after paging
         | 
| 41 | 
            +
                    end
         | 
| 42 | 
            +
                    
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
            end
         | 
| @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            module Veye
         | 
| 2 | 
            +
              module Package
         | 
| 3 | 
            +
                class SearchCSV
         | 
| 4 | 
            +
                  def before
         | 
| 5 | 
            +
                    printf("nr,name,version,prod_key,version,language,group_id\n")
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
                  def after(paging = nil)
         | 
| 8 | 
            +
                    return if paging.nil?
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    printf("# ------------------------------------------\n")
         | 
| 11 | 
            +
                    printf("current_page,per_page,total_pages,total_entries\n")
         | 
| 12 | 
            +
                    printf("%s,%s,%s,%s\n",
         | 
| 13 | 
            +
                          paging['current_page'],
         | 
| 14 | 
            +
                          paging['per_page'],
         | 
| 15 | 
            +
                          paging['total_pages'],
         | 
| 16 | 
            +
                          paging['total_entries'])
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
                    
         | 
| 19 | 
            +
                  def format(results)
         | 
| 20 | 
            +
                    results.each_with_index do |result, index|
         | 
| 21 | 
            +
                        printf("%d,%s,%s,%s,%s,%s,%s\n", 
         | 
| 22 | 
            +
                                index + 1, 
         | 
| 23 | 
            +
                                result["name"],
         | 
| 24 | 
            +
                                result["version"], 
         | 
| 25 | 
            +
                                result["prod_key"],
         | 
| 26 | 
            +
                                result["version"],
         | 
| 27 | 
            +
                                result["language"],
         | 
| 28 | 
            +
                                result["group_id"])
         | 
| 29 | 
            +
                    end
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            module Veye
         | 
| 2 | 
            +
              module Package
         | 
| 3 | 
            +
                class SearchJSON 
         | 
| 4 | 
            +
                  def before
         | 
| 5 | 
            +
                    @results = {:results => []}
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
                  def after(paging = nil)
         | 
| 8 | 
            +
                    @results[:paging] = paging unless paging.nil?
         | 
| 9 | 
            +
                    printf("%s\n", @results.to_json)
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  def format(results)
         | 
| 13 | 
            +
                    results.each do |result|
         | 
| 14 | 
            +
                      @results[:results] << result
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            require 'rainbow'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Veye
         | 
| 4 | 
            +
              module Package
         | 
| 5 | 
            +
                class SearchPretty
         | 
| 6 | 
            +
                  def before; end
         | 
| 7 | 
            +
                  def after(paging = nil)
         | 
| 8 | 
            +
                    return if paging.nil?
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    printf("\n#-- %s\n", "Pagination information".bright)
         | 
| 11 | 
            +
                    printf("\t%-15s: %s\n", "Current page", paging['current_page'])
         | 
| 12 | 
            +
                    printf("\t%-15s: %s\n", "Per page", paging['per_page'])
         | 
| 13 | 
            +
                    printf("\t%-15s: %s\n", "Total pages", paging['total_pages'])
         | 
| 14 | 
            +
                    printf("\t%-15s: %s\n", "Total entries", paging['total_entries'])
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  def format(results)
         | 
| 19 | 
            +
                    results.each_with_index do |result, index|
         | 
| 20 | 
            +
                      printf("%3d - %s\n", 
         | 
| 21 | 
            +
                             index + 1,
         | 
| 22 | 
            +
                             "#{result["name"]}".foreground(:green).bright)
         | 
| 23 | 
            +
                      printf("\t%-15s: %s\n", "Product key", result["prod_key"])
         | 
| 24 | 
            +
                      printf("\t%-15s: %s\n", "Latest version", 
         | 
| 25 | 
            +
                                              "#{result["version"]}".bright)
         | 
| 26 | 
            +
                      printf("\t%-15s: %s\n", "Language", result["language"])
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                      if result.has_key? "group_id" and not result["group_id"].empty? 
         | 
| 29 | 
            +
                        printf("\t%-15s: %s\n", "Group id", result["group_id"])
         | 
| 30 | 
            +
                      end
         | 
| 31 | 
            +
                    end
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
            end
         | 
| @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            require 'terminal-table'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Veye
         | 
| 4 | 
            +
              module Package
         | 
| 5 | 
            +
                class SearchTable
         | 
| 6 | 
            +
                    def before
         | 
| 7 | 
            +
                      @@table = Terminal::Table.new :title => "Package search",
         | 
| 8 | 
            +
                                                    :headings => %w(index name version product_key language group_id)
         | 
| 9 | 
            +
                      @@table.align_column(0, :right)
         | 
| 10 | 
            +
                    end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    def after(paging = nil)
         | 
| 13 | 
            +
                      unless paging.nil?
         | 
| 14 | 
            +
                        paging_header = ['p', 'current_page', 'per_page', 'total_pages', 'total_entries']
         | 
| 15 | 
            +
                        paging_data = ["p"]
         | 
| 16 | 
            +
                        paging.each_pair do |key, val| 
         | 
| 17 | 
            +
                          paging_data << val
         | 
| 18 | 
            +
                        end
         | 
| 19 | 
            +
                        
         | 
| 20 | 
            +
                        @@table.add_separator
         | 
| 21 | 
            +
                        @@table << paging_header
         | 
| 22 | 
            +
                        @@table << paging_data
         | 
| 23 | 
            +
                      end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                      puts @@table.to_s
         | 
| 26 | 
            +
                    end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    def format(results)
         | 
| 29 | 
            +
                      results.each_with_index do |result, index|
         | 
| 30 | 
            +
                        row = [index+1, result["name"], result["version"], result["prod_key"]]
         | 
| 31 | 
            +
                        row << result["language"]
         | 
| 32 | 
            +
                        row << result["group_id"]
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                        @@table << row
         | 
| 35 | 
            +
                      end
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
            end
         | 
    
        data/lib/veye/package.rb
    ADDED
    
    | @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            require_relative 'package/info.rb'
         | 
| 2 | 
            +
            require_relative 'package/search.rb'
         | 
| 3 | 
            +
            require_relative 'package/follow.rb'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            # -- define module constants here
         | 
| 6 | 
            +
            module Veye
         | 
| 7 | 
            +
              module Package
         | 
| 8 | 
            +
                RESOURCE_PATH = "/products"
         | 
| 9 | 
            +
                
         | 
| 10 | 
            +
                def supported_languages
         | 
| 11 | 
            +
                  Set.new ["Clojure", "Java", "Javascript", "Node.JS", "PHP", "Python", "Ruby", "R"]
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                def self.encode_prod_key(prod_key)
         | 
| 15 | 
            +
                  prod_key = prod_key.to_s
         | 
| 16 | 
            +
                  prod_key.gsub(/\//, ":").gsub(/\./, "~")  
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def self.encode_language(lang)
         | 
| 20 | 
            +
                  lang.gsub(/\./, "").downcase   
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            module Veye
         | 
| 2 | 
            +
              module Pagination
         | 
| 3 | 
            +
                class PaginationCSV
         | 
| 4 | 
            +
                  def before
         | 
| 5 | 
            +
                    printf("current_page,per_page,total_pages,total_entries\n")
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def after; end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  def format(paging)
         | 
| 11 | 
            +
                    printf("%s,%s,%s,%s\n",
         | 
| 12 | 
            +
                          paging['current_page'], paging['per_page'],
         | 
| 13 | 
            +
                          paging['total_pages'], paging['total_entries'])
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            require 'rainbow'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Veye
         | 
| 4 | 
            +
              module Pagination
         | 
| 5 | 
            +
                class PaginationPretty
         | 
| 6 | 
            +
                  def before; end
         | 
| 7 | 
            +
                  def after; end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def format(paging)
         | 
| 10 | 
            +
                    printf("\t%15s - %s\n",
         | 
| 11 | 
            +
                           "Current page".foreground(:green).bright,
         | 
| 12 | 
            +
                           "#{paging['current_page']}".bright)
         | 
| 13 | 
            +
                    puts "\t-------------------------"
         | 
| 14 | 
            +
                    printf("\t%-15s: %s\n", "Per page", paging['per_page'])
         | 
| 15 | 
            +
                    printf("\t%-15s: %s\n", "Total pages", paging['total_pages'])
         | 
| 16 | 
            +
                    printf("\t%-15s: %s\n", "Total entries", paging['total_entries'])
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| 22 | 
            +
             | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            require 'terminal-table'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Veye
         | 
| 4 | 
            +
              module Pagination
         | 
| 5 | 
            +
                class PaginationTable
         | 
| 6 | 
            +
                  def before
         | 
| 7 | 
            +
                    @@table = Terminal::Table.new :title => "Pagination",
         | 
| 8 | 
            +
                                                  :headings => %w(current_page per_page total_pages total_entries)
         | 
| 9 | 
            +
                    @@table.align_column(0, :right)
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  def after
         | 
| 13 | 
            +
                    puts @@table.to_s
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def format(paging)
         | 
| 17 | 
            +
                    row = [paging['current_page'], paging['per_page'], paging['total_pages'], paging['total_entries']]
         | 
| 18 | 
            +
                    @@table << row
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            require_relative 'pagination_csv.rb'
         | 
| 2 | 
            +
            require_relative 'pagination_json.rb'
         | 
| 3 | 
            +
            require_relative 'pagination_pretty.rb'
         | 
| 4 | 
            +
            require_relative 'pagination_table.rb'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            module Veye
         | 
| 7 | 
            +
              module Pagination
         | 
| 8 | 
            +
                class Show
         | 
| 9 | 
            +
                  @@pagination_formats = {
         | 
| 10 | 
            +
                    'csv'     => PaginationCSV.new,
         | 
| 11 | 
            +
                    'json'    => PaginationJSON.new,
         | 
| 12 | 
            +
                    'pretty'  => PaginationPretty.new,
         | 
| 13 | 
            +
                    'table'   => PaginationTable.new
         | 
| 14 | 
            +
                  }
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def self.format(paging, format = 'pretty')
         | 
| 17 | 
            +
                    formatter = @@pagination_formats[format]
         | 
| 18 | 
            +
                    
         | 
| 19 | 
            +
                    formatter.before
         | 
| 20 | 
            +
                    formatter.format paging
         | 
| 21 | 
            +
                    formatter.after
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
| 26 | 
            +
             | 
| @@ -0,0 +1,147 @@ | |
| 1 | 
            +
            require 'json'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative 'project_csv.rb'
         | 
| 4 | 
            +
            require_relative 'project_json.rb'
         | 
| 5 | 
            +
            require_relative 'project_pretty.rb'
         | 
| 6 | 
            +
            require_relative 'project_table.rb'
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            require_relative 'project_dependency_csv.rb'
         | 
| 9 | 
            +
            require_relative 'project_dependency_json.rb'
         | 
| 10 | 
            +
            require_relative 'project_dependency_pretty.rb'
         | 
| 11 | 
            +
            require_relative 'project_dependency_table.rb'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            module Veye
         | 
| 14 | 
            +
              module Project
         | 
| 15 | 
            +
                class Check
         | 
| 16 | 
            +
                  @@output_formats = {
         | 
| 17 | 
            +
                    "csv"       => ProjectCSV.new,
         | 
| 18 | 
            +
                    "json"      => ProjectJSON.new,
         | 
| 19 | 
            +
                    "pretty"    => ProjectPretty.new,
         | 
| 20 | 
            +
                    "table"     => ProjectTable.new
         | 
| 21 | 
            +
                  }
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  @@dependency_output_formats = {
         | 
| 24 | 
            +
                    "csv"       => ProjectDependencyCSV.new,
         | 
| 25 | 
            +
                    "json"      => ProjectDependencyJSON.new,
         | 
| 26 | 
            +
                    "pretty"    => ProjectDependencyPretty.new,
         | 
| 27 | 
            +
                    "table"     => ProjectDependencyTable.new
         | 
| 28 | 
            +
                  }
         | 
| 29 | 
            +
                  
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  def self.get_list(api_key)
         | 
| 32 | 
            +
                    project_api = API::Resource.new(RESOURCE_PATH)
         | 
| 33 | 
            +
                    qparams = {:params => {:api_key => api_key}}
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    project_api.resource.get(qparams) do |response, request, result|
         | 
| 36 | 
            +
                      response_data = API::JSONResponse.new(request, result, response)
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  def self.upload(filename, api_key)
         | 
| 41 | 
            +
                    response_data = {:success => false}
         | 
| 42 | 
            +
                    file_path = File.absolute_path(filename)
         | 
| 43 | 
            +
                     
         | 
| 44 | 
            +
                    unless File.exists?(file_path)
         | 
| 45 | 
            +
                        error_msg = sprintf("%s: Cant read file `%s`", 
         | 
| 46 | 
            +
                                            "Error".foreground(:red),
         | 
| 47 | 
            +
                                            "#{filename}".foreground(:yellow)
         | 
| 48 | 
            +
                                           )
         | 
| 49 | 
            +
                        exit_now!(error_msg)
         | 
| 50 | 
            +
                    end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                    file_size = File.size(file_path)
         | 
| 53 | 
            +
                    unless file_size != 0 and file_size < MAX_FILE_SIZE
         | 
| 54 | 
            +
                        exit_now!("Size of file is not acceptable: 0kb < x <= #{MAX_FILE_SIZE/1000}kb")
         | 
| 55 | 
            +
                    end
         | 
| 56 | 
            +
                   
         | 
| 57 | 
            +
                    project_api = API::Resource.new(RESOURCE_PATH)
         | 
| 58 | 
            +
                    file_obj = File.open(file_path, 'rb')
         | 
| 59 | 
            +
                    
         | 
| 60 | 
            +
                    upload_data = {
         | 
| 61 | 
            +
                      :upload   => file_obj,
         | 
| 62 | 
            +
                      :api_key  => api_key
         | 
| 63 | 
            +
                    }
         | 
| 64 | 
            +
                    project_api.resource.post(upload_data) do |response, request, result, &block|
         | 
| 65 | 
            +
                      response_data = API::JSONResponse.new(request, result, response)
         | 
| 66 | 
            +
                    end
         | 
| 67 | 
            +
                    
         | 
| 68 | 
            +
                    return response_data
         | 
| 69 | 
            +
                  end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                  def self.update(project_key, filename, api_key)
         | 
| 72 | 
            +
                    response_data = {:success => false}
         | 
| 73 | 
            +
                    file_path = File.absolute_path(filename)
         | 
| 74 | 
            +
                     
         | 
| 75 | 
            +
                    unless File.exists?(file_path)
         | 
| 76 | 
            +
                      error_msg = sprintf("%s: Cant read file `%s`", 
         | 
| 77 | 
            +
                                          "Error".foreground(:red),
         | 
| 78 | 
            +
                                          "#{filename}".foreground(:yellow)
         | 
| 79 | 
            +
                                         )
         | 
| 80 | 
            +
                      exit_now!(error_msg)
         | 
| 81 | 
            +
                    end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                    file_size = File.size(file_path)
         | 
| 84 | 
            +
                    unless file_size != 0 and file_size < MAX_FILE_SIZE
         | 
| 85 | 
            +
                      exit_now!(" The size of file is not acceptable: 0kb < x <= #{MAX_FILE_SIZE/1000}kb")
         | 
| 86 | 
            +
                    end
         | 
| 87 | 
            +
                   
         | 
| 88 | 
            +
                    project_api = API::Resource.new("#{RESOURCE_PATH}/#{project_key}")
         | 
| 89 | 
            +
                    file_obj = File.open(file_path, 'rb') 
         | 
| 90 | 
            +
                    upload_data = {
         | 
| 91 | 
            +
                      :project_file   => file_obj,
         | 
| 92 | 
            +
                      :api_key        => api_key
         | 
| 93 | 
            +
                    }
         | 
| 94 | 
            +
                    project_api.resource.post(upload_data) do |response, request, result, &block|
         | 
| 95 | 
            +
                      response_data = API::JSONResponse.new(request, result, response)
         | 
| 96 | 
            +
                    end
         | 
| 97 | 
            +
                  end 
         | 
| 98 | 
            +
                  def self.get_project(project_key, api_key)
         | 
| 99 | 
            +
                    response_data = nil
         | 
| 100 | 
            +
                    project_api = API::Resource.new(RESOURCE_PATH)
         | 
| 101 | 
            +
                    
         | 
| 102 | 
            +
                    if project_key.nil? or project_key.empty? 
         | 
| 103 | 
            +
                      error_msg = sprintf("%s: %s",
         | 
| 104 | 
            +
                                         "Error".foreground(:red),
         | 
| 105 | 
            +
                                         "Not valid project_key: `#{project_key}`")          
         | 
| 106 | 
            +
                      exit_now! error_msg
         | 
| 107 | 
            +
                    end
         | 
| 108 | 
            +
                    
         | 
| 109 | 
            +
                    project_url = "/#{project_key}"
         | 
| 110 | 
            +
                    qparams = {:params => {:api_key => api_key}}
         | 
| 111 | 
            +
                    project_api.resource[project_url].get(qparams) do |response, request, result|
         | 
| 112 | 
            +
                      response_data = API::JSONResponse.new(request, result, response)
         | 
| 113 | 
            +
                    end
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                    return response_data
         | 
| 116 | 
            +
                  end
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                  def self.delete_project(project_key, api_key)
         | 
| 119 | 
            +
                    project_api = Veye::API::Resource.new(RESOURCE_PATH)
         | 
| 120 | 
            +
                    qparams = {:params => {:api_key => api_key}}
         | 
| 121 | 
            +
                    response_data = nil
         | 
| 122 | 
            +
             | 
| 123 | 
            +
                    project_api.resource["/#{project_key}"].delete(qparams) do |response, request, result|
         | 
| 124 | 
            +
                      response_data = API::JSONResponse.new(request, result, response)
         | 
| 125 | 
            +
                    end
         | 
| 126 | 
            +
             | 
| 127 | 
            +
                    return response_data
         | 
| 128 | 
            +
                  end
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                  def self.format(results, format = 'pretty')
         | 
| 131 | 
            +
                    formatter = @@output_formats[format]
         | 
| 132 | 
            +
                    formatter.before
         | 
| 133 | 
            +
                    formatter.format results
         | 
| 134 | 
            +
                    formatter.after
         | 
| 135 | 
            +
                  end
         | 
| 136 | 
            +
                  
         | 
| 137 | 
            +
                  def self.format_dependencies(results, format = 'pretty')
         | 
| 138 | 
            +
                    formatter = @@dependency_output_formats[format]
         | 
| 139 | 
            +
                    formatter.before
         | 
| 140 | 
            +
                    formatter.format results
         | 
| 141 | 
            +
                    formatter.after
         | 
| 142 | 
            +
                  end
         | 
| 143 | 
            +
             | 
| 144 | 
            +
                end
         | 
| 145 | 
            +
              end
         | 
| 146 | 
            +
            end
         | 
| 147 | 
            +
             | 
| @@ -0,0 +1,48 @@ | |
| 1 | 
            +
            require 'json'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative 'project_licence_csv.rb'
         | 
| 4 | 
            +
            require_relative 'project_licence_json.rb'
         | 
| 5 | 
            +
            require_relative 'project_licence_pretty.rb'
         | 
| 6 | 
            +
            require_relative 'project_licence_table.rb'
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            module Veye
         | 
| 9 | 
            +
              module Project
         | 
| 10 | 
            +
                class Licence
         | 
| 11 | 
            +
                  @@output_formats = {
         | 
| 12 | 
            +
                    "csv"     => ProjectLicenceCSV.new,
         | 
| 13 | 
            +
                    "json"    => ProjectLicenceJSON.new,
         | 
| 14 | 
            +
                    "pretty"  => ProjectLicencePretty.new,
         | 
| 15 | 
            +
                    "table"   => ProjectLicenceTable.new
         | 
| 16 | 
            +
                  }
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  def self.get_project(project_key, api_key)
         | 
| 19 | 
            +
                    response_data = nil
         | 
| 20 | 
            +
                    project_api = API::Resource.new(RESOURCE_PATH)
         | 
| 21 | 
            +
                    
         | 
| 22 | 
            +
                    if project_key.nil? or project_key.empty? 
         | 
| 23 | 
            +
                      error_msg = sprintf("%s: %s",
         | 
| 24 | 
            +
                                         "Error".foreground(:red),
         | 
| 25 | 
            +
                                         "Not valid project_key: `#{project_key}`")          
         | 
| 26 | 
            +
                      exit_now! error_msg
         | 
| 27 | 
            +
                    end
         | 
| 28 | 
            +
                    
         | 
| 29 | 
            +
                    project_url = "/#{project_key}/licenses"
         | 
| 30 | 
            +
                    qparams = {:params => {:api_key => api_key}}
         | 
| 31 | 
            +
                    project_api.resource[project_url].get(qparams) do |response, request, result|
         | 
| 32 | 
            +
                      response_data = API::JSONResponse.new(request, result, response)
         | 
| 33 | 
            +
                    end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    return response_data
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  def self.format(results, format = 'pretty')
         | 
| 39 | 
            +
                    formatter = @@output_formats[format]
         | 
| 40 | 
            +
                    formatter.before
         | 
| 41 | 
            +
                    formatter.format results
         | 
| 42 | 
            +
                    formatter.after
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
            end
         | 
| 48 | 
            +
             | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            module Veye
         | 
| 2 | 
            +
              module Project
         | 
| 3 | 
            +
                class ProjectCSV
         | 
| 4 | 
            +
                  def before
         | 
| 5 | 
            +
                    printf("nr,name,project_key,private,period,source,dep_number,out_number,created_at\n")
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
                  def after; end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def format(results)
         | 
| 10 | 
            +
                    results = [results] if results.is_a? Hash
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    results.each_with_index do |result, index|
         | 
| 13 | 
            +
                      printf("%d,%s,%s,%s,%s,%s,%s,%s,%s\n",
         | 
| 14 | 
            +
                            index + 1,
         | 
| 15 | 
            +
                            result['name'],
         | 
| 16 | 
            +
                            result['project_key'],
         | 
| 17 | 
            +
                            result['private'],
         | 
| 18 | 
            +
                            result['period'],
         | 
| 19 | 
            +
                            result['source'],
         | 
| 20 | 
            +
                            result['dep_number'],
         | 
| 21 | 
            +
                            result['out_number'],
         | 
| 22 | 
            +
                            result['created_at'])
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
| 28 | 
            +
             | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            module Veye
         | 
| 2 | 
            +
              module Project
         | 
| 3 | 
            +
                class ProjectDependencyCSV
         | 
| 4 | 
            +
                  def before 
         | 
| 5 | 
            +
                    printf("nr,name,prod_key,outdated,latest,current\n",nil)
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
                  def after; end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def format(results)
         | 
| 10 | 
            +
                    results = [results] if results.is_a?(Hash)
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    results.each_with_index do |result, index|
         | 
| 13 | 
            +
                        printf("%d,%s,%s,%s,%s,%s\n",
         | 
| 14 | 
            +
                               index + 1, 
         | 
| 15 | 
            +
                               result["name"],
         | 
| 16 | 
            +
                               result["prod_key"],
         | 
| 17 | 
            +
                               result["outdated"],
         | 
| 18 | 
            +
                               result["version_current"],
         | 
| 19 | 
            +
                               result["version_requested"],
         | 
| 20 | 
            +
                              )
         | 
| 21 | 
            +
                    end
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            require 'rainbow'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Veye
         | 
| 4 | 
            +
              module Project
         | 
| 5 | 
            +
                class ProjectDependencyPretty
         | 
| 6 | 
            +
                  def before; end
         | 
| 7 | 
            +
                  def after; end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def format(results)
         | 
| 10 | 
            +
                    results = [results] if results.is_a?(Hash)
         | 
| 11 | 
            +
                    results.each_with_index do |result, index|
         | 
| 12 | 
            +
                      project_name = "#{result['name']}".foreground(:green).bright
         | 
| 13 | 
            +
                      printf("%3d - %s\n", index + 1, project_name)
         | 
| 14 | 
            +
                      printf("\t%-15s: %s\n", "Product key", result["prod_key"])
         | 
| 15 | 
            +
                      
         | 
| 16 | 
            +
                      color = (result["outdated"] == true) ? :red : :green
         | 
| 17 | 
            +
                      printf("\t%-15s: %s\n", "Outdated",
         | 
| 18 | 
            +
                                              "#{result['outdated']}".foreground(color))
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                      printf("\t%-15s: %s\n", "Latest version",
         | 
| 21 | 
            +
                                              "#{result['version_current']}".foreground(color))
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                      printf("\t%-15s: %s\n", "Current version", result["version_requested"])
         | 
| 24 | 
            +
                    
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
            end
         | 
| 30 | 
            +
             | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            require 'terminal-table'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Veye
         | 
| 4 | 
            +
              module Project
         | 
| 5 | 
            +
                class ProjectDependencyTable
         | 
| 6 | 
            +
                  def before
         | 
| 7 | 
            +
                    @@table = Terminal::Table.new :title => "Version check",
         | 
| 8 | 
            +
                      :headings => %w(index name prod_key version_current version_latest)
         | 
| 9 | 
            +
                    @@table.align_column(0, :right)
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  def after
         | 
| 13 | 
            +
                    puts @@table.to_s
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def format(results)
         | 
| 17 | 
            +
                    results = [results] if results.is_a?(Hash)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    results.each_with_index do |result, index|
         | 
| 20 | 
            +
                      row = [index + 1, result["name"], result["prod_key"], 
         | 
| 21 | 
            +
                              result["version_current"], result["version_requested"]]
         | 
| 22 | 
            +
                      @@table << row
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            module Veye
         | 
| 2 | 
            +
              module Project
         | 
| 3 | 
            +
                class ProjectLicenceCSV
         | 
| 4 | 
            +
                  def before
         | 
| 5 | 
            +
                    printf("nr,licence,product keys\n")
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
                  def after; end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def format(results)
         | 
| 10 | 
            +
                    n = 1
         | 
| 11 | 
            +
                    results["licenses"].each_pair do |licence, prods|
         | 
| 12 | 
            +
                      prod_keys = prods.map {|p| p["prod_key"]}
         | 
| 13 | 
            +
                      printf("%d,%s,%s\n", n, licence, prod_keys.join(','))
         | 
| 14 | 
            +
                      n += 1
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         |