Groups   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 9
c 2
b 0
f 0
dl 0
loc 38
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A observe() 0 5 1
A initialize() 0 3 1
A get() 0 6 2
B all_groups() 0 16 5
1
module GlipSdk
2
  module REST
3
    class Groups
4
      attr_accessor :cache
5
      attr_accessor :subscription
6
7
      def initialize(rc_sdk)
8
        @api = rc_sdk
9
      end
10
11
      def get(opts = {})
12
        if opts.key? :groupId
13
          return @api.http.get "glip/groups/#{opts[:groupId]}"
14
        end
15
        @api.http.get 'glip/groups', opts
16
      end
17
18
      def observe(observer)
19
        @subscription = @api.create_subscription
20
        @subscription.subscribe ['/restapi/v1.0/account/~/extension/~/glip/groups']
21
        @subscription.add_observer observer
22
      end
23
24
      def all_groups(params = {})
25
        groups = []
26
        get_next = true
27
        while get_next
28
          res = get params
29
          groups.concat(res.body['records']) if res.body['records'].length > 0
30
31
          if res.body.key?('navigation') && res.body['navigation'].key?('prevPageToken')
32
            params['pageToken'] = res.body['navigation']['prevPageToken']
33
            @api.config.logger.info "PrevPageToken [#{res.body['navigation']['prevPageToken']}]"
34
          else
35
            get_next = false
36
          end
37
        end
38
        groups
39
      end
40
    end
41
  end
42
end
43