Class: Egnyte::Group

Inherits:
Object
  • Object
show all
Defined in:
lib/egnyte/group.rb

Constant Summary collapse

@@required_attributes =
['displayName']

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(session, params) ⇒ Group

Returns a new instance of Group.



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/egnyte/group.rb', line 41

def initialize(session, params)
  @session = session
  if params.is_a? String
    @displayName = params
  elsif params.is_a? Hash
    params.each do |k,v|
      if k == "name"
        @displayName = v
      else
        instance_variable_set("@#{k}", v)
      end
    end
  end
  @members = [] if @members.nil?
end

Instance Attribute Details

#displayNameObject

Returns the value of attribute displayName.



38
39
40
# File 'lib/egnyte/group.rb', line 38

def displayName
  @displayName
end

#idObject (readonly)

Returns the value of attribute id.



39
40
41
# File 'lib/egnyte/group.rb', line 39

def id
  @id
end

#membersObject

Returns the value of attribute members.



38
39
40
# File 'lib/egnyte/group.rb', line 38

def members
  @members
end

Class Method Details

.all(session) ⇒ Object



57
58
59
# File 'lib/egnyte/group.rb', line 57

def self.all(session)
  self.where(session)
end

.create(session, params) ⇒ Object



61
62
63
64
# File 'lib/egnyte/group.rb', line 61

def self.create(session, params)
  group = self.new(session, params)
  group.save
end

.delete(session, id) ⇒ Object



137
138
139
# File 'lib/egnyte/group.rb', line 137

def self.delete(session, id)
  session.delete("#{self.group_path(session)}/#{id}", return_parsed_response=true)
end

.find(session, id) ⇒ Object



74
75
76
77
# File 'lib/egnyte/group.rb', line 74

def self.find(session, id)
  response = session.get("#{self.group_path(session)}/#{id}", return_parsed_response=true)
  self.new(session, response)
end

.find_by_name(session, displayName) ⇒ Object



79
80
81
# File 'lib/egnyte/group.rb', line 79

def self.find_by_name(session, displayName)
  self.where(session, {:displayName => displayName}).first
end

.group_path(session) ⇒ Object



180
181
182
# File 'lib/egnyte/group.rb', line 180

def self.group_path(session)
  "https://#{session.domain}.#{EGNYTE_DOMAIN}/#{session.api}/v2/groups"
end

.search(session, search_string) ⇒ Object



104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/egnyte/group.rb', line 104

def self.search(session, search_string)
  group_list = self.all(session)
  result_list = []
  group_list.each do |user|
    catch(:found) do 
      user.instance_variables.each do |ivar|
        value = user.instance_variable_get(ivar).to_s
        if value.match(search_string)
          result_list << user
          throw :found
        end
      end
    end
  end
  result_list
end

.where(session, params = nil) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/egnyte/group.rb', line 83

def self.where(session, params=nil)
  startIndex = 1
  group_count = nil
  itemsPerPage = 100
  group_list = []
  base_url = self.group_path(session)
  base_url += Egnyte::Helper.params_to_filter_string(params) if params
  while startIndex == 1 || group_count > startIndex
    url = base_url
    url += params.nil? ? '?' : '&'
    url += "startIndex=#{startIndex}&count=#{itemsPerPage}"
    parsed_body = session.get(url)
    parsed_body["resources"].each do |group_hash|
      group_list << self.new(session, group_hash)
    end
    group_count = parsed_body["totalResults"]
    startIndex += itemsPerPage
  end
  group_list
end

Instance Method Details

#deleteObject



133
134
135
# File 'lib/egnyte/group.rb', line 133

def delete
  Egnyte::Group.delete(@session, @id)
end

#group_pathObject



176
177
178
# File 'lib/egnyte/group.rb', line 176

def group_path
  Egnyte::Group.group_path(@session)
end

#missing_attributesObject



145
146
147
148
149
150
# File 'lib/egnyte/group.rb', line 145

def missing_attributes
  missing = @@required_attributes.collect do |param|
    param unless instance_variable_get("@#{param}")
  end
  missing.compact
end

#nameObject



66
67
68
# File 'lib/egnyte/group.rb', line 66

def name
  @displayName
end

#name=(name) ⇒ Object



70
71
72
# File 'lib/egnyte/group.rb', line 70

def name=(name)
  @displayName = name
end

#saveObject



121
122
123
124
125
126
127
128
129
130
131
# File 'lib/egnyte/group.rb', line 121

def save
  raise Egnyte::MissingAttribute.new(missing_attributes) unless valid?
  response = ''
  if @id.nil? or @id.to_s.empty?
    response = @session.post(group_path, to_json_for_api_call)
    @id = response['id']
  else
    response = @session.put("#{group_path}/#{@id}", to_json_for_api_call)
  end
  Egnyte::Group.new(@session, response)
end

#to_hashObject



152
153
154
155
156
# File 'lib/egnyte/group.rb', line 152

def to_hash
  hash = to_hash_for_api_call
  hash[:id] = @id
  hash
end

#to_hash_for_api_callObject



162
163
164
165
166
167
168
169
170
# File 'lib/egnyte/group.rb', line 162

def to_hash_for_api_call
  hash = {}
  hash[:displayName] = @displayName
  hash[:members] = []
  @members.each do |group_member|
    hash[:members] << {"value" => group_member}
  end
  hash
end

#to_jsonObject



158
159
160
# File 'lib/egnyte/group.rb', line 158

def to_json
  to_hash.to_json
end

#to_json_for_api_callObject



172
173
174
# File 'lib/egnyte/group.rb', line 172

def to_json_for_api_call
  to_hash_for_api_call.to_json
end

#valid?Boolean

Returns:

  • (Boolean)


141
142
143
# File 'lib/egnyte/group.rb', line 141

def valid?
  return missing_attributes.size < 1
end