granicus-platform-api 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +1 -1
- data/lib/granicus-platform-api/client.rb +66 -11
- data/lib/granicus-platform-api/version.rb +1 -1
- data/spec/granicus-platform-api_spec.rb +5 -0
- metadata +14 -14
data/Gemfile.lock
CHANGED
@@ -79,26 +79,80 @@ module GranicusPlatformAPI
|
|
79
79
|
self.classmap['VoteEntry'] = 'granicus:VoteEntry'
|
80
80
|
self.classmap['VoteRecord'] = 'granicus:VoteRecord'
|
81
81
|
|
82
|
-
# create a
|
83
|
-
def initialize(granicus_site,username,password,options={})
|
84
|
-
#
|
85
|
-
@
|
82
|
+
# create a client
|
83
|
+
def initialize(granicus_site=nil,username=nil,password=nil,options={})
|
84
|
+
# setup our private members
|
85
|
+
@options = options
|
86
|
+
@impersonation_token = nil
|
87
|
+
@connected = false
|
88
|
+
|
89
|
+
# configure savon
|
86
90
|
Savon.configure do |config|
|
87
91
|
config.log = false
|
88
92
|
end
|
89
93
|
HTTPI.log = false
|
94
|
+
|
95
|
+
# connect if we have a site and credentials
|
96
|
+
unless granicus_site.nil?
|
97
|
+
self.site = granicus_site
|
98
|
+
end
|
90
99
|
|
100
|
+
unless username.nil? or password.nil?
|
101
|
+
login(username,password)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
# options
|
106
|
+
def options
|
107
|
+
@options
|
108
|
+
end
|
109
|
+
def options=(value)
|
110
|
+
@options = value
|
111
|
+
end
|
112
|
+
|
113
|
+
# connect up to a site
|
114
|
+
def connect(granicus_site,username,password,options={})
|
115
|
+
logout if @connected
|
116
|
+
|
91
117
|
# create the client
|
118
|
+
site = granicus_site
|
119
|
+
|
120
|
+
# call login
|
121
|
+
login username, password
|
122
|
+
end
|
123
|
+
|
124
|
+
# site property
|
125
|
+
def site
|
126
|
+
return @granicus_site
|
127
|
+
end
|
128
|
+
|
129
|
+
def site=(value)
|
130
|
+
@granicus_site = value
|
92
131
|
@client = Savon::Client.new do |wsdl, http|
|
93
132
|
wsdl.document = File.expand_path("../granicus-platform-api.xml", __FILE__)
|
94
|
-
wsdl.endpoint = "http://#{
|
95
|
-
http.proxy = options[:proxy] if not options[:proxy].nil?
|
133
|
+
wsdl.endpoint = "http://#{value}/SDK/User/index.php"
|
134
|
+
http.proxy = @options[:proxy] if not @options[:proxy].nil?
|
96
135
|
end
|
136
|
+
end
|
137
|
+
|
138
|
+
# impersonate a user
|
139
|
+
def impersonate(token)
|
140
|
+
@impersonation_token = token
|
141
|
+
@client.http.headers["Cookie"] = "SESS1=#{token}; path=/"
|
142
|
+
end
|
143
|
+
|
144
|
+
def impersonation_token
|
145
|
+
@impersonation_token
|
146
|
+
end
|
97
147
|
|
98
|
-
|
148
|
+
# login
|
149
|
+
def login(username,password)
|
150
|
+
logout if @connected
|
99
151
|
call_soap_method(:login,'//ns4:LoginResponse/return',{'Username' => username, 'Password' => password})
|
152
|
+
@impersonation_token = @response.http.headers['Set-Cookie'].gsub(/SESS1=(.*); path=\//,'\\1')
|
153
|
+
@connected = true
|
100
154
|
end
|
101
|
-
|
155
|
+
|
102
156
|
# return the current logged on user name
|
103
157
|
def get_current_user_logon
|
104
158
|
call_soap_method(:get_current_user_logon,'//ns4:GetCurrentUserLogonResponse/Logon')
|
@@ -107,6 +161,7 @@ module GranicusPlatformAPI
|
|
107
161
|
# logout
|
108
162
|
def logout
|
109
163
|
call_soap_method(:logout,'//ns4:LogoutResponse')
|
164
|
+
@connected = false
|
110
165
|
end
|
111
166
|
|
112
167
|
# return all of the cameras
|
@@ -227,7 +282,7 @@ module GranicusPlatformAPI
|
|
227
282
|
#private
|
228
283
|
|
229
284
|
def call_soap_method(method,returnfilter,args={},debug=false)
|
230
|
-
response = @client.request :wsdl, method do
|
285
|
+
@response = @client.request :wsdl, method do
|
231
286
|
soap.namespaces['xmlns:granicus'] = "http://granicus.com/xsd"
|
232
287
|
soap.namespaces['xmlns:SOAP-ENC'] = "http://schemas.xmlsoap.org/soap/encoding/"
|
233
288
|
soap.body = prepare_hash args
|
@@ -235,8 +290,8 @@ module GranicusPlatformAPI
|
|
235
290
|
puts soap.body
|
236
291
|
end
|
237
292
|
end
|
238
|
-
|
239
|
-
doc = Nokogiri::XML(response.to_xml) do |config|
|
293
|
+
|
294
|
+
doc = Nokogiri::XML(@response.to_xml) do |config|
|
240
295
|
config.noblanks
|
241
296
|
end
|
242
297
|
response = handle_response(doc.xpath(returnfilter, doc.root.namespaces)[0])
|
@@ -24,6 +24,11 @@ describe GranicusPlatformAPI, "::Client.new" do
|
|
24
24
|
logon = client.get_current_user_logon
|
25
25
|
logon.should == GRANICUS_LOGIN
|
26
26
|
end
|
27
|
+
it "should support impersonation" do
|
28
|
+
client2 = GranicusPlatformAPI::Client.new GRANICUS_SITE,nil,nil,{:proxy => 'http://localhost:8888' }
|
29
|
+
client2.impersonate client.impersonation_token
|
30
|
+
client2.get_current_user_logon.should == client.get_current_user_logon
|
31
|
+
end
|
27
32
|
end
|
28
33
|
|
29
34
|
describe GranicusPlatformAPI, "::Client Camera Methods" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: granicus-platform-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-06-
|
12
|
+
date: 2011-06-29 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &2156236720 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '2.6'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2156236720
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: simplecov
|
27
|
-
requirement: &
|
27
|
+
requirement: &2156236220 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.4.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2156236220
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: hashie
|
38
|
-
requirement: &
|
38
|
+
requirement: &2156235760 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.0.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2156235760
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: savon
|
49
|
-
requirement: &
|
49
|
+
requirement: &2156235300 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 0.9.2
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2156235300
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: savon
|
60
|
-
requirement: &
|
60
|
+
requirement: &2156234840 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.9.2
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2156234840
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: hashie
|
71
|
-
requirement: &
|
71
|
+
requirement: &2156234380 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: 1.0.0
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2156234380
|
80
80
|
description: Wrapper for the Granicus Open Platform API v1.x
|
81
81
|
email: javier@granicus.com
|
82
82
|
executables: []
|