[#50398] C c開発環境のないWindowsでは gem install json は無理でしょうか — dezawa <dezawa@...>

nokogiri も必要なのです、、、、

14 messages 2016/09/25

[ruby-list:50386] Re: [質問]ruby SOAP? DLNA機器制御 Action名内の '_' Underscore が取り除かれる

From: KOHEI OHKUBO <ohkubo@...>
Date: 2016-09-09 09:23:23 UTC
List: ruby-list #50386
savon を以前仕事で使ったことがあるのでざっとコードを読み返してみました。
厳密に追ったわけではないので間違ってるかもしれませんが、たぶん こういう感じのことが起きています。

> 'X-Start'.underscore
 => "x_start"
> 'X-Start'.underscore.camelcase
 => "XStart"

savon が SOAP のクライアントで、 savon は gyoku という xml ビルダに依存しています。

savon はアクション名を underscore します。
https://github.com/savonrb/savon/blob/master/lib/savon/model.rb#L31
(snakecase とあるが、 underscore とほぼおなじ処理)

easy_upnp のこの行
https://github.com/sidoh/easy_upnp/blob/master/lib/easy_upnp/control_point/client_wrapper.rb#L25
で指定している :camelcase が回り回って gyoku に渡り、gyoku がアクション名を camelcase します。

という、高度なコンビネーション技で underscore が消えているので、簡単に解決する方法となると、ちょっと悩みますね。



On Fri, Sep 9, 2016 at 4:24 PM <yamataka@u08.itscom.net> wrote:

> 山口と申します。
>
> Windows 8.1
> c:\yama\bin\UPnP>ruby --version
> ruby 2.3.1p112 (2016-04-26 revision 54768) [x64-mingw32]
> の環境で、
>
> Gem “easy_upnp” を用いて、Ruby scriptにて、DLNA機器の制御を試みています。
>
> c:\yama\bin\UPnP>gem dependency easy_upnp
> Gem easy_upnp-1.1.10
>   nokogiri (~> 1.6)
>   rake (>= 0)
>   savon (~> 2.11)
>
> から、
> “easy_upnp” は、savon, nokogiri  を内部で利用しています。
>
> DLNA機器が提供している X_Startという機能(Action)を、Ruby Scriptから呼び
> 出し(*)た際に、
>
> (*)session_id = @group_service.X_Start(GroupMode:   'GROUP',
>                                        GroupName:   'Ruby',
>                                        SlaveList:       L_BZH_UUID,
>                                        CodecType:    '48',
>                                        CodecBitrate:  '0')
>
> Ruby scripでは、DLNA機器よりErrorが返ってくるので、
> 正常に処理されるDevice Spy(Intel UPnP Tool)と、
>
> Wiresharkを用いてRuby,Device Spy双方の送信パケットを、Capture したところ、
>
> Ruby scriptでは、Request時のXML Body 内において、
>  X_Start と記述されるべきところが、’_’ underscore が取り除かれ、XStartと
> 記述され送信されていました
> そのため、DLNA機器側がそのような機能(Action)がないため、Errorが返ってき
> ます。
>
> ‘_’underscoreがどこで取り除かれているのか、ruby –rdebug にて追ってみまし
> たが、原因を追究できず…
> 送信時のXMLを作成する際にどこかで、’_’  が取り除かれていると推測していま
> す。
> SOAPに当たる部分かと推測します。
>
> もし、詳しい方がいらっしゃれば、なぜ、'_' underscoreが取り除かれてしまう
> のか、その対処方法を
> ご教示いただけないでしょうか?
>
> よろしくお願いします。
>
>

In This Thread