-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAvangateRestClient.rb
More file actions
57 lines (47 loc) · 1.47 KB
/
AvangateRestClient.rb
File metadata and controls
57 lines (47 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
52
53
54
55
56
57
require 'base64'
require 'cgi'
require 'openssl'
class AvangateRestClient
@merchantCode
@loginDate
@hash
@baseUrl
def self.get(url)
return self.execute(:get, url)
end
def self.post(url, payload = {})
return self.execute(:post, url, payload)
end
def self.put(url, payload = {})
return self.execute(:put, url, payload)
end
def self.delete(url, payload = {})
return self.execute(:delete, url, payload)
end
def self.execute(method, url, payload = {})
return RestClient::Request.execute(
method: method,
url: @baseUrl + url,
payload: payload.to_json,
headers: {
:content_type => :json,
:accept => :json,
:'X-Avangate-Authentication' =>
'code="' + @merchantCode + '" date="' + @loginDate + '" hash="' + @hash + '"'
}
)
end
def self.setBaseUrl(baseUrl)
@baseUrl = baseUrl
end
def self.setCredentials(merchantCode, apiSecretKey)
@merchantCode = merchantCode
@apiSecretKey = apiSecretKey
@loginDate = Time.now.strftime("%F %T")
raw = String(@merchantCode.length) + @merchantCode + String(@loginDate.length) + @loginDate
@hash = hmac(raw, @apiSecretKey)
end
def self.hmac(data, secret)
return OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('md5'), secret.encode("ASCII"), data.encode("ASCII"))
end
end