tmapi 0.0.1 → 0.0.3
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +9 -1
- data/README.md +15 -5
- data/lib/tmapi/common.rb +5 -0
- data/lib/tmapi/telephony.rb +80 -0
- data/tmapi.gemspec +4 -3
- metadata +20 -5
- data/lib/tmapi.rb +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ac0b0b782dc03babc7598a1e3d819886124bbf1
|
4
|
+
data.tar.gz: 7bac6a87072199331b0bd2fa469fa8cb20f180cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 303dbc325e66689a5d7eef3919da7b53bcd4f395bbb982af8a6ab566eff0439e84f8f70daa7e54db6de144fa460a5e096f16d93fa7877533f86bf4fe136427c5
|
7
|
+
data.tar.gz: 93e1343146381d3a152e771f7d585623445950a138c7b312a010f9473de8f8a034b6792fcd98e9d23a33cc5328672bec1ed73d515c0bc89523f8d41d085ebfc9
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
tmapi (0.0.
|
4
|
+
tmapi (0.0.3)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
9
|
addressable (2.5.0)
|
10
10
|
public_suffix (~> 2.0, >= 2.0.2)
|
11
|
+
ansi (1.5.0)
|
11
12
|
ast (2.3.0)
|
13
|
+
builder (3.2.3)
|
12
14
|
crack (0.4.3)
|
13
15
|
safe_yaml (~> 1.0.0)
|
14
16
|
hashdiff (0.3.2)
|
@@ -16,6 +18,11 @@ GEM
|
|
16
18
|
multi_xml (>= 0.5.2)
|
17
19
|
mini_portile2 (2.1.0)
|
18
20
|
minitest (5.10.1)
|
21
|
+
minitest-reporters (1.1.14)
|
22
|
+
ansi
|
23
|
+
builder
|
24
|
+
minitest (>= 5.0)
|
25
|
+
ruby-progressbar
|
19
26
|
multi_xml (0.5.5)
|
20
27
|
nokogiri (1.6.8.1)
|
21
28
|
mini_portile2 (~> 2.1.0)
|
@@ -46,6 +53,7 @@ DEPENDENCIES
|
|
46
53
|
bundler (~> 1.13)
|
47
54
|
httparty
|
48
55
|
minitest (~> 5.0)
|
56
|
+
minitest-reporters (~> 1.1)
|
49
57
|
nokogiri
|
50
58
|
rake (~> 10.0)
|
51
59
|
rubocop (~> 0)
|
data/README.md
CHANGED
@@ -1,6 +1,11 @@
|
|
1
|
-
#
|
1
|
+
# TMAPI
|
2
2
|
|
3
|
-
|
3
|
+
[](https://travis-ci.org/rgarifullin/tmapi)
|
4
|
+
[](https://codeclimate.com/github/rgarifullin/tmapi)
|
5
|
+
|
6
|
+
Wrapper for TaxiMaster API ([Taxi Master](http://taxi-master.com)) written in Ruby.
|
7
|
+
|
8
|
+
TaxiMaster API documentation: [(Russian)](http://help.taximaster.ru/index.php/TM_API)
|
4
9
|
|
5
10
|
## Installation
|
6
11
|
|
@@ -24,13 +29,18 @@ First you should initialize a new class with API URL and unique key of customer.
|
|
24
29
|
|
25
30
|
Example:
|
26
31
|
```ruby
|
27
|
-
api = TMAPI('url', 'key')
|
32
|
+
api = TMAPI::Telephony.new('url', 'key')
|
28
33
|
api.change_order_state(order_id, new_state)
|
34
|
+
# if OK
|
35
|
+
=> { order_id: 1, new_state: 5 }
|
29
36
|
```
|
30
37
|
|
31
|
-
|
38
|
+
Options:
|
39
|
+
* ```ssl``` - SSL verification (```true``` by default)
|
40
|
+
* ```debug``` - output response to logger (```false``` by default)
|
41
|
+
|
32
42
|
```ruby
|
33
|
-
api = TMAPI('url', 'key', false)
|
43
|
+
api = TMAPI::Telephony.new('url', 'key', ssl: false, debug: true)
|
34
44
|
```
|
35
45
|
|
36
46
|
## Contributing
|
data/lib/tmapi/common.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
require 'nokogiri'
|
3
|
+
require 'logger'
|
4
|
+
|
5
|
+
module TMAPI
|
6
|
+
# TaxiMaster Telephony API
|
7
|
+
class Telephony
|
8
|
+
class Error < RuntimeError; end
|
9
|
+
class OrderNotFound < Error; end
|
10
|
+
class FailedRequirements < Error; end
|
11
|
+
|
12
|
+
def initialize(url, key, opts = {})
|
13
|
+
@url = url
|
14
|
+
@key = key
|
15
|
+
@verify_ssl = opts[:ssl] || true
|
16
|
+
@logger = TMAPI::Telephony.logger || Logger.new(STDOUT)
|
17
|
+
@debug = opts[:debug] || false
|
18
|
+
end
|
19
|
+
|
20
|
+
def change_order_state(order_id, state)
|
21
|
+
params = { order_id: order_id, need_state: state }
|
22
|
+
params[:signature] = signature(params)
|
23
|
+
|
24
|
+
opts = { body: params, verify: @verify_ssl, format: :plain }
|
25
|
+
response = HTTParty.post("#{@url}/change_order_state", opts)
|
26
|
+
@logger.debug(response) if @debug
|
27
|
+
|
28
|
+
parse_change_order_state(response, order_id)
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
class << self
|
34
|
+
attr_accessor :logger
|
35
|
+
end
|
36
|
+
|
37
|
+
if defined?(Rails::Railtie)
|
38
|
+
# Use Rails.logger inside Rails app
|
39
|
+
class Railtie < Rails::Railtie
|
40
|
+
initializer 'TMAPI::Telephony.logger' do
|
41
|
+
TMAPI::Telephony.logger = Rails.logger
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def url_params(params)
|
47
|
+
URI.encode_www_form(params)
|
48
|
+
end
|
49
|
+
|
50
|
+
def signature(params)
|
51
|
+
Digest::MD5.hexdigest(url_params(params) + @key)
|
52
|
+
end
|
53
|
+
|
54
|
+
def inspect(data)
|
55
|
+
data.each_with_object({}) do |elem, hash|
|
56
|
+
hash[elem.name.downcase.to_sym] = if elem.elements.any?
|
57
|
+
inspect(elem.elements)
|
58
|
+
else
|
59
|
+
elem.text
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def parse_change_order_state(response, order_id)
|
65
|
+
data = Nokogiri::XML(response.body).root
|
66
|
+
return {} unless data
|
67
|
+
|
68
|
+
parsed_response = inspect(data.elements)
|
69
|
+
case parsed_response[:code]
|
70
|
+
when '100'
|
71
|
+
raise OrderNotFound.new, "Order ID #{order_id} not found"
|
72
|
+
when '101'
|
73
|
+
raise FailedRequirements.new,
|
74
|
+
"Can't change state of order ID #{order_id} due to requirements"
|
75
|
+
end
|
76
|
+
|
77
|
+
parsed_response[:data]
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
data/tmapi.gemspec
CHANGED
@@ -4,12 +4,12 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'tmapi'
|
7
|
-
spec.version = '0.0.
|
7
|
+
spec.version = '0.0.3'
|
8
8
|
spec.authors = ['Rinat Garifullin']
|
9
9
|
spec.email = ['ringarifullin@gmail.com']
|
10
10
|
|
11
|
-
spec.summary = 'Wrapper for
|
12
|
-
spec.description = 'Wrapper for
|
11
|
+
spec.summary = 'Wrapper for TaxiMaster API (TMAPI)'
|
12
|
+
spec.description = 'Wrapper for TaxiMaster HTTP API http://taxi-master.com/'
|
13
13
|
spec.homepage = 'https://github.com/rgarifullin/tmapi'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency 'bundler', '~> 1.13'
|
24
24
|
spec.add_development_dependency 'rake', '~> 10.0'
|
25
25
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
26
|
+
spec.add_development_dependency 'minitest-reporters', '~> 1.1'
|
26
27
|
spec.add_development_dependency 'webmock', '~> 2.3'
|
27
28
|
spec.add_development_dependency 'rubocop', '~> 0'
|
28
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tmapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rinat Garifullin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '5.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest-reporters
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.1'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.1'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: webmock
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,7 +94,7 @@ dependencies:
|
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
|
-
description: Wrapper for
|
97
|
+
description: Wrapper for TaxiMaster HTTP API http://taxi-master.com/
|
84
98
|
email:
|
85
99
|
- ringarifullin@gmail.com
|
86
100
|
executables: []
|
@@ -98,7 +112,8 @@ files:
|
|
98
112
|
- Rakefile
|
99
113
|
- bin/console
|
100
114
|
- bin/setup
|
101
|
-
- lib/tmapi.rb
|
115
|
+
- lib/tmapi/common.rb
|
116
|
+
- lib/tmapi/telephony.rb
|
102
117
|
- tmapi.gemspec
|
103
118
|
homepage: https://github.com/rgarifullin/tmapi
|
104
119
|
licenses:
|
@@ -123,5 +138,5 @@ rubyforge_project:
|
|
123
138
|
rubygems_version: 2.5.2
|
124
139
|
signing_key:
|
125
140
|
specification_version: 4
|
126
|
-
summary: Wrapper for
|
141
|
+
summary: Wrapper for TaxiMaster API (TMAPI)
|
127
142
|
test_files: []
|
data/lib/tmapi.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
require 'nokogiri'
|
3
|
-
require 'logger'
|
4
|
-
|
5
|
-
class TMAPI
|
6
|
-
def initialize(url, key, ssl = true)
|
7
|
-
@url = url
|
8
|
-
@key = key
|
9
|
-
@ssl = ssl
|
10
|
-
@logger = TMAPI.logger || Logger.new(STDOUT)
|
11
|
-
end
|
12
|
-
|
13
|
-
def change_order_state(order_id, state)
|
14
|
-
params = { order_id: order_id, need_state: state }
|
15
|
-
params[:signature] = signature(params)
|
16
|
-
|
17
|
-
begin
|
18
|
-
response = HTTParty.post("#{@url}/change_order_state", body: params,
|
19
|
-
verify: @ssl)
|
20
|
-
result = Nokogiri::XML(response.body)
|
21
|
-
if response.success? && result.at_css('code')&.content.to_i.zero?
|
22
|
-
result.at_css('data')&.at_css('NEW_STATE')&.content.to_i == state
|
23
|
-
else
|
24
|
-
false
|
25
|
-
end
|
26
|
-
rescue Errno::ECONNREFUSED => ex
|
27
|
-
@logger.fatal(ex)
|
28
|
-
false
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
class << self
|
35
|
-
attr_accessor :logger
|
36
|
-
end
|
37
|
-
|
38
|
-
def url_params(params)
|
39
|
-
URI.encode_www_form(params)
|
40
|
-
end
|
41
|
-
|
42
|
-
def signature(params)
|
43
|
-
Digest::MD5.hexdigest(url_params(params) + @key)
|
44
|
-
end
|
45
|
-
|
46
|
-
if defined?(Rails::Railtie)
|
47
|
-
class Railtie < Rails::Railtie
|
48
|
-
initializer 'TmAPI.logger' do
|
49
|
-
TMAPI.logger = Rails.logger
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|