strongself/fabricio

View on GitHub
lib/fabricio/networking/version_request_model_factory.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'fabricio/networking/request_model_factory'
require 'fabricio/networking/request_model'

module Fabricio
  module Networking
    # This factory creates request models for fetching data for Version model object
    class VersionRequestModelFactory < RequestModelFactory

      # Returns a request model for obtaining the list of all versions for a specific app
      #
      # @param app_id [String]
      # @param page [Int]
      # @param per_page [Int]
      # @return [Fabricio::Networking::RequestModel]
      def all_versions_request_model(options = {})
        options = {
          :app_id => stored_app_id,
          :page => 1,
          :per_page => 100
        }.merge(options)
        validate_options(options)
        path = "#{FABRIC_API_3_PATH}#{FABRIC_PROJECTS_ENDPOINT}/#{options[:app_id]}/versions"
        params = {
            'fields' => 'id,synthesized_version,major,minor,collect_reports,status,starred',
            'page' => options[:page],
            'per_page' => options[:per_page]
        }
        model = Fabricio::Networking::RequestModel.new do |config|
          config.type = :GET
          config.base_url = FABRIC_API_URL
          config.api_path = path
          config.params = params
        end
        model
      end

      # Returns a request model for obtaining an array of top versions for a given app
      #
      # @param organization_id [String] Organization identifier
      # @param app_id [String]
      # @param start_time [String] Timestamp of the start date
      # @param end_time [String] Timestamp of the end date
      # @return [Fabricio::Networking::RequestModel]
      def top_versions_request_model(options = {})
        options = {
          :organization_id => stored_organization_id,
          :app_id => stored_app_id,
          :start_time => day_ago_timestamp,
          :end_time => today_timestamp
        }.merge(options)
        validate_options(options)
        path = "#{FABRIC_API_PATH}#{org_app_endpoint(options[:organization_id], options[:app_id])}/growth_analytics/top_builds"
        params = {
            'app_id' => options[:app_id],
            'start' => options[:start_time],
            'end' => options[:end_time]
        }
        model = Fabricio::Networking::RequestModel.new do |config|
          config.type = :GET
          config.base_url = FABRIC_API_URL
          config.api_path = path
          config.params = params
        end
        model
      end

    end
  end
end