Sha256: f72665344db1bfa206cde713a1296af9dde1f0681d441178dcfcd16e4dba8b83

Contents?: true

Size: 1.9 KB

Versions: 1

Compression:

Stored size: 1.9 KB

Contents

require 'active_support'
require "plyom_user/version"
require "httparty"
require "json"

module PlyomUser

	def self.included(base)
		base.extend ClassMethods
	end

	module ClassMethods
		class_attribute :id, :name, :email, :username, :password, :password_confirmation, :password_digest, :status, :token, :created_at, :updated_at

		def initialize(params={})
			params.each { |var, val| public_send("#{var}=", val) }
		end

		def self.all
			list = []
			response = action_by("read")
			objs = JSON.parse(response.body)
			objs.each { |obj| list << self.new(obj) }
			list
		end

		def self.find(id)
			response = action_by("read", id: id)
			obj = JSON.parse(response.body)
			self.new(obj)
		end

		def save
			param_names = ["name", "email", "username", "password", "password_confirmation", "status"]
			data = filter_params(param_names)
			if data.length > 0
				paramters = { user: data }
				paramters.update({ id: @id }) if @id.to_i > 0
				action = @id.to_i > 0 ? "update" : "add"
				response = UserPlyom.action_by(action, paramters)
			end
		end

		def remove
			UserPlyom.action_by("del", id: @id)
		end

		private
			def filter_params(names=[])
				params = {}
				self.instance_variables.each do |var|
						var_name = var.to_s.delete "@"
						var_value = self.instance_variable_get var
						params.update({var_name => var_value}) if names.include?(var_name)
				end
				params
			end

			def self.action_by(action, params={})
				case action
					when "read"
						HTTParty.get("#{uri}/#{params[:id]}")
					when "add"
						HTTParty.post("#{uri}", query: params)
					when "del"
						HTTParty.delete("#{uri}/#{params[:id]}")
					when "update"
						HTTParty.patch("#{uri}/#{params[:id]}", query: params) if params.size > 1
						HTTParty.put("#{uri}/#{params[:id]}", query: params) if params.size == 1
				end		
			end

			def self.uri
				host = ENV["plyom_user_host"]
				path = "/api/users"
				host + path
			end
	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
plyom_user-0.0.5 lib/plyom_user.rb