Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
suds — Clone do suds 0.4 + suds-0.4-CVE-2013-2217.patch | Kitploit
Ferramentas/GitHubGitHub/osirium/suds
Análise de VulnerabilidadesScripting e AutomaçãoTestes de Segurança de APIsSegurança WebUtilitários e FrameworksSegurança de API
GitHubosirium/suds

suds

Clone do suds 0.4 + suds-0.4-CVE-2013-2217.patch

Ver Repositório
há 8 anosAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

VISÃO GERAL

O cliente de serviços web "Suds" é um cliente leve baseado em SOAP para python que é licenciado sob LGPL.

Para detalhes, visite:

  • Site do projeto: https://fedorahosted.org/suds/
  • Documentação: https://fedorahosted.org/suds/wiki/Documentation
  • Epydocs: http://jortel.fedorapeople.org/suds/doc/

NOTAS DE LANÇAMENTO:

versão 0.3.6 (04-31-09):

  • Alterar o caminho /tmp/suds codificado para tempfile.gettempdir() e criar suds/ sob demanda.
  • Corrigir tipo de retorno para Any.get_attribute().
  • Atualizar cache HTTP para ignorar URLs file://.
  • Melhor registro de mensagens quando apenas a resposta é injetada.
  • Corrigir tipos XInteger e XFloat para traduzir arrays retornados corretamente.
  • Corrigir esquema xs:import com o mesmo namespace.
  • Atualizar analisador para não carregar referências externas e adicionar Import.bind() para localização XMLSchema.xsd.
  • Adicionar doctor de esquema - usado para corrigir XSDs em tempo de execução. (Veja Option.doctor)
  • Corrigir avisos de depreciação no python 2.6.
  • Adicionar comportamento para @default definido em .
  • Alterar valor de @xsi:type para sempre ser qualificado para doc/literal. (reverte alteração 0.3.5).
  • Adicionar opção Option.xstq para controlar quando @xsi:type é qualificado.
  • Corrigidos tickets: #64, #129, #205, #206, #217, #221, #222, #224, #225, #228, #229, #230

versão 0.3.5 (04-16-09):

  • Adiciona cache HTTP. Padrão é (1) dia. Não se aplica à invocação de método. Veja: documentação para detalhes.
  • Removida verificação de versão do fedora no spec já que não está mais compilando para < fc9.
  • Atualizado makefile para gerar tarball com tar.sh.
  • Movida determinação bare/wrapped para wsdl para document/literal.
  • Refatorado Transport para um pacote (fornece melhor registro de cabeçalhos HTTP).
  • Corrigidos tickets: #207, #209, #210, #212, #214, #215

versão 0.3.4 (02-24-09):

  • Static (automático) Import.bind('http://schemas.xmlsoap.org/soap/encoding/'), usuários não precisam mais fazer isso.
  • Segurança ws básica com {{{UsernameToken}}} e senha em texto claro apenas.
  • Adicionar suporte para cabeçalhos soap ''esparsos'' via passagem de dicionário
  • Adicionar suporte para cabeçalhos soap definidos pelo usuário arbitrários
  • Corrigir operações de serviço com múltiplas entradas de cabeçalho soap.
  • Melhorias no algoritmo de carregamento e desreferenciamento de esquema.
  • Multirefs soap aninhados corrigidos.
  • Suporte melhor (verdadeiro) para elementFormDefault="unqualified" fornece mais namespaing preciso.
  • Tipos de parte WSDL não usam mais targetNamespace do WSDL como padrão.
  • Corrigidos tickets: #4, #6, #21, #32, #62, #66, #71, #72, #114, #155, #201.

versão 0.3.3 (11-31-08):

  • Não instala mais o pacote (tests).
  • Implementa proposta API-3 ( https://fedorahosted.org/suds/wiki/Api3Proposal )
    • Transporte plugável
    • Argumentos de método por palavra-chave
    • Autenticação http básica no transporte padrão
  • Adicionar normalização de prefixo de namespace na mensagem soap.
  • Melhor poda de nós vazios na mensagem soap.
  • Corrigidos tickets: #51 - #60

versão 0.3.2 (11-7-08):

  • Suporte SOAP {{{MultiRef}}} ''(primeira passagem adicionada r300)''
  • Adicionar suporte para novas tags de esquema:
    • xs:include/
    • xs:simpleContent/
    • xs:group/
    • xs:attributeGroup/
  • Adicionado suporte para novas conversões de tipo xs <--> python:
    • xs:int
    • xs:long
    • xs:float
    • xs:double
  • Revisar marshaller e binding para aprimorar ainda mais o namespacing dos nós produzidos.
  • Recursão infinita corrigida no pacote ''xsd'' dereference() durante carregamento de esquema.
  • Adicionar suporte para wsdl:import/ de arquivos de esquema na raiz do wsdl.
  • Corrigir dupla codificação de (&)
  • Adicionar API do Cliente:
    • setheaders() - igual à palavra-chave, mas funciona para todas as invocações.
    • addprefix() - mapeamento de prefixos de namespace.
    • setlocation() - Substituir a localização no wsdl; igual à palavra-chave, exceto para todas as chamadas.
    • setproxy() - igual à palavra-chave proxy, mas para todas as invocações.
  • Adicionar prefixo de namespace adequado para cabeçalhos soap.
  • Corrigidos tickets: #5, #12, #34, #37, #40, #44, #45, #46, #48, #49, #50, #51

versão 0.3.1 (10-1-08):

  • Rápido acompanhamento do lançamento 0.3 que tornou o trabalho com definições de serviço multi-porta mais difícil do que o necessário. Após consideração (e uma boa noite de sono), pareceu óbvio que algumas mudanças tornariam isso muito mais fácil: 1) filtrar as bindings não-soap - elas estavam causando o verdadeiro problema; 2) como a maioria dos servidores fica satisfeita com qualquer uma das bindings soap (soap 1.1 e 1.2), referências ambíguas a métodos ao invocá-los sem a qualificação de porta funcionarão bem em quase todos os casos. Então, por que não permitir que o suds selecione a porta? Não vamos fazer o usuário fazer isso quando não for necessário. Na maioria dos casos, usuários do 0.2.9 e anteriores não precisarão atualizar seu código ao migrar para 0.3.1 como poderiam ter feito no 0.3.

versão 0.3 (9-30-08):

  • Estende o suporte para serviços multi-porta introduzido no 0.2.9. Esta adição fornece a capacidade para múltiplos serviços definirem o mesmo método e o suds lidará com isso adequadamente. Veja a seção 'SERVIÇOS COM MÚLTIPLAS PORTAS:'

  • Adicionar suporte para estilo de binding soap document/literal multi-documento. Veja a seção 'MULTI-DOCUMENTO Docuemnt/Literal:'

  • Adicionar suporte para tags (xs:group, xs:attributeGroup).

  • Adicionar Client.last_sent() e Client.last_received().

versão 0.2.9 (9-09-08):

  • Suporte para múltiplas portas dentro de um serviço.
  • Referências de atributo <xs:attribute ref=""/>
  • Tornar o codificador de caracteres especiais XML no pacote sax - plugável

versão 0.2.8 (8-28-08):

  • Atualizar binding document/literal para sempre enviar a raiz do documento referenciada pelo . Após mais uma revisão do espaço e entrada do usuário, parece que o elemento referenciado é SEMPRE a raiz do documento.

  • Adicionar suporte para associar 'binding' schemaLocations a namespace-uri.
    Isto é para imports que não especificam um schemaLocation e ainda esperam que o esquema seja baixado. Ex: Axis referencia 'http://schemas.xmlsoap.org/soap/encoding/' sem um schemaLocation. Então, fazendo isto:

    from suds.xsd.sxbasic import Import. Import.bind('http://schemas.xmlsoap.org/soap/encoding/')

    O esquema é associado a um schemaLocation e é baixado.

  • Unmarshaller básico não precisa de um /schema/. Deveria ter sido removido durante a refatoração, mas foi esquecido.

  • Atualizar cliente para passar kwargs para send() e adicionar kwarg /location/ para substituir a localização do serviço no wsdl.

  • Atualizar marshaller para NÃO emitir XML para atributos de objeto que representam elementos e/ou atributos que são ambos opcionais e value=None. * Atualizar factory (builder) para incluir todos os atributos. * Adicionar método optional() a SchemaObject.

  • Atualizar wsdl para substituir namespace em operação se especificado.

  • Corrigir problema de carregamento de esquema - construir todos os esquemas antes de processar imports.

  • Atualizar empacotamento em preparação para submissão ao fedora

versão 0.2.7 (8-11-08):

  • Adicionar detecção/suporte para document/literal - wrapped e unwrapped.
  • Atualizar document/literal {wrapped} para definir a raiz do documento (sob ) como o elemento wrapper (com namespace adequado).
  • Adicionar suporte para , e terem maxOccurs e fazer com que o unmarshaller defina valores para elementos contidos em uma coleção ilimitada como uma lista.
  • Atualizar client.factory (builder) para omitir filhos de já que o 'usuário' realmente precisa decidir quais filhos incluir.
  • Atualizar algoritmo de flattening para evitar re-flattening de tipos de esquemas importados.
  • Ajustes nos algoritmos de flattening/merging.

versão 0.2.6 (8-5-08):

  • Corrigir ENUMs quebrados durante a reforma do pacote xsd.
  • Corrigir type conforme definido no ticket #24.
  • Corrigir nomes de parâmetros duplicados em assinaturas de método conforme relatado no ticket #30.
  • Suds licenciado como LGPL.
  • Remover configuração de logging em suds.init() conforme sugerido pelo patch no ticket #31. Usuários agora precisarão configurar o logger.
  • Adicionar suporte para Client.Factory.create() sintaxe alt: para qualificar totalmente o tipo a ser construído como: {namespace}name. Ex: client.factory.create('{http://blabla.com/ns}Person')

versão 0.2.5 (8-01-08):

  • Reforma completa do pacote (XSD). Esta nova abordagem (merging) é mais simples e deve ser mais confiável e sustentável. Além disso, deve fornecer melhor desempenho já que o esquema mesclado realiza buscas via dicionário.

    Esta reforma deve corrigir os problemas atuais de TypeNotFound e xs:extension/, espero :-).

  • Corrigido bug de impressão de dateTime.

  • Adicionada prevenção de recursão infinita no builder.Builder para tipos xsd que contêm a si mesmos.

versão 0.2.4 (7-28-08):

  • Adicionado suporte para imports WSDL: wsdl:import/
  • Adicionado suporte para conversões de tipo xsd<->python (obrigado: Nathan Van Gheem) para:
    • xs:date
    • xs:time
    • xs:dateTime
  • Corrigido:
    • Bug: Schema com schemaLocation especificado.
    • Bug: Namespaces especificados na descrição do serviço não válidos até que client/proxy seja impresso.

versão 0.2.3 (7-23-08):

  • Otimizações.

versão 0.2.2 (7-8-08):

  • Atualizar exceções para serem mais /padrão/ do python usando Exception.init() para definir Exception.message conforme sugerido pelo Ticket #14; atualizar bindings para levantar WebFault passando (p)

  • Adicionar capacidade nas bindings para lidar com múltiplos nós raiz nos valores retornados; retornados como um objeto composto, ao contrário de quando listas são retornadas

  • Corrigir soapAction para ser delimitado por aspas

  • Adicionar suporte para xs:all/

  • Corrigir método unbounded() em SchemaObject

  • Refatorar esquema para novo pacote (xsd). Arquivos estavam ficando grandes demais. Adicionado execute() a Query e retrofitado suds para executar() query em vez de usar Schema.find() diretamente.
    Além disso, mover métodos start() confusos do esquema, bem como a incrementação de query.

  • Adicionar palavra-chave inject usada para injetar mensagens soap de saída e/ou mensagens de resposta de entrada. Refatorar SoapClient e

    1. renomear send() para invoke()
    2. dividir envio de mensagem de invoke() e colocá-lo em send(); Adicionar TestClient que permite que kwargs de invocação tenham inject={'msg=, and reply='} para injeção de mensagem e resposta
  • Adicionar classe Namespace ao sax para melhor gerenciamento do comportamento de namespace; retrofitado suds para importar e usar Namespace

  • Alterar o namespace padrão usado para resolver tipos referenciados (com atributos @base="",@type="") para que quando nenhum prefixo for especificado: use o namespace do nó XML em vez do targetNamespace.

  • Aplicar correção conforme definido por [email protected] no ticket #13

  • Atualizar definição de serviço para imprimir e exibir métodos de serviço como ' my_method(xs:int arg0, Person arg1) ' em vez de ' my_method(arg0{xs:int}, arg1{Person}) ' que é mais parecido com assinaturas de método tradicionais

  • Adicionar conversão de tipo xsd/python ao unmarshaller (XBoolean apenas); refatorar unmarshaller para usar Content class que torna APIs mais limpas, adiciona simetria entre marshaller(s) e unmarshaller(s), fornece bom mecanismo para conversões de tipo baseadas em propriedades de esquema

  • Refatorar marshaller com Appenders; adicionar flag nobuiltin para resolve() para suportar correção de returned_type() e returnes_collection() em bindings.

  • Adicionar suporte para códigos http (202,204)

  • Adicionar XBoolean e mapeamentos; adicionar findattr() a TreeResolver em preparação para conversões de tipo

versão 0.2.1 (5-8-08):

  • Atualizar a sequência de carregamento de SchemaProperty em schema.py para que o esquema seja carregado em 3 etapas: 1) construir a árvore bruta. 2) resolver dependências como @ref e @base.
    3) promover netos conforme necessário para achatar (desnormalizar) a árvore.

    O wsdl também foi alterado para carregar o esquema apenas uma vez e armazená-lo. A coleção de esquemas foi alterada para carregar esquemas em 2 etapas: 1) criar todos os objetos de esquema brutos. 2) carregar esquemas.

    Isso garante que esquemas locais 'd possam ser encontrados quando referenciados fora de ordem.
    A interface Element do sax.py mudou: attribute() substituído por get() e set().
    Além disso, getitem e setitem podem ser usados para acessar valores de atributo.
    Epydocs atualizados para sax.py. E ... finalmente agora suportado adequadamente.

  • corrigir logging: NÃO configurando para info em suds.init.logger(); definir handler no logger raiz apenas; movido logger (log) de classes para módulos e usado name para nome do logger. NOTA: Isso significa que para habilitar logging de mensagens soap: > > logger('suds.serviceproxy').setLevel(logging.DEBUG) > -- em vez de -- > > logger('serviceproxy').setLevel(logging.DEBUG) >

  • Adicionar suporte para nós do esquema (xsd) que afeta principalmente objetos retornados pelo Builder

  • Atualizar serviceproxy.py:set_proxies() para logar DEBUG em vez de INFO.

  • Melhorar str do esquema para mostrar tanto o xml bruto quanto o modelo (principalmente para depuração).

versão-0.2 (04-28-08):

  • Contém o primeiro corte do estilo soap rpc/encoded.

  • Substituída a classe Property por suds.sudsobject.Object. A classe Property foi desenvolvida há muito tempo com um propósito ligeiramente diferente. O suds Object é uma abordagem mais simples (mais direta) que requer menos código e funciona melhor no depurador.

  • A Binding (e a codificação) é selecionada por método, o que é mais consistente com o wsdl. Em <= 0.1.7, a binding era selecionada quando o ServiceProxy era construído e usada para todos os métodos do serviço. A binding era armazenada como self.binding. Como o WSDL fornece um estilo de binding e codificação separados para cada operação, o Suds precisava ser alterado para funcionar da mesma forma.* Os sinalizadores (nil_supported) e (faults) passados para o proxy de serviço usando **kwargs. Além desses sinalizadores, um sinalizador (http_proxy) foi adicionado e passado para o objeto urllib2.Request. Os seguintes argumentos são suportados:

    • faults = Levanta exceções de falhas levantadas pelo servidor (padrão: True), caso contrário, retorna tupla da invocação do método de serviço como (código http, objeto).
    • nil_supported = Os bindings definirão xsi:nil="true" nos nós que têm valor=None quando este sinalizador for True (padrão: True). Caso contrário, um nó vazio é enviado.
    • proxy = Um proxy http a ser especificado nas requisições (padrão: {}). O proxy é definido como {protocolo:proxy,}
  • Proxy HTTP suportado (veja acima).

  • ServiceProxy refatorado para delegar a um SoapClient. Como o proxy de serviço expõe serviços web via getattr(), qualquer atributo (incluindo métodos) fornecido pela classe ServiceProxy oculta operações WS definidas pelo wsdl. Então, ao mover tudo para o SoapClient, as operações wsdl não são mais ocultadas sem ter que usar nomes hoky para atributos e métodos no proxy de serviço. Em vez disso, o proxy de serviço possui atributos client e factory (que realmente devem ter baixo risco de colisão de nomes). Por enquanto, os métodos get_instance() e get_enum() não foram movidos para preservar a compatibilidade reversa. Embora, a mudança de API preferida seria substituir:

    service = ServiceProxy('myurl') person = service.get_instance('person')

    ... por algo como ...

    service = ServiceProxy('myurl') person = service.factory.get_instance('person')

    Após algumas versões dando tempo para os usuários mudarem para a nova API, os métodos get_instance() e get_enum() podem ser removidos com um aviso em letras grandes.

  • Corrigido problema onde um wsdl não define uma seção e o Suds não consegue resolver os prefixos para o namespace http://www.w3.org/2001/XMLSchema para detectar tipos internos como (xs:string).

versão-0.1.7 (04-08-08):

  • Adicionado Binding.nil_supported para controlar como valores de propriedade (out) = None e tags vazias (in) são processados.

    • service.binding.nil_supported = True -- significa que valores de propriedade = None são serializados (out) como e é desserializado como '' e é desserializado como None.
    • service.binding.nil_supported = False -- significa que valores de propriedade = None são serializados (out) como e e é desserializado como None. O xsi:nil é realmente ignorado.
    • O PADRÃO É (TRUE)
  • Manipulador Sax atualizado para lidar com múltiplos callbacks character() quando o parser sax "fragmenta" o texto. Quando node.text é None, node.text é definido como os caracteres. Caso contrário, os caracteres são anexados. Agradecimentos - [email protected]

  • Substituído atributo especial (text) por text para permitir elementos naturais nomeados "text"

  • Adicionado suporte a unicode:

    • Adicionado unicode a todas as classes com str
    • Substituídas todas as chamadas str() por unicode().
    • str() retorna resultado codificado em UTF-8 de unicode.
  • Saída XML codificada como UTF-8 que corresponde ao cabeçalho HTTP e suporta unicode.

  • SchemaCollection alterado para fornecer os métodos builtin() e custom(). Para suportar isso, findPrefixes() foi adicionado ao Element em sax.py. Esta é uma abordagem melhor de qualquer forma, já que o wsdl e os esquemas podem ter muitos prefixos para http://www.w3.org/2001/XMLSchema. Testado com bindings doc/lit e rpc/lit

  • Pacotes de bindings refatorados de document & rpc para literal & encoded

  • Contém a conclusão do suporte completo a namespaces da seguinte forma:

    • Prefixos de namespace não são mais removidos de valores de atributo que referenciam tipos definidos no wsdl.
    • Schemas importados usando devem lidar corretamente com mapeamento e re-mapeamento de namespace e prefixo conforme necessário.
    • Todos os tipos são resolvidos usando buscas totalmente qualificadas (com namespaces).
    • Schema.get_type() suporta caminhos com e sem prefixos ns. Quando nenhum prefixo é especificado, o tipo é correspondido usando o namespace alvo do schema.
  • Property mantém nomes de atributos (chaves) na ordem adicionada. Isso também significa que get_item() e get_names() retornam valores ordenados. ( Embora, eu suspeite que a ordenação realmente precisa ser feita no marshaller usando a ordem especificada no wsdl/schema )

Grande refatoração do schema.py. O principal objetivo é a preparação para buscas de tipo que são totalmente qualificadas por namespace. Uma vez concluído, os prefixos nos valores de atributo não serão mais removidos (eliminados). Resumo das mudanças: 1) Classes de sobreposição SchemaProperty criadas em init em vez de sob demanda. 2) importações de schema realizadas pela nova classe Import em vez de por Schema. 3) Schema carrega propriedades de nível superior usando uma fábrica. 4) Todas as listas /children/ de SchemaProperty são ordenadas por cmp nas classes derivadas de SchemaProperty. Isso garante que tipos com o mesmo nome sejam resolvidos na seguinte ordem (Import, Complex, Simple, Element). 5) Todas as listas /children/ de SchemaProperty são construídas em init em vez de sob demanda. 6) O SchemaGroup criado e a classe WSDL atualizada. Isso funciona melhor do que ter o wsdl agregando os nós que corta a ligação com o elemento pai do wsdl que possui mapeamento de prefixo de namespace. 7) O elemento é tratado adequadamente, tanto o remapeamento de namespace quanto o re-mapeamento de prefixo do targetNamespace do schema importado e o mapeamento de prefixo associado - são realizados. Ex: SCHEMA-A tem prefixo (tns) mapeado como xmlns:tns=http://nsA e tem targetNamespace=http://nsA. SCHEMA-B está importando schema A e tem prefixo (abc) mapeado como xmlns:abc=http://nsABC. SCHEMA-B importa A como <import namespace=http://nsB xxx schemaLocation=http://nsA/schema-a.xsd>. Então, como SCHEMA-B fará referência a elementos de SCHEMA-A com prefixo (abc) como abc:something, o targetNamespace de SCHEMA-A deve ser atualizado para http://nsABC e todos os elementos com type=tns:something devem ser atualizados para type=abc:something para que possam ser resolvidos.

  • Corrige problema de desserialização onde nós são adicionados à propriedade como (text, value). Isso foi introduzido quando os bindings foram refatorados.

  • Corrigidos vários problemas de impressão de Property.

Notas:

root@kitploit:~
Agradecimentos a Jesper Noehr da Coniuro pela maior parte do binding rpc/literal e
por muita colaboração no #suds.

versão-0.1.6 (03-06-08):

  • Fornece tratamento adequado de wsdls que contêm seções de schema contendo importações de schema xsd: <import namespace="" schemaLocation=""?>. Os schemas referenciados são importados quando um schemaLocation é especificado.
  • Levanta exceções para códigos de status http não tratados anteriormente.

versão-0.1.5 (21-02-08):

  • Fornece melhor logging nos módulos obtendo logger por nomes hierárquicos.
  • Refatorado conforme necessário para realmente suportar outros bindings.
  • Adiciona módulo sax que substitui ElementTree. Isso é mais rápido, mais simples e lida com namespaces (prefixos) adequadamente.

versão-0.1.4 (21-12-07):

  • Permite que parâmetros de método de serviço sejam None.
  • Adiciona tratamento adequado de parâmetros de método que são listas de objetos property.

versão-0.1.3 (19-12-07):

  • Corrige problema onde nós marcados como coleção (maxOccurs > 1) não criavam objetos property com value=[] quando mapeados com < 2 valores pelo DocumentReader. Causado pela falta da conversão de bindings.Document.ReplyHint.stripns() (que usa DocumentReader.stripns()) para DocumentReader.stripn() que agora retorna uma tupla (ns,tag) a partir de 0.1.2.

versão-0.1.2 (18-12-07):

Esta versão contém uma atualização para property adiciona: * suporte a metadata * sobrescritas: getitem, setitem, contans * altera property(reader|writer) para usar property.metadata para lidar com namespaces para documentos XML. * corrige requires no setup.py.

versão-0.1.1 (17-12-07):

Esta versão marca o primeiro lançamento no fedora hosted.

Baixar ferramenta
  • Atualizado carregamento de esquema e propriedade de esquema (recursão profunda interrompida); Alterado esquemas importados para que não copiem mais esquemas importados, em vez disso, o proxy de importação encontra solicitações; Adicionado classe ServiceDefinition que fornece melhor inspeção de serviço; também fornece mapeamento de namespace e mostra tipos; api de propriedade de esquema simplificada; suporte para xs:any e xs:anyType adicionado; Alguns problemas de busca de esquema corrigidos; Classes Binding refatoradas ligeiramente; Muito logging de depuração adicionado (talvez seja necessário comentar alguns para desempenho - alguns dos args são caros).

  • Adicionar sudsobject.Property; uma property é um Object especial que contém um atributo (value) e é retornado pelo Builder (factory) para tipos de esquema sem filhos, como: e ; Builder, Marshallers e Resolvers atualizados para lidar com Properties; Resolver, Schema também atualizados para lidar com buscas de atributos (isso estava faltando)

  • Adicionar bases para cabeçalhos soap definidos pelo usuário.

  • Corrigir elementFormDefault conforme ticket #7

  • Remover kwargs não utilizados de bindings; cache bindings no wsdl; retrofitado ServiceProxy legado para delegar para {nova} API Client; remover palavra-chave nil_supported em favor do tratamento natural pelo atributo 'nillable' em dentro de esquemas

  • Adicionar suporte para flags de atributo (nillable e form)

  • Adicionar a classe Proxy (API de segunda geração)

  • Adicionar funções de acesso/conversão para que o usuário não precise acessar atributos x. Além disso, adicionar todict() e get_items() para conversão fácil para dicionário e iteração

  • Pesquisar elementos de nível superior por @ref antes de procurar mais profundamente

  • Adicionar derived() a SchemaObject. Isto é necessário para garantir que todos os tipos derivados (classes wsdl) sejam qualificados por xsi:type sem especificar xsi:type para todos os tipos personalizados como feito em versões anteriores do suds. Atualizar o marshaller literal para adicionar xsi:type apenas quando o tipo precisar ser especificado.

  • Alterar promoção ns no sax para evitar que ns seja promovido ao pai quando o pai tem o prefixo.

  • Alterar returned_type() da binding para retornar o Element (não resolvido)

  • Para suportar os novos recursos e corrigir bugs relatados, estou no processo de refatorar e, espero, evoluir os componentes no Suds que fornecem as traduções de entrada/saída:

    • Builder ( traduz: objetos XSD => objetos python )
    • Marshaller ( traduz: objetos python => XML/SOAP )
    • Unmarshaller ( traduz: soap/xml => objetos python )

    Esta evolução fornecerá melhor simetria entre esses componentes da seguinte forma:

    O Builder e o Unmarshaller produzirão python (subclasse de sudsobject.Object) objetos com:

    • metadata.type = tipo XSD (SchemaObject)
    • nome da subclasse ( class.name ) = nome do tipo de esquema.

    e

    O(s) Marshaller(s), ao consumir objetos python produzidos pelo Builder ou Unmarshaller, aproveitarão essas informações padrão para produzir a saída apropriada ( XML/SOAP ).

    O código 0.2.1 se comporta na maior parte assim, mas ... não exatamente. Além disso, as implementações têm alguma redundância.

    Ao fazer isso, fez sentido fatorar a funcionalidade comum de "busca" de tipo de esquema usada pelas classes Builder, Marshallers e Unmarshaller em uma hierarquia de classes "Resolver". Isso reduz a complexidade e a redundância das classes Builder, Marshallers e Unmarshaller e permite melhor modularidade. Uma vez que essa refatoração foi concluída, a diferença entre os Marshallers literal/encoded tornou-se muito pequena. Dado que a quantidade de código nos pacotes bindings.literal e bindings.encoded era pequena (e ficando menor) e no interesse de manter a base de código do Suds compacta, movi todas as classes de marshalling para o módulo bindings.marshaller. Todos os sub-pacotes bindings.XX serão removidos.

    O efeito líquido:

    Todos os principais componentes do Suds:

    • client (antigo: service proxy)
    • wsdl
      • schema (pacote xsd)
      • resolvers
    • output (marshalling)
    • builder
    • input (unmarshalling)

    Agora têm melhor:

    • modularidade
    • simetria em relação aos metadados do Object.
    • reutilização de código (< 1% de duplicação de código --- espero)
    • acoplamento mais frouxo

    ... e fornecem melhor para os seguintes recursos/correções de bugs:

    • (correção) Nível adequado de qualificação de elemento XML com base no atributo . Isso garantirá que quando elementFormDefault="qualified", o Suds incluirá o namespace adequado em elementos raiz para bindings literal e encoded. Para que isso funcione corretamente, o marshaller literal (como o marshaller encoded) precisava estar ciente do tipo de esquema. Se eu tivesse adicionado a mesma busca de tipo de esquema que o marshaller encoded em vez da refatoração descrita acima, as duas classes teriam sido quase uma duplicata completa uma da outra :-(
  • O builder e o unmarshaller usavam schema.Schema.find() para resolver tipos de esquema. Eles construíam um caminho como "person.name.first" para resolver tipos no contexto adequado. Como Schema.find() não tinha estado, ele resolvia os elementos de caminho intermediários em cada chamada. As novas classes resolver têm estado e resolvem tipos filhos de forma muito mais eficiente.

  • Prevenir colisões de nomes em sudsobject.Object como o método items(). Mudei todos os métodos (incluindo métodos de classe) para uma classe Factory que está incluída na classe Object como um atributo de classe ( factory ). Agora que todos os atributos têm nomenclatura built-in do python, não devemos ter mais colisões de nomes. Isso, claro, pressupõe que nenhum nome de entidade wsdl/schema terá um nome com a convenção de nomenclatura built-in do python, mas tenho que traçar um limite em algum lugar :-)