gpt4 book ai didi

ruby-on-rails - SimpleDB 到 ActiveResource。 rails

转载 作者:行者123 更新时间:2023-12-04 15:37:54 24 4
gpt4 key购买 nike

我正在寻找一种将 ActiveResource 映射到 SimpleDB 的方法

我想避免使用插件/ gem ,因为我使用的所有东西都过时/有缺陷/未维护

看起来并不难,我想知道你们中是否有人成功地实现了一个以 simpleDB 作为事件资源的 rails 应用程序。你是怎么做到的?谢谢。

最佳答案

我没有使用过 SimpleDB,但我已经将 ActiveResource 映射到 Amazon 的灵活支付服务 REST api 并且只是浏览了它们看起来相似的文档,所以这基本上就是我所做的,也许您可​​以将其用作起点。

require 'base64'
require 'openssl'

class AmazonFlexiblePaymentResource < ActiveResource::Base
self.site = AMZ_CONFIG['flexible_api_url']

def self.rest_api(options = {})
params = common_request_params.update(options)

sig = compute_signature(AMZ_CONFIG['secret_access_key'], 'get', site, params)

rest_req = {'Signature' => sig}.update(params)

# make the http get call
connection.get("/#{query_string(rest_req)}", headers)
end

protected

# these are the params are common to all rest api calls
def self.common_request_params
{ 'AWSAccessKeyId' => AMZ_CONFIG['access_key_id'],
'SignatureVersion' => 2,
'SignatureMethod' => 'HmacSHA256',
'Timestamp' => Time.now.utc.iso8601,
'Version' => '2008-09-17'}
end

def self.compute_signature(key, method, end_point_url, params)
query_str = parameters.sort.collect {|k, v| v.to_query(k)}.join '&'

# cannot use plus for space, and tilde needs to be reversed
query_str.gsub!('+', '%20')
query_str.gsub!('%7E', '~')

to_sign = [method.upcase, end_point_uri.host.downcase,
end_point_uri.request_uri, query_str].join "\n"

digest = OpenSSL::Digest::Digest.new('sha256')
hmac = OpenSSL::HMAC.digest(digest, key, to_sign)
Base64.encode64(hmac).chomp
end
end

然后我就这样打电话
res = AmazonFlexiblePaymentResource.rest_api({ 'Action' => 'GetTransactionStatus', 'TransactionId' => '1234567890ABCDEFGHIJ' })

响应是解析后的 xml 的哈希值。这同样适用于 Amazon Flexible Payments Service,因此您可能需要进行调整以匹配 SimpleDB REST API。

关于ruby-on-rails - SimpleDB 到 ActiveResource。 rails ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2356887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com