aliyun-email-ruby-sdk 0.0.1.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6612ca4653b6b459380d2c551e42348e50e354c0
4
+ data.tar.gz: 9b78224acdb2a83ee4ce8d89f0694e2135a1f404
5
+ SHA512:
6
+ metadata.gz: 3fd43dab3acd2fb131f2aa8aa965342bead41a8bf3ade82985be5abc06504cfc607dc656944384ac779523ba2dd7e0b6aaccd84bc0fb8a8a8d24a651a6b83a96
7
+ data.tar.gz: 522bcb8cba595f384c30967cd8a33423611cff9373ae3e399dc52f95ef4e08f7e001916ddf51de9f0f7bd92c75a2c84df33f866371f1cf51d947b0264bcc0c01
@@ -0,0 +1,12 @@
1
+ .DS_Store
2
+ *.gem
3
+ /.bundle/
4
+ /.yardoc
5
+ /Gemfile.lock
6
+ /_yardoc/
7
+ /coverage/
8
+ /doc/
9
+ /pkg/
10
+ /spec/reports/
11
+ /tmp/
12
+ test_config.yml
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.0
5
+ before_install: gem install bundler -v 1.13.6
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in aliyun-sms-ruby-sdk.gemspec
4
+ gemspec
@@ -0,0 +1,14 @@
1
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
2
+ Version 2, December 2004
3
+
4
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
5
+
6
+ Everyone is permitted to copy and distribute verbatim or modified
7
+ copies of this license document, and changing it is allowed as long
8
+ as the name is changed.
9
+
10
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
11
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
12
+
13
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
14
+
@@ -0,0 +1,19 @@
1
+ # Aliyun email push sdk
2
+
3
+ ## use:
4
+
5
+ ### init
6
+
7
+ ```
8
+ aliyun = Aliyun::Email.new(@config['access_key_id'],@config['access_key_secret'], @config['account_name'])
9
+ ```
10
+
11
+ ### send
12
+ ```
13
+ aliyun.send(@config['to_address'],
14
+ from_alias: @config['from_alias'],
15
+ subject: @config['subject'],
16
+ htmlbody: @config['htmlbody'],
17
+ textbody: @config['textbody'],
18
+ click_trace: @config['click_trace'])
19
+ ```
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
@@ -0,0 +1,36 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'aliyun/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "aliyun-email-ruby-sdk"
8
+ spec.version = Aliyun::VERSION
9
+ spec.authors = ["xbw"]
10
+ spec.email = ["windworst@gmail.com"]
11
+
12
+ spec.summary = %q{Use aliyun-email to send email.}
13
+ spec.description = %q{Aliyun email push sdk.}
14
+ spec.homepage = "http://github.com/ha-excited/aliyun-email-ruby-sdk"
15
+ spec.license = "WTFPL"
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ if spec.respond_to?(:metadata)
20
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
21
+ else
22
+ raise "RubyGems 2.0 or newer is required to protect against " \
23
+ "public gem pushes."
24
+ end
25
+
26
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
+ f.match(%r{^(test|spec|features)/})
28
+ end
29
+ spec.bindir = "exe"
30
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
+ spec.require_paths = ["lib"]
32
+
33
+ spec.add_development_dependency "bundler", "~> 1.15"
34
+ spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "minitest", "~> 5.0"
36
+ end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "aliyun/sms"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,115 @@
1
+ require 'aliyun/version'
2
+ require 'net/http'
3
+ require 'openssl'
4
+ require 'base64'
5
+ require 'uri'
6
+ require 'erb'
7
+ include ERB::Util
8
+
9
+ module Aliyun
10
+ class Email
11
+ attr_accessor :access_key_secret,
12
+ :access_key_id,
13
+ :action,
14
+ :format,
15
+ :region_id,
16
+ :account_name,
17
+ :signature_method,
18
+ :reply_to_address,
19
+ :address_type,
20
+ :signature_version,
21
+ :version
22
+ def initialize(access_key_id, access_key_secret, account_name)
23
+ # public args
24
+ @access_key_secret = access_key_secret
25
+ @access_key_id = access_key_id
26
+ @format ||= 'JSON'
27
+ @region_id ||= 'cn-hangzhou'
28
+ @signature_method ||= 'HMAC-SHA1'
29
+ @signature_version ||= '1.0'
30
+ @version ||= '2015-11-23'
31
+
32
+ # function args
33
+ @action ||= 'SingleSendMail'
34
+ @account_name = account_name
35
+ @reply_to_address = false
36
+ @address_type = 1
37
+ end
38
+
39
+ def create_params(to_address)
40
+ {
41
+ # public args
42
+ 'AccessKeyId' => access_key_id,
43
+ 'Format' => format,
44
+ 'RegionId' => region_id,
45
+ 'SignatureMethod' => signature_method,
46
+ 'SignatureVersion' => signature_version,
47
+ 'Version' => version,
48
+
49
+ 'SignatureNonce' => seed_signature_nonce,
50
+ 'Timestamp' => seed_timestamp,
51
+
52
+ # function args
53
+ 'Action' => action,
54
+ 'AccountName' => account_name,
55
+ 'ReplyToAddress' => reply_to_address,
56
+ 'AddressType' => address_type,
57
+ 'ToAddress' => to_address
58
+ }
59
+ end
60
+
61
+ def send(to_address, from_alias: nil, subject: nil, htmlbody: nil, textbody: nil, click_trace: nil)
62
+ begin
63
+ uri = URI("https://dm.aliyuncs.com")
64
+ header = {"Content-Type": "application/x-www-form-urlencoded"}
65
+ http = Net::HTTP.new(uri.host, uri.port)
66
+ http.use_ssl = true
67
+ req = Net::HTTP::Post.new(uri.request_uri, header)
68
+ params = create_params(to_address)
69
+ params['FromAlias'] = from_alias unless from_alias.nil?
70
+ params['Subject'] = subject unless subject.nil?
71
+ params['HtmlBody'] = htmlbody unless htmlbody.nil?
72
+ params['TextBody'] = textbody unless textbody.nil?
73
+ params['ClickTrace'] = click_trace unless click_trace.nil?
74
+ req.body = sign_result(access_key_secret, params)
75
+ p req.body.split('&')
76
+ response = http.request(req)
77
+ response
78
+ rescue => e
79
+ puts "errors #{e}"
80
+ end
81
+ end
82
+
83
+ def sign_result(key_secret, params)
84
+ params_string = (query_string(params))
85
+ "Signature=" + safe_encode(compute_signature(key_secret, params_string)) + '&' + params_string
86
+ end
87
+
88
+ def query_string(params)
89
+ params.keys.sort.map {|key| "%s=%s" % [safe_encode(key.to_s), safe_encode(params[key])]}.join('&')
90
+ end
91
+
92
+ def seed_timestamp
93
+ Time.now.utc.strftime("%FT%TZ")
94
+ end
95
+
96
+ def seed_signature_nonce
97
+ Time.now.utc.strftime("%Y%m%d%H%M%S%L")
98
+ end
99
+
100
+
101
+ def compute_signature access_key_secret,canonicalized_query_string
102
+ string_to_sign = 'POST' + '&' + safe_encode('/') + '&' + safe_encode(canonicalized_query_string)
103
+ signature = calculate_signature access_key_secret+"&", string_to_sign
104
+ end
105
+
106
+ def calculate_signature key, string_to_sign
107
+ Base64.encode64(OpenSSL::HMAC.digest('sha1', key, string_to_sign)).gsub("\n", '')
108
+ end
109
+
110
+ def safe_encode value
111
+ URI.encode_www_form_component(value).gsub(/\+/,'%20').gsub(/\*/,'%2A').gsub(/%7E/,'~')
112
+ end
113
+ end
114
+ end
115
+
@@ -0,0 +1,5 @@
1
+ module Aliyun
2
+
3
+ VERSION = "0.0.1.1"
4
+
5
+ end
@@ -0,0 +1,8 @@
1
+ access_key_id: ''
2
+ access_key_secret: ''
3
+ account_name: ''
4
+ to_address: ''
5
+
6
+ from_alias: ''
7
+ subject: ''
8
+ textbody: ''
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aliyun-email-ruby-sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - xbw
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-08-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.15'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.15'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ description: Aliyun email push sdk.
56
+ email:
57
+ - windworst@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - ".travis.yml"
64
+ - Gemfile
65
+ - LICENSE.txt
66
+ - README.md
67
+ - Rakefile
68
+ - aliyun-email-ruby-sdk.gemspec
69
+ - bin/console
70
+ - bin/setup
71
+ - lib/aliyun/email.rb
72
+ - lib/aliyun/version.rb
73
+ - test_config.yml.example
74
+ homepage: http://github.com/ha-excited/aliyun-email-ruby-sdk
75
+ licenses:
76
+ - WTFPL
77
+ metadata:
78
+ allowed_push_host: https://rubygems.org
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ requirements: []
94
+ rubyforge_project:
95
+ rubygems_version: 2.6.11
96
+ signing_key:
97
+ specification_version: 4
98
+ summary: Use aliyun-email to send email.
99
+ test_files: []