Naujienos iš bugland’o: naudojant soap4r gem’ą ir vero prenumeratos servisą - ėsit šūdą. Mąsčiau kodėl čia taip viskas neveikia, kol pasirodo, jog
@rpc = SOAP::WSDLDriverFactory.new(VERO_SUBSCRIPTION_WSDL_URL) \
.create_rpc_driver
status, member_id, last_pay, error = @rpc.RegisterWapUser(
VERO_SUBSCRIPTION_SERVICE_ID,
@visitor.operator,
@visitor.operator_id
)
visiškai nenori sugeneruoti reikiamo pranešimo ir kaip žinutės parametrus tiesiog nusiunčia nil’us. Ko pasekoje, aišku, niekas neveikia.
Tad teko pasinaudoti ActiveWebService.
# Fuck SOAP4R, it's buggy
@rpc = ActionWebService::Client::Soap.new(VeroSubscriptionClientApi,
VERO_SUBSCRIPTION_URL)
status, member_id, last_pay, error = @rpc.RegisterWapUser(
VERO_SUBSCRIPTION_SERVICE_ID.to_i,
@visitor.operator.to_s,
@visitor.operator_id.to_s
)
kur VeroSubscriptionClientApi atkeliauja iš app/apis katalogo
class VeroSubscriptionClientApi < ActionWebService::API::Base
api_method :RegisterWapUser,
:expects => [{:ServiceId => :int}, {:Operator => :string},
{:Phone => :string}],
:returns => [{:Status => :int}, {:MemberId => :int},
{:LastPay => :string}, {:Error => :string}]
api_method :UnregisterWapUser,
:expects => [{:ServiceId => :int}, {:Operator => :string},
{:Phone => :string}],
:returns => [{:Status => :int}, {:Error => :string}]
end
Tai va - žiūrėkit, neužsiraukit. Be to, soap4r turi tokį naudingą daiktą kaip request’ų debug’inimą (jog nereikėtų sniffinti)
@rpc.wiredump_dev = STDERR