Class: Cliskip2::Client

Inherits:
Object
  • Object
show all
Includes:
Connection, Request
Defined in:
lib/cliskip2/client.rb

Instance Method Summary collapse

Methods included from Request

#delete, #get, #post, #put

Constructor Details

#initialize(attrs = {}) ⇒ Cliskip2::Client

Initializes a new API object

Parameters:

  • attrs (Hash) (defaults to: {})


20
21
22
23
24
25
# File 'lib/cliskip2/client.rb', line 20

def initialize(attrs={})
  attrs = Cliskip2.options.merge(attrs)
  Config::VALID_OPTIONS_KEYS.each do |key|
    instance_variable_set("@#{key}".to_sym, attrs[key])
  end
end

Instance Method Details

#activate_user(user_id, params) ⇒ Cliskip2::User

Activate user by params

Returns:



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

def activate_user user_id, params
  user_attr = get("/admin/tenants/#{current_user.tenant_id}/users/#{user_id}/issue_activation_code.json", params)
  Cliskip2::User.new(user_attr['user'])
end

#create_user(params) ⇒ Cliskip2::User

Create new user by params

Returns:



38
39
40
41
# File 'lib/cliskip2/client.rb', line 38

def create_user params
  user_attr = post("/admin/tenants/#{current_user.tenant_id}/users.json", params)
  Cliskip2::User.new(user_attr['user'])
end

#current_userObject



27
28
29
30
# File 'lib/cliskip2/client.rb', line 27

def current_user
  user_attr = get("/api/get_current_user")
  @current_user ||= Cliskip2::User.new(user_attr['user'])
end

#delete_user(params) ⇒ Object



82
83
84
85
86
87
88
89
# File 'lib/cliskip2/client.rb', line 82

def delete_user params
  if user = get_user(:email => params[:user][:email])
    user_attr = delete("/admin/tenants/#{current_user.tenant_id}/users/#{user.id}.json")
    Cliskip2::User.new(user_attr['user'])
  else
    nil
  end
end

#get_community_member(community, params) ⇒ Cliskip2::CommunityParticipation

Get the community-member by params



158
159
160
161
162
163
# File 'lib/cliskip2/client.rb', line 158

def get_community_member community, params
  community_participation_attr = get("/tenants/#{current_user.tenant_id}/communities/#{community.id}/community_participations/show_by_params.json", params)
  Cliskip2::CommunityParticipation.new(community_participation_attr['community_participation'])
rescue Faraday::Error::ResourceNotFound => e
  nil
end

#get_user(params) ⇒ Cliskip2::User

Get the user by params

Returns:



52
53
54
55
56
57
# File 'lib/cliskip2/client.rb', line 52

def get_user params
  user_attr = get("/tenants/#{current_user.tenant_id}/users/show_by_params.json", params)
  Cliskip2::User.new(user_attr['user'])
rescue Faraday::Error::ResourceNotFound => e
  nil
end

#join_communities(params) ⇒ Array<Cliskip2::CommunityParticipation>

Join some communities by some conditions



192
193
194
195
196
197
198
199
# File 'lib/cliskip2/client.rb', line 192

def join_communities params
  if user_id = params.delete(:user_id)
    community_participation_attrs = post("/admin/tenants/#{current_user.tenant_id}/users/#{user_id}/community_participations/join_communities.json", params)
    community_participation_attrs.map { |community_participation_attr| Cliskip2::CommunityParticipation.new(community_participation_attr['community_participation']) }
  else
    []
  end
end

#join_community(community, user, params) ⇒ Cliskip2::CommunityParticipation

Join the community by the target-community and params



167
168
169
170
# File 'lib/cliskip2/client.rb', line 167

def join_community community, user, params
  community_participation_attr = post("/tenants/#{current_user.tenant_id}/communities/#{community.id}/community_participations.json", {:community_participation => {:user_id => user.id}}.merge(params))
  Cliskip2::CommunityParticipation.new(community_participation_attr['community_participation'])
end

#leave_communities(params) ⇒ Array<Cliskip2::CommunityParticipation>

Leave from some communities by some conditions



203
204
205
206
207
208
209
210
# File 'lib/cliskip2/client.rb', line 203

def leave_communities params
  if user_id = params.delete(:user_id)
    community_participation_attrs = delete("/admin/tenants/#{current_user.tenant_id}/users/#{user_id}/community_participations/leave_communities.json", params)
    community_participation_attrs.map { |community_participation_attr| Cliskip2::CommunityParticipation.new(community_participation_attr['community_participation']) }
  else
    []
  end
end

#leave_community(community_participation, params) ⇒ Cliskip2::CommunityParticipation

Leave from the community by the target-community and params



174
175
176
177
# File 'lib/cliskip2/client.rb', line 174

def leave_community community_participation, params
  community_participation_attr = delete("/tenants/#{current_user.tenant_id}/communities/#{community_participation.community_id}/community_participations/#{community_participation.id}.json", params)
  Cliskip2::CommunityParticipation.new(community_participation_attr['community_participation'])
end

#search_communities(params) ⇒ Array<Cliskip2::Community>

Search communities by some conditions

Returns:



151
152
153
154
# File 'lib/cliskip2/client.rb', line 151

def search_communities params
  community_attrs = get("/tenants/#{current_user.tenant_id}/communities.json", params)
  community_attrs.map {|community_attr| Cliskip2::Community.new(community_attr['community']) }
end

#search_members(params) ⇒ Array<Cliskip2::Community>

Search communitiy_participatioms by some conditions

Returns:



181
182
183
184
185
186
187
188
# File 'lib/cliskip2/client.rb', line 181

def search_members params
  if user_id = params.delete(:user_id)
    community_participation_attrs = get("/admin/tenants/#{current_user.tenant_id}/users/#{user_id}/community_participations.json", params)
    community_participation_attrs.map { |community_participation_attr| Cliskip2::CommunityParticipation.new(community_participation_attr['community_participation']) }
  else
    []
  end
end

#sync_users(users_csv_path) ⇒ Object



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/cliskip2/client.rb', line 91

def sync_users users_csv_path
  inserted_users_count = 0
  updated_users_count = 0
  deleted_users_count = 0
  failed_users_count = 0
  skipped_users_count = 0
  logger.info 'Start syncing users...'
  CSV.foreach(File.expand_path(users_csv_path), :headers => true, :encoding => 'UTF-8') do |row|
    begin
      if email = row['email'] and email != ''
        if user = self.get_user(:email => email)
          if user.status == 'UNUSED' && row['status'] == 'RETIRED'
            self.delete_user :user => {:email => email}
            logger.info "  Deleted email: #{email}"
            deleted_users_count = deleted_users_count + 1
          else
            self.update_user :user => {:name => row['name'], :email => email, :section => row['section'], :status => row['status']}
            logger.info "  Updated email: #{email}"
            updated_users_count = updated_users_count + 1
          end
        else
          unless row['status'] == 'RETIRED'
            self.create_user :user => {:name => row['name'], :email => email, :section => row['section']}
            logger.info "  Inserted email: #{email}"
            inserted_users_count = inserted_users_count + 1
          else
            logger.info "  Skipped to sync users. because of retired user."
            skipped_users_count = skipped_users_count + 1
          end
        end
      else
        logger.info "  Skipped to sync users. because of blank-email."
        skipped_users_count = skipped_users_count + 1
      end
    rescue Faraday::Error::ClientError => e
      logger.error "  Failed email: #{email}"
      failed_users_count = failed_users_count + 1
      logger.error e.message
    rescue => e
      logger.error "  Failed email: #{email}"
      failed_users_count = failed_users_count + 1
      logger.error e
    end
  end
  logger.info 'Finish syncing users...'
  {
    :inserted_users_count => inserted_users_count,
    :updated_users_count => updated_users_count,
    :deleted_users_count => deleted_users_count,
    :failed_users_count => failed_users_count,
    :skipped_users_count => skipped_users_count
  }
end

#update_email(current_email, future_email) ⇒ Cliskip2::User

Update the email by params

Returns:



72
73
74
75
76
77
78
79
80
# File 'lib/cliskip2/client.rb', line 72

def update_email current_email, future_email
  if user = get_user(:email => current_email)
    params = {:user => {:email => future_email}}
    user_attr = put("/admin/tenants/#{current_user.tenant_id}/users/#{user.id}.json", params)
    Cliskip2::User.new(user_attr['user'])
  else
    nil
  end
end

#update_user(params) ⇒ Cliskip2::User

Update the user by params

Returns:



61
62
63
64
65
66
67
68
# File 'lib/cliskip2/client.rb', line 61

def update_user params
  if user = get_user(:email => params[:user][:email])
    user_attr = put("/admin/tenants/#{current_user.tenant_id}/users/#{user.id}.json", params)
    Cliskip2::User.new(user_attr['user'])
  else
    nil
  end
end