tml 5.4.8 → 5.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/tml/api/client.rb +8 -4
- data/lib/tml/application.rb +3 -1
- data/lib/tml/config.rb +2 -1
- data/lib/tml/postoffice.rb +99 -0
- data/lib/tml/session.rb +14 -9
- data/lib/tml/utils.rb +6 -0
- data/lib/tml/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7bc2c8b32d5455a156eebf41a65c19b6a7cbfd9
|
4
|
+
data.tar.gz: f9ee0897ad9781e22a18dc2ba9aaf3386808e9ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47764416ebb9968bd83076755164c8189c803f9bc88d3b491ba27363b954cf1186d7b0a608e9c62b63a89d4510a9d0cd579d65d50bafef2bdf8a6df614f0e502
|
7
|
+
data.tar.gz: 334d36b8e44bde4865cf36a0eb10e7b58a2f2850990ef0ba090ac215329413d19c1369bf6efeb42f04121278f797f695ea65faeb5022f280153aba649900dde4
|
data/lib/tml/api/client.rb
CHANGED
@@ -69,9 +69,14 @@ class Tml::Api::Client < Tml::Base
|
|
69
69
|
not data['error'].nil?
|
70
70
|
end
|
71
71
|
|
72
|
+
# API Host
|
73
|
+
def host
|
74
|
+
application.host
|
75
|
+
end
|
76
|
+
|
72
77
|
# API connection
|
73
78
|
def connection
|
74
|
-
@connection ||= Faraday.new(:url =>
|
79
|
+
@connection ||= Faraday.new(:url => host) do |faraday|
|
75
80
|
faraday.request(:url_encoded) # form-encode POST params
|
76
81
|
# faraday.response :logger # log requests to STDOUT
|
77
82
|
faraday.adapter(Faraday.default_adapter) # make requests with Net::HTTP
|
@@ -187,6 +192,7 @@ class Tml::Api::Client < Tml::Base
|
|
187
192
|
def api(path, params = {}, opts = {})
|
188
193
|
# inline mode should always use API calls
|
189
194
|
if live_api_request?
|
195
|
+
params = params.merge(:access_token => access_token, :app_id => application.key)
|
190
196
|
return process_response(execute_request(path, params, opts), opts)
|
191
197
|
end
|
192
198
|
|
@@ -249,10 +255,8 @@ class Tml::Api::Client < Tml::Base
|
|
249
255
|
|
250
256
|
path = prepare_api_path(path)
|
251
257
|
|
252
|
-
params = params.merge(:access_token => access_token, :app_id => application.key)
|
253
|
-
|
254
258
|
@compressed = false
|
255
|
-
trace_api_call(path, params, opts.merge(:host =>
|
259
|
+
trace_api_call(path, params, opts.merge(:host => host)) do
|
256
260
|
begin
|
257
261
|
if opts[:method] == :post
|
258
262
|
response = connection.post(path, params)
|
data/lib/tml/application.rb
CHANGED
@@ -38,7 +38,7 @@ class Tml::Application < Tml::Base
|
|
38
38
|
CDN_HOST = 'https://cdn.translationexchange.com'
|
39
39
|
# CDN_HOST = 'https://trex-snapshots.s3-us-west-1.amazonaws.com'
|
40
40
|
|
41
|
-
attributes :host, :cdn_host, :id, :key, :access_token,
|
41
|
+
attributes :host, :cdn_host, :id, :key, :access_token, :name, :description, :threshold, :default_locale, :default_level
|
42
42
|
has_many :features, :languages, :languages_by_locale, :sources, :tokens, :css, :shortcuts, :translations, :extensions
|
43
43
|
has_many :ignored_keys
|
44
44
|
|
@@ -56,10 +56,12 @@ class Tml::Application < Tml::Base
|
|
56
56
|
access_token
|
57
57
|
end
|
58
58
|
|
59
|
+
# API host
|
59
60
|
def host
|
60
61
|
super || API_HOST
|
61
62
|
end
|
62
63
|
|
64
|
+
# CDN host
|
63
65
|
def cdn_host
|
64
66
|
super || CDN_HOST
|
65
67
|
end
|
data/lib/tml/config.rb
CHANGED
@@ -75,7 +75,7 @@ module Tml
|
|
75
75
|
# The class can be extended with a different implementation, as long as the interface is supported
|
76
76
|
class Config
|
77
77
|
# Configuration Attributes
|
78
|
-
attr_accessor :enabled, :locale, :default_level, :format, :application, :context_rules, :logger, :cache, :default_tokens, :localization
|
78
|
+
attr_accessor :enabled, :locale, :default_level, :format, :application, :postoffice, :context_rules, :logger, :cache, :default_tokens, :localization
|
79
79
|
attr_accessor :auto_init, :source_separator
|
80
80
|
|
81
81
|
# Used by Rails and Sinatra extensions
|
@@ -119,6 +119,7 @@ module Tml
|
|
119
119
|
@current_user_method = :current_user
|
120
120
|
|
121
121
|
@application = nil
|
122
|
+
@postoffice = nil
|
122
123
|
|
123
124
|
@translator_options = {
|
124
125
|
debug: false,
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#--
|
3
|
+
# Copyright (c) 2016 Translation Exchange, Inc
|
4
|
+
#
|
5
|
+
# _______ _ _ _ ______ _
|
6
|
+
# |__ __| | | | | (_) | ____| | |
|
7
|
+
# | |_ __ __ _ _ __ ___| | __ _| |_ _ ___ _ __ | |__ __ _____| |__ __ _ _ __ __ _ ___
|
8
|
+
# | | '__/ _` | '_ \/ __| |/ _` | __| |/ _ \| '_ \| __| \ \/ / __| '_ \ / _` | '_ \ / _` |/ _ \
|
9
|
+
# | | | | (_| | | | \__ \ | (_| | |_| | (_) | | | | |____ > < (__| | | | (_| | | | | (_| | __/
|
10
|
+
# |_|_| \__,_|_| |_|___/_|\__,_|\__|_|\___/|_| |_|______/_/\_\___|_| |_|\__,_|_| |_|\__, |\___|
|
11
|
+
# __/ |
|
12
|
+
# |___/
|
13
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
14
|
+
# a copy of this software and associated documentation files (the
|
15
|
+
# "Software"), to deal in the Software without restriction, including
|
16
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
17
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
18
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
19
|
+
# the following conditions:
|
20
|
+
#
|
21
|
+
# The above copyright notice and this permission notice shall be
|
22
|
+
# included in all copies or substantial portions of the Software.
|
23
|
+
#
|
24
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
25
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
26
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
27
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
28
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
29
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
30
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
31
|
+
#++
|
32
|
+
|
33
|
+
module Tml
|
34
|
+
|
35
|
+
class << self
|
36
|
+
attr_accessor :postoffice
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.postoffice
|
40
|
+
@postoffice ||= begin
|
41
|
+
po_config = Tml.config.postoffice || {}
|
42
|
+
Tml::Postoffice.new(
|
43
|
+
key: po_config[:key],
|
44
|
+
token: po_config[:token],
|
45
|
+
host: po_config[:host]
|
46
|
+
)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
class Postoffice < Tml::Base
|
51
|
+
|
52
|
+
PO_HOST = 'https://postoffice.translationexchange.com'
|
53
|
+
API_VERSION = 'v1'
|
54
|
+
|
55
|
+
attributes :host, :key, :access_token
|
56
|
+
|
57
|
+
# API host
|
58
|
+
def host
|
59
|
+
super || PO_HOST
|
60
|
+
end
|
61
|
+
|
62
|
+
# API token
|
63
|
+
def token
|
64
|
+
access_token
|
65
|
+
end
|
66
|
+
|
67
|
+
# Postoffice API client
|
68
|
+
def deliver(to, template, tokens = {}, options = {})
|
69
|
+
if key.blank?
|
70
|
+
Tml.logger.error("Failed to deliver #{template} to #{to} - PostOffice has not been configured")
|
71
|
+
return
|
72
|
+
end
|
73
|
+
|
74
|
+
Tml.logger.debug("Delivering #{template} to #{to}")
|
75
|
+
params = {
|
76
|
+
client_id: key,
|
77
|
+
template: template,
|
78
|
+
tokens: tokens,
|
79
|
+
to: to,
|
80
|
+
via: options[:via],
|
81
|
+
from: options[:from],
|
82
|
+
locale: options[:locale],
|
83
|
+
first_name: options[:first_name],
|
84
|
+
last_name: options[:last_name],
|
85
|
+
name: options[:name]
|
86
|
+
}
|
87
|
+
params = Tml::Utils.remove_nils(params)
|
88
|
+
api_client.execute_request("#{host}/api/#{API_VERSION}/deliver", params, {:method => :post})
|
89
|
+
end
|
90
|
+
|
91
|
+
private
|
92
|
+
|
93
|
+
# Create API client
|
94
|
+
def api_client
|
95
|
+
@api_client ||= Tml.config.api_client[:class].new(application: self)
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
end
|
data/lib/tml/session.rb
CHANGED
@@ -43,22 +43,29 @@ module Tml
|
|
43
43
|
def init(opts = {})
|
44
44
|
return if Tml.config.disabled?
|
45
45
|
|
46
|
-
|
47
|
-
host = opts[:host] || Tml.config.application[:host]
|
48
|
-
cdn_host = opts[:cdn_host] || Tml.config.application[:cdn_host]
|
49
|
-
token = opts[:access_token] || opts[:token] || Tml.config.application[:token]
|
46
|
+
# Tml.logger.debug(opts.inspect)
|
50
47
|
|
51
48
|
Tml.cache.reset_version
|
52
49
|
Tml.cache.namespace = opts[:namespace]
|
53
50
|
|
51
|
+
init_application(opts)
|
52
|
+
|
53
|
+
self
|
54
|
+
end
|
55
|
+
|
56
|
+
def init_application(opts = {})
|
54
57
|
self.current_user = opts[:user]
|
55
58
|
self.current_source = opts[:source] || 'index'
|
56
59
|
self.current_locale = opts[:locale]
|
57
60
|
self.current_translator = opts[:translator]
|
58
61
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
+
app_config = Tml.config.application || {}
|
63
|
+
self.application = Tml::Application.new(
|
64
|
+
:key => opts[:key] || app_config[:key],
|
65
|
+
:access_token => opts[:access_token] || opts[:token] || app_config[:token],
|
66
|
+
:host => opts[:host] || app_config[:host],
|
67
|
+
:cdn_host => opts[:cdn_host] || app_config[:cdn_host]
|
68
|
+
).fetch
|
62
69
|
|
63
70
|
if self.current_translator
|
64
71
|
self.current_translator.application = self.application
|
@@ -66,8 +73,6 @@ module Tml
|
|
66
73
|
|
67
74
|
self.current_locale = preferred_locale(opts[:locale])
|
68
75
|
self.current_language = self.application.current_language(self.current_locale)
|
69
|
-
|
70
|
-
self
|
71
76
|
end
|
72
77
|
|
73
78
|
def preferred_locale(locales)
|
data/lib/tml/utils.rb
CHANGED
@@ -75,6 +75,12 @@ module Tml
|
|
75
75
|
hash[key.to_s] || hash[key.to_sym]
|
76
76
|
end
|
77
77
|
|
78
|
+
def self.remove_nils(hash)
|
79
|
+
return unless hash
|
80
|
+
proc = Proc.new { |k, v| v.kind_of?(Hash) ? (v.delete_if(&proc); nil) : v.blank? }
|
81
|
+
hash.delete_if(&proc)
|
82
|
+
end
|
83
|
+
|
78
84
|
def self.load_json(file_path, env = nil)
|
79
85
|
json = JSON.parse(File.read(file_path))
|
80
86
|
return json if env.nil?
|
data/lib/tml/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Berkovich
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -76,6 +76,7 @@ files:
|
|
76
76
|
- lib/tml/language_context_rule.rb
|
77
77
|
- lib/tml/languages/en.json
|
78
78
|
- lib/tml/logger.rb
|
79
|
+
- lib/tml/postoffice.rb
|
79
80
|
- lib/tml/rules_engine/evaluator.rb
|
80
81
|
- lib/tml/rules_engine/parser.rb
|
81
82
|
- lib/tml/session.rb
|