Class: SYNOWebAPI::Client
- Inherits:
-
Object
- Object
- SYNOWebAPI::Client
- Defined in:
- lib/synowebapi/client.rb
Instance Attribute Summary collapse
-
#api ⇒ Object
readonly
Returns the value of attribute api.
-
#session_id ⇒ Object
readonly
Returns the value of attribute session_id.
-
#session_name ⇒ Object
readonly
Returns the value of attribute session_name.
-
#url ⇒ Object
readonly
Returns the value of attribute url.
Instance Method Summary collapse
- #[](api_name) ⇒ Object
- #connect(params) ⇒ Object
- #disconnect ⇒ Object
-
#initialize(url, **params) ⇒ Client
constructor
A new instance of Client.
- #send(api, params = {}) ⇒ Object
Constructor Details
#initialize(url, **params) ⇒ Client
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/synowebapi/client.rb', line 10 def initialize(url, **params) @url = url @session_id = @session_name = '' @conn = Faraday.new(:url => @url) do |f| f.request(:url_encoded) f.adapter(Faraday.default_adapter) f.use(FaradayMiddleware::ParseJson) end connect(params) if params end |
Instance Attribute Details
#api ⇒ Object (readonly)
Returns the value of attribute api.
8 9 10 |
# File 'lib/synowebapi/client.rb', line 8 def api @api end |
#session_id ⇒ Object (readonly)
Returns the value of attribute session_id.
8 9 10 |
# File 'lib/synowebapi/client.rb', line 8 def session_id @session_id end |
#session_name ⇒ Object (readonly)
Returns the value of attribute session_name.
8 9 10 |
# File 'lib/synowebapi/client.rb', line 8 def session_name @session_name end |
#url ⇒ Object (readonly)
Returns the value of attribute url.
8 9 10 |
# File 'lib/synowebapi/client.rb', line 8 def url @url end |
Instance Method Details
#[](api_name) ⇒ Object
47 48 49 50 |
# File 'lib/synowebapi/client.rb', line 47 def [](api_name) @api ||= query_api @api[api_name] || (raise ArgumentError.new("WebAPI '#{api_name}' isn't found")) end |
#connect(params) ⇒ Object
21 22 23 24 25 26 27 28 29 30 |
# File 'lib/synowebapi/client.rb', line 21 def connect(params) @session_name = params[:session_name] || @session_name resp = self['SYNO.API.Auth'].login( :account => params[:username], :passwd => params[:password], :session => @session_name, :format => 'sid', ) @session_id = resp['sid'] end |
#disconnect ⇒ Object
32 33 34 |
# File 'lib/synowebapi/client.rb', line 32 def disconnect self['SYNO.API.Auth'].logout(:session => @session_id) end |
#send(api, params = {}) ⇒ Object
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/synowebapi/client.rb', line 36 def send(api, params = {}) @conn.get("/webapi/#{api.path}", { :api => api.api_name, :version => api.max_version, :_sid => @session_id, }.merge(params)).body rescue Faraday::ParsingError raise StandardError.new("Failed to parse response") end |