module Genio::Helper::PHP

Constants

BasicTypes

Spec Types to PHP Types conversion map

KeyWords

Key/Reserved Words

RestServiceImport

Class static imports/references for rest services

WSDLServiceImport

Class static imports/references for rest services

WSDLStubImport

Class static imports/references for WSDL

Public Instance Methods

allowed_params(parameters) click to toggle source

Returns set of alllowed query parameters for a operation

# File lib/genio/helper/php.rb, line 334
def allowed_params(parameters)
  parameters.select do |name, values|
    values.location != "path"
  end
end
deprecated_function_name(name) click to toggle source
# File lib/genio/helper/php.rb, line 229
def deprecated_function_name(name)
  name.gsub(/-/, "_").capitalize
end
find_basic_type(key) click to toggle source

Returns the type of a member

# File lib/genio/helper/php.rb, line 111
def find_basic_type(key)
  BasicTypes[key] ? BasicTypes[key] : valid_class_name(key)
end
form_arguments(classname, property, name) click to toggle source
# File lib/genio/helper/php.rb, line 255
def form_arguments(classname, property, name)
  arguments = {}
  property.path.scan(/{([^}]*)}/).each do |name, etc|
   if is_static_method(property) or name !~ /^#{classname}/i
    arguments[valid_property_name(name)] = "string"
   end
  end
  if property.request and property.request != classname
    arguments[valid_property_name(property.request)] = property.request
  end
  if property.type == 'GET' or property.type == 'HEAD' or property.type == 'DELETE'
    arguments["queryParameters"] = "array"
  elsif (property.parameters && allowed_params(property.parameters).size > 0)
    arguments["queryParameters"] = "array"
  end
  arguments
end
get_namespace(package) click to toggle source
# File lib/genio/helper/php.rb, line 302
def get_namespace(package)
  pkg = options[:namespace]
  return capitalize_package(remove_tld_in_package(convert_ns_to_package(pkg))) if pkg.present?
  return validated_package(package)
end
get_object_array(classname, name, property, argument_hash) click to toggle source
# File lib/genio/helper/php.rb, line 273
def get_object_array(classname, name, property, argument_hash)
  arr = []
  if property.path
    arr.push("queryParameters")
  else
    argument_hash.each do |name, type|
      if name.include?("Id") and property.path =~ /\{([^}]*id)\}/
        arr.push(name)
      end
    end
    if !is_static_method(property) and name != "create"
      arr.push("this.id")
    end
  end
  arr
end
get_payload(classname, property) click to toggle source
# File lib/genio/helper/php.rb, line 290
def get_payload(classname, property)
  payload = '""';
  if !is_static_method(property)
    if property.request == classname
      payload = "$this->toJSON()"
    elsif property.request
      payload = "$" + valid_property_name(property.request) + "->toJSON()"
    end
  end
  payload
end
get_php_type(property, schema, classname = nil) click to toggle source
# File lib/genio/helper/php.rb, line 115
def get_php_type(property, schema, classname = nil)
  type = find_basic_type(property.type)
  
  # for enums, return type as string
  type = "string" if schema.enum_types[property.type]
  
  # If type is Self (as per Spec) treat is as HostType
    # classname is always in camelcase
    type = classname if type.downcase == "self"
  type
end
get_rootname_serialization(data_type, schema) click to toggle source
# File lib/genio/helper/php.rb, line 318
def get_rootname_serialization(data_type, schema)
  schema.services.each do |service_name, servicedef|
    servicedef.operations.each do |operation_name, oper_definition|
      if (data_type.name == oper_definition.request)
        temp = oper_definition.request_property.package + ":"  + oper_definition.request_property.name
        return temp
      elsif (data_type.name == oper_definition.header)
        temp = oper_definition.header_property.package + ":" + oper_definition.header_property.name
        return temp
      end
    end
  end
end
get_wsdl_operation_arguments(operation_definition) click to toggle source

Returns a hash of arguments for wsdl operations including the request and header arguments hash is in the format of [name] = [type]

# File lib/genio/helper/php.rb, line 311
def get_wsdl_operation_arguments(operation_definition)
  argument_array = []
    argument_array.push('$' + operation_definition.request.camelcase(:lower))
    #argument_array.push('$' + operation_definition.header.camelcase(:lower))
  argument_array
end
imports(data_type, schema, package, classname, schema_format) click to toggle source
# File lib/genio/helper/php.rb, line 127
def imports(data_type, schema, package, classname, schema_format)
  
  # mandatory references
  list = [] 
  if (data_type.extends)
    defpkg = get_namespace(schema.data_types[valid_class_name(data_type.extends)].package || package)
      list.push(defpkg + '\\' + valid_class_name(data_type.extends))
  end
  
  service = schema.services[classname]
      
  # Add use statements for function return types
  if service
    service.operations.each do |name, operation|
      type = schema.data_types[operation.response]
      if(type)
        defpkg = get_namespace(schema.data_types[valid_class_name(operation.response)].package || package)
        list.push(defpkg + '\\' + valid_class_name(operation.response)) if (operation.response && operation.response != classname)
      end 
    end
  end

  if (schema_format == "rest")
    list.push( "PayPal\\Common\\PPModel") if !data_type.extends
    list += RestServiceImport if service
  elsif (schema_format == "soap")
    list += WSDLStubImport
    if data_type.fault
      list.push('PayPal\\Core\\PPXmlFaultMessage')
    else
      list.push('PayPal\\Core\\PPXmlMessage')
    end
  end
  list.uniq.sort
end
process_path_with_placeholders(classname, name, path, hostId_check = false, argument_hash = nil, query_params) click to toggle source
# File lib/genio/helper/php.rb, line 200
def process_path_with_placeholders(classname, name, path, hostId_check = false, argument_hash = nil, query_params)
  path = '/' + path if !path.start_with?('/')
  returnPath = ""
  if hostId_check
    returnPath = path.sub(/\{[^}]*\}/, "{$this->getId()}")
  returnPath = '"' + returnPath
  else
    values = argument_hash.keys
    returnPath = path.gsub(/\{[^}]*\}/) do |match|
      "$#{values.shift}"
    end
  returnPath = '"' + returnPath
  end
  if query_params
    returnPath = returnPath +'?" . http_build_query($queryParameters)'
  else
    returnPath = returnPath + '"'
  end
  returnPath
end
service_imports(schema, service, package) click to toggle source

Generate imports for WSDL Service class

# File lib/genio/helper/php.rb, line 164
def service_imports(schema, service, package)
  list = []
    
  # custom package provided during generation
  pkg = options[:namespace]
  pkg += "." if pkg.present?
  
  # import request and response of operations
  service.operations.each do |name, definition|
    if (definition.request_property)
      if (pkg.present?)
        list.push(pkg + valid_class_name(definition.request_property.type))
      else
        list.push(get_slashed_package_name(get_namespace(schema.data_types[valid_class_name(definition.request_property.type)].package || package) + "." + valid_class_name(definition.request_property.type)))
      end
    end
    if (definition.response)
      if (pkg.present?)
        list.push(pkg + valid_class_name(definition.response))
      else
        list.push(get_slashed_package_name(get_namespace(schema.data_types[valid_class_name(definition.response)].package || package) + "." + valid_class_name(definition.response)))
      end
    end
    if (definition.fault)
      if (pkg.present?)
        list.push(pkg + valid_class_name(definition.response))
      else
        list.push(get_slashed_package_name(get_namespace(schema.data_types[valid_class_name(definition.fault)].package || package) + "." + valid_class_name(definition.fault)))
      end
    end
  end
  # mandatory imports
  list += WSDLServiceImport
  list.uniq.sort
end
to_underscore(name) click to toggle source

to underscore

# File lib/genio/helper/php.rb, line 251
def to_underscore(name)
  name.gsub(/-/, "_")
end
valid_class_name(name) click to toggle source
# File lib/genio/helper/php.rb, line 221
def valid_class_name(name)
  name.gsub(/-/, "_").camelcase
end
valid_property_name(name) click to toggle source
# File lib/genio/helper/php.rb, line 225
def valid_property_name(name)
  name.gsub(/-/, "_").camelize(:lower)
end
validate_function_name(name) click to toggle source
# File lib/genio/helper/php.rb, line 233
def validate_function_name(name)
  returnName = name
  if name == 'list'
    returnName = 'all'
  end
  returnName
end
validate_method_name(name) click to toggle source

Prepends do to method names that are keywords

# File lib/genio/helper/php.rb, line 242
def validate_method_name(name)
  KeyWords.include?(name) ? "do#{valid_class_name(name)}" : valid_property_name(name)
end
validated_package(package) click to toggle source
# File lib/genio/helper/php.rb, line 246
def validated_package(package)
  get_slashed_package_name(capitalize_package(remove_tld_in_package(convert_ns_to_package(package))))
end