Class: Ig3tool::GenericClient

Inherits:
Object
  • Object
show all
Defined in:
lib/ig3client/generic_client.rb

Direct Known Subclasses

Client, YAMLClient

Constant Summary collapse

EXPIRY =

15 minuten

900
BIG_QUERIES =
[ :person_debuggers,   :person_honorarymembers,
:person_members,     :person_nonmembers,
:person_everybody,
:product_categories, :product_all ]
@@CACHE =
{}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host = "infogroep.be", port = "2007", timeout = 0) ⇒ GenericClient

Returns a new instance of GenericClient.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/ig3client/generic_client.rb', line 16

def initialize(host="infogroep.be", port="2007", timeout=0)
	@host    = host
	@port    = port
	@timeout = timeout # 0 = no timeout.
	
	begin
		begin
			@token = File.read(File.expand_path("~/.ig3token")).strip
		rescue Exception => e
			userdir = File.join(ENV['userprofile'].to_s, "ig3tool")
			tokenpath = File.join(userdir, "ig3token")
			Dir.mkdir(userdir) unless File.exists?(userdir)
			@token = File.read(tokenpath)
		end
	rescue Exception => e
		@token = nil
	end

	begin
		begin
			begin
				@username = File.read(File.expand_path("~/.ig3user")).strip
			rescue Exception => e
				@username = ENV["USER"] || \
					Etc.getpwuid(Process::Sys.geteuid).name
			end
		rescue Exception => e
			userdir = File.join(ENV['userprofile'].to_s, "ig3tool")
			Dir.mkdir(userdir) unless File.exists?(userdir)
			usernamepath = File.join(userdir, "ig3user")
			@username = File.read(usernamepath)
		end
	rescue Exception => e
		@username = nil
	end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(msg, *args, &block) ⇒ Object

Raises:

  • (Exception)


105
106
107
# File 'lib/ig3client/generic_client.rb', line 105

def method_missing(msg, *args, &block)
	raise Exception, "this is an abstract class"
end

Instance Attribute Details

#tokenObject

Returns the value of attribute token.



14
15
16
# File 'lib/ig3client/generic_client.rb', line 14

def token
  @token
end

#usernameObject

Returns the value of attribute username.



14
15
16
# File 'lib/ig3client/generic_client.rb', line 14

def username
  @username
end

Instance Method Details

#request!(h) ⇒ Object



63
64
65
# File 'lib/ig3client/generic_client.rb', line 63

def request!(h)
	wannabe!(h)
end

#valid_token?Boolean

Returns:

  • (Boolean)


53
54
55
56
57
58
59
60
61
# File 'lib/ig3client/generic_client.rb', line 53

def valid_token?
	# XXX send no-op to server
	false if @token.nil?
	begin
		self.validate
	rescue
		return false
	end
end

#wannabe!(h) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/ig3client/generic_client.rb', line 67

def wannabe!(h)
	username = h["username"]
	passwd   = h["password"]
	# request token
	# if ok => store in file
	# else => throw exception
	@token = method_missing("wannabe!", {"username" => username,"password" =>  passwd})

	begin
		File.open(File.expand_path("~/.ig3token"), "wb") do |f|
			f.write @token
		end
	rescue Exception => e
		userdir = File.join(ENV['userprofile'].to_s, "ig3tool")
		tokenpath = File.join(userdir, "ig3token")
		Dir.mkdir(userdir) unless File.exists?(userdir)
		File.open(tokenpath, "wb") do |f|
			f.write @token
		end
	end

	begin
		File.open(File.expand_path("~/.ig3user"), "wb") do |f|
			f.write @username
		end
	rescue Exception => e
		userdir = File.join(ENV['userprofile'].to_s, "ig3tool")
		usernamepath = File.join(userdir, "ig3user")
		Dir.mkdir(userdir) unless File.exists?(userdir)
		File.open(usernamepath, "wb") do |f|
			f.write @username
		end
	end
	#rescue Token => t
	#	raise PermissionDenied
end