Class: RSynology::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/rsynology/client.rb,
lib/rsynology/client/api.rb,
lib/rsynology/client/auth.rb,
lib/rsynology/client/surveillance_station_event.rb

Defined Under Namespace

Classes: API, Auth, RequestFailed, SurveillanceStationEvent

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url, options = {}) ⇒ Client

Returns a new instance of Client.



11
12
13
14
15
16
17
18
19
20
# File 'lib/rsynology/client.rb', line 11

def initialize(url, options = {})
  faraday_options = {url: url}
  faraday_options[:ssl] = {verify: false} if options[:verify_ssl] == false

  @connection = Faraday.new(faraday_options) do |faraday|
    faraday.adapter  Faraday.default_adapter  # make requests with Net::HTTP
    faraday.use FaradayMiddleware::ParseJson
    faraday.use FaradayMiddleware::Mashify
  end
end

Instance Attribute Details

#connectionObject (readonly)

Returns the value of attribute connection.



6
7
8
# File 'lib/rsynology/client.rb', line 6

def connection
  @connection
end

#session_idObject

Returns the value of attribute session_id.



7
8
9
# File 'lib/rsynology/client.rb', line 7

def session_id
  @session_id
end

Instance Method Details

#endpointsObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/rsynology/client.rb', line 26

def endpoints
  # Returns a hash of endpoints. Will return nil if no support
  @endpoints ||= begin
    resp = request('query.cgi', {
      api: 'SYNO.API.Info',
      method: 'Query',
      version: 1,
      query: 'SYNO.'
    })
    {}.tap do |result|
      resp['data'].each do |endpoint, options|
        next unless supported_apis[endpoint]
        result[endpoint] = supported_apis[endpoint].new(self, options)
      end
    end
  end
end

#login!(account, password, session = nil, format = 'sid') ⇒ Object



22
23
24
# File 'lib/rsynology/client.rb', line 22

def login!(, password, session = nil, format = 'sid')
  endpoints['SYNO.API.Auth'].(, password, session, format)
end

#request(endpoint, params) ⇒ Object



44
45
46
47
48
# File 'lib/rsynology/client.rb', line 44

def request(endpoint, params)
  params = params.merge(_sid: session_id) if session_id
  resp = connection.get("/webapi/#{endpoint}", params)
  resp.body
end