e_pochta 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +15 -0
  2. data/lib/e_pochta.rb +122 -0
  3. metadata +44 -0
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MTkyZmQ3NjU3MWQ1ZDZhN2ViNzdlMmQ4ODViMmRkMzQxY2IxNDIwZQ==
5
+ data.tar.gz: !binary |-
6
+ NDU3NzlmN2I0YmNjNGJjNjY0YzliMTU1ZDMzYzgyYTkzZDU2ZGVjNA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NDlkMDI1ZTA2NjliNTdjNTFhMTU2NGVhM2RiMmNmOWNmMDUwNjY0YjE4YTIy
10
+ NTEyZDEzNWJkMTZjYTFmYzE2ZDUxYjcwYTEzMjMzYjIyNmJmYTVhZjFiM2I5
11
+ MWMxZWQ4MzVlMjNjNjhhODEyMjdhM2IyZGY1NmZiYzBmOTBmNmI=
12
+ data.tar.gz: !binary |-
13
+ ODFmYWRkNzc0MjJlYWI4MzVhYjQ0ODZmYWY2OGFkNjg3MGY3MjZmODQ5ZWU5
14
+ NGFmNzBkM2Y0YzNlYmVkN2MxNzlhNmM4ZjY4MzEzYzQ5MzdjNGRhZGFlZjBl
15
+ ODg2ZjEzM2Y5ZDRjOTJkYWM2MjcyNzc5ZTQ1ZTIzYzE5NDA1NTA=
@@ -0,0 +1,122 @@
1
+ require 'net/http'
2
+ require 'digest/md5'
3
+ require 'json'
4
+
5
+ class EPochta
6
+ attr_accessor :public_key, :private_key, :parameters
7
+ URL = 'http://atompark.com/api/sms/3.0/'
8
+ # options hash: public_key, private_key
9
+ def initialize(options)
10
+ if options.is_a? Hash
11
+ self.public_key = options[:public_key]
12
+ self.private_key = options[:private_key]
13
+ else
14
+ raise ArgumentError, "expected Hash argument, got #{options.class}"
15
+ end
16
+ end
17
+
18
+ def calculate_md5(params)
19
+ result = ''
20
+ params['key'] = self.public_key
21
+ #stringify_keys
22
+ stringified_params = {}
23
+ params.each {|key, value| stringified_params[key.to_s] = value.to_s}
24
+ #sort & concatenate all values
25
+ stringified_params.sort.each { |value| result = result + value[1] }
26
+ result = result + self.private_key
27
+ Digest::MD5.hexdigest( result )
28
+ end
29
+
30
+ def form_request(params, action)
31
+ params['sum'] = calculate_md5 params
32
+ self.parameters = params.each {|k,v| v = URI.escape v.to_s }
33
+
34
+ url = URI("#{EPochta::URL}#{action}")
35
+ url.query = URI.encode_www_form params
36
+ url
37
+ end
38
+
39
+ def exec_command(params, action)
40
+ uri = form_request(params, action)
41
+ result = Net::HTTP.post_form(uri, self.parameters)
42
+ end
43
+
44
+ def create_address_book(params)
45
+ params['action'] = 'addAddressbook'
46
+ params['version'] = '3.0'
47
+ result = exec_command(params, 'addAddressbook')
48
+ result = JSON.parse(result.body)
49
+
50
+ if result.has_key? 'error'
51
+ false
52
+ else
53
+ result['result']['addressbook_id']
54
+ end
55
+ end
56
+
57
+ def get_balance()
58
+ params = {}
59
+ params['action'] = 'getUserBalance'
60
+ params['version'] = '3.0'
61
+ params['currency'] = 'RUB'
62
+ result = exec_command(params, 'getUserBalance')
63
+ result = JSON.parse(result.body)
64
+
65
+ if result.has_key? 'error'
66
+ false
67
+ else
68
+ result['result']['balance_currency']
69
+ end
70
+ end
71
+
72
+ def delete_address_book(params)
73
+ params['action'] = 'delAddressbook'
74
+ params['version'] = '3.0'
75
+ result = exec_command(params, 'delAddressbook')
76
+ result = JSON.parse(result.body)
77
+ if result.has_key? 'error'
78
+ false
79
+ else
80
+ true
81
+ end
82
+ end
83
+
84
+ def add_phones(params)
85
+ params['action'] = 'addPhoneToAddressBook'
86
+ params['version'] = '3.0'
87
+ result = exec_command(params, 'addPhoneToAddressBook')
88
+ result = JSON.parse(result.body)
89
+ if result.has_key? 'error'
90
+ false
91
+ else
92
+ true
93
+ end
94
+ end
95
+
96
+ def send_sms(params)
97
+ params['action'] = 'sendSMS'
98
+ params['version'] = '3.0'
99
+ result = exec_command(params, 'sendSMS')
100
+ result = JSON.parse(result.body)
101
+
102
+ if result.has_key? 'error'
103
+ false
104
+ else
105
+ result['result']['id']
106
+ end
107
+ end
108
+
109
+ def create_campaign(params)
110
+ params['action'] = 'createCampaign'
111
+ params['version'] = '3.0'
112
+ result = exec_command(params, 'createCampaign')
113
+ result = JSON.parse(result.body)
114
+
115
+ if result.has_key? 'error'
116
+ false
117
+ else
118
+ result['result']['id']
119
+ end
120
+ end
121
+
122
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: e_pochta
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ platform: ruby
6
+ authors:
7
+ - Tim Tikijian
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-07 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Class for interaction with E-Pochta API v.3.0 - an online sms-service
14
+ http://www.epochta.ru/
15
+ email: timurt1988@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/e_pochta.rb
21
+ homepage: http://rubygems.org/gems/e_pochta
22
+ licenses: []
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.0.3
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Class for interaction with E-Pochta API v.3.0
44
+ test_files: []