e_pochta 0.2.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.
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: []