smartling_api 0.2.0 → 0.3.0
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/.ruby-version +1 -0
- data/.travis.yml +5 -0
- data/README.md +35 -96
- data/lib/smartling_api/clients/smartling.rb +4 -1
- data/lib/smartling_api/file.rb +21 -0
- data/lib/smartling_api/version.rb +1 -1
- data/smartling_api.gemspec +1 -1
- metadata +8 -5
- data/redbubble.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1549c7e511da6e551aa91e70c2707976fb301481
|
4
|
+
data.tar.gz: b301bd98ab189ea78f8dae633d9ce2a13458d9fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86746de96df5ee3a6cea3dfeeeaee6e8e4db71a7202785b1889205b7472c70c2a1fa20a6f31437a16c81cfae32e5f32e37c0b9105d27182e5ee74a9e981582c0
|
7
|
+
data.tar.gz: 566a3ab12ccb40dbb806b93e504451481c722642e1ab45f6b753738349f4ad30eba7c2cd77a2d864fb068c11b3c7dc5583dc1e322f4d181c3693e7fbb593a0a0
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.2.3
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,6 +1,13 @@
|
|
1
|
-
|
1
|
+
Smartling Api
|
2
|
+
=============
|
2
3
|
|
3
|
-
|
4
|
+

|
5
|
+
[](https://codeclimate.com/github/redbubble/smartling_api)
|
6
|
+
[](https://badge.fury.io/rb/smartling_api)
|
7
|
+

|
8
|
+
|
9
|
+
Overview
|
10
|
+
--------
|
4
11
|
|
5
12
|
Ruby wrapper for accessing the Smartling Translation API V2.
|
6
13
|
|
@@ -8,21 +15,31 @@ The Smartling Translation API lets developers to internationalize their website
|
|
8
15
|
|
9
16
|
[Smartling API V2](http://docs.smartling.com/pages/API/v2/)
|
10
17
|
|
11
|
-
|
18
|
+
|
19
|
+
Installation
|
20
|
+
------------
|
21
|
+
|
22
|
+
### Requirements
|
12
23
|
|
13
24
|
- ruby 2.0+
|
14
25
|
|
15
|
-
|
26
|
+
### Setup
|
16
27
|
|
17
28
|
Add this line to your application's Gemfile:
|
18
29
|
|
19
30
|
gem 'smartling_api', '0.2.0'
|
31
|
+
|
32
|
+
### Run Tests
|
33
|
+
|
34
|
+
bundle exec rspec
|
35
|
+
|
20
36
|
|
21
|
-
|
37
|
+
Usage
|
38
|
+
-----
|
22
39
|
|
23
|
-
###
|
40
|
+
### Config
|
24
41
|
|
25
|
-
You will need to configure smartling user id and secret. In Rails you would put it in an initializer file.
|
42
|
+
You will need to configure smartling user id and secret. In Rails you would put it in an initializer file. eg. `<project_home>/config/smartling_api.rb`
|
26
43
|
|
27
44
|
SmartlingApi.configure do |config|
|
28
45
|
config.id = <id>
|
@@ -34,92 +51,11 @@ You can obtain an id, secret via [Create Authentication Tokens](http://docs.smar
|
|
34
51
|
|
35
52
|
The `project_id` is optional. If you are only using a single `project_id` per application then you may add your `project_id` here. If not you will have to pass the `project_id` when you create your api call. Examples below.
|
36
53
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
### Retrieve Access Token
|
41
|
-
|
42
|
-
- [Authenticate API](http://docs.smartling.com/pages/API/v2/Authentication/Authenticate). Retrieve OAuth2 access token to be used with each api call.
|
43
|
-
|
44
|
-
|
45
|
-
> SmartlingApi::Authentication.new.access_token
|
46
|
-
=> "Token"
|
47
|
-
|
48
|
-
The Authentication API will throw `SmartlingApi::Errors::Credentials` if the Smartling id and/or secret has not been set.
|
49
|
-
|
50
|
-
## Project Api
|
51
|
-
|
52
|
-
Create a Project Api via,
|
53
|
-
|
54
|
-
@param `token`: Optional ( Will default to using authentication api to retrieve access token )
|
55
|
-
|
56
|
-
@param `project_id`: Optional ( Will default to using configured project_id )
|
57
|
-
|
58
|
-
> SmartlingApi::Project.new
|
59
|
-
or
|
60
|
-
> SmartlingApi::Project.new(token: 'token', project_id: 'project_id')
|
61
|
-
|
62
|
-
|
63
|
-
- [List Locales API](http://docs.smartling.com/pages/API/v2/Projects/List-Projects/). Retrieve a list of all locales available.
|
64
|
-
|
65
|
-
> SmartlingApi::Project.new.list_locales
|
66
|
-
=> { "locales" => [{ "localeId" => "de-DE", "description" => "German (Germany)" }, ...] }
|
67
|
-
|
68
|
-
|
69
|
-
## File Api
|
70
|
-
Create a Project Api via,
|
71
|
-
|
72
|
-
@param `token`: Optional ( Will default to using authentication api to retrieve access token )
|
73
|
-
|
74
|
-
@param `project_id`: Optional ( Will default to using configured project_id )
|
75
|
-
|
76
|
-
> SmartlingApi::File.new
|
77
|
-
or
|
78
|
-
> SmartlingApi::File.new(token: 'token', project_id: 'project_id')
|
79
|
-
|
80
|
-
|
81
|
-
- [Delete File API](http://docs.smartling.com/pages/API/v2/FileAPI/Delete/). Delete a file within Smartling.
|
82
|
-
|
83
|
-
@param `file_uri`: File path within Smartling to delete
|
84
|
-
|
85
|
-
> SmartlingApi::File.new.delete(file_uri: '/translations/website')
|
86
|
-
=> { "code" => "SUCCESS" }
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
- [Download Locale File API](http://docs.smartling.com/pages/API/v2/FileAPI/Download-File/Single-Locale/). Returns the content of a file for the given locale and path.
|
91
|
-
|
92
|
-
@param `file_uri`: File path within Smartling to download
|
93
|
-
|
94
|
-
@param `locale_id`: Locale Id of file to download
|
95
|
-
|
96
|
-
> SmartlingApi::File.new.download_locale(locale_id: 'fr-Fr', file_uri: '/translation/website')
|
97
|
-
=> "translations"
|
98
|
-
|
99
|
-
|
100
|
-
- [List File API](http://docs.smartling.com/pages/API/v2/FileAPI/List/). Retrieve list of files for a given project.
|
101
|
-
|
102
|
-
@param `**options`: Additional options for the given request. NOTE: If using a hash as parameters ensure all keys are symbols and then use `**options`. See Smartling API Doc for options.
|
103
|
-
|
104
|
-
> SmartlingApi::File.new.list_files(uriMask: '.json')
|
105
|
-
=> [{"fileUri" => "[/translate/file.json]", ...}]
|
106
|
-
|
107
|
-
|
108
|
-
- [Upload File API](http://docs.smartling.com/pages/API/v2/FileAPI/Upload-File/). Upload a file to the given path.
|
109
|
-
|
110
|
-
@param `file_path`: Location of file to upload
|
111
|
-
|
112
|
-
@param `file_uri`: File path within smartling
|
113
|
-
|
114
|
-
@param `file_type`: Type of file to upload. See Smartling API DOC for types.
|
115
|
-
|
116
|
-
@param `**options`: Additional options for the given request. NOTE: If using a hash as parameters ensure all keys are symbols and then use `**options`. See Smartling API Doc for options.
|
54
|
+
### Api Reference
|
117
55
|
|
118
|
-
|
119
|
-
=> { "code" => "SUCCESS" }
|
120
|
-
|
56
|
+
Reference documentation on accessing the smartling api can be found on: [Api documentation](./doc/api.md)
|
121
57
|
|
122
|
-
|
58
|
+
### Errors
|
123
59
|
|
124
60
|
SmartlingApi will handle errors according to the response received from Smartling. The errors that might be thrown on a request are,
|
125
61
|
|
@@ -131,7 +67,8 @@ SmartlingApi will handle errors according to the response received from Smartlin
|
|
131
67
|
|
132
68
|
The errors all inherit, and will default to `SmartlingApi::Errors::Client` if any other response other than 2xx or 3xx is received.
|
133
69
|
|
134
|
-
|
70
|
+
Todo
|
71
|
+
----
|
135
72
|
|
136
73
|
The following apis still need to be implemented:
|
137
74
|
|
@@ -144,20 +81,22 @@ The following apis still need to be implemented:
|
|
144
81
|
- File Api: Last Modified: Single Locale
|
145
82
|
- File Api: Last Modified: All Locales
|
146
83
|
- File Api: Import Translations
|
147
|
-
- File Api: Get Translations
|
84
|
+
- ~~File Api: Get Translations~~
|
148
85
|
- File Api: Download Translated Files: Original File
|
149
86
|
- File Api: Download Translated Files: Multiple Locales as ZIP
|
150
87
|
- File Api: Download Translated Files: All Locales as ZIP
|
151
88
|
- File Api: Download Translated Files: All Locales in one File - CSV
|
152
89
|
|
153
|
-
|
90
|
+
Maintainers
|
91
|
+
-------
|
154
92
|
|
155
|
-
[][redbubble]
|
93
|
+
[][redbubble]
|
156
94
|
|
157
95
|
smartling api is maintained and funded by [Redbubble][redbubble].
|
158
96
|
|
159
97
|
[redbubble]: https://www.redbubble.com
|
160
98
|
|
161
|
-
|
99
|
+
License
|
100
|
+
-------
|
162
101
|
|
163
102
|
Licensed under [MIT](./LICENCE.txt)
|
@@ -53,7 +53,10 @@ module SmartlingApi
|
|
53
53
|
# @return [Hash] Response returned from request
|
54
54
|
# @raise [Errors::Client] If response does not return a 2xx or 3xx
|
55
55
|
def upload(url:, token:, body:)
|
56
|
-
multipart_connection.post(url, body, header(token)).body
|
56
|
+
response = multipart_connection.post(url, body, header(token)).body
|
57
|
+
return response if response.is_a?(String)
|
58
|
+
|
59
|
+
response.fetch('response')
|
57
60
|
end
|
58
61
|
|
59
62
|
# Download a file from smartling for the given url
|
data/lib/smartling_api/file.rb
CHANGED
@@ -77,6 +77,27 @@ module SmartlingApi
|
|
77
77
|
smartling.post(url: "/files-api/v2/projects/#{project_id}/file/delete", token: token, body: { fileUri: file_uri })
|
78
78
|
end
|
79
79
|
|
80
|
+
# Temporarily uploads a file, then returns a translated version for requested locales.
|
81
|
+
#
|
82
|
+
# @see http://docs.smartling.com/pages/API/v2/FileAPI/Get-Translations/
|
83
|
+
#
|
84
|
+
# @example Get Translations
|
85
|
+
# SmartlingApi::File.new.get_translations(file: 'translations.pot', file_uri: '/translations/website.pot') #=> { "code" => "SUCCESS" }
|
86
|
+
#
|
87
|
+
# @param file_path [String] File path of contents to upload
|
88
|
+
# @param file_uri [String] File path within Smartling to base off
|
89
|
+
# @param locale_id [String] Locale id for the given file
|
90
|
+
# @param options [Hash] Additional options for the given request.
|
91
|
+
# @return [Hash] Details of tranlsations
|
92
|
+
def get_translations(file_path:, file_uri:, locale_id:, **options)
|
93
|
+
body = {
|
94
|
+
file: Faraday::UploadIO.new(file_path, 'text/plain'),
|
95
|
+
fileUri: file_uri,
|
96
|
+
}.merge(options)
|
97
|
+
|
98
|
+
smartling.upload(url: "/files-api/v2/projects/#{project_id}/locales/#{locale_id}/file/get-translations", token: token, body: body)
|
99
|
+
end
|
100
|
+
|
80
101
|
private
|
81
102
|
|
82
103
|
attr_reader :smartling, :token, :project_id
|
data/smartling_api.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["developers@redbubble.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{Wrapper for the Smartling API.}
|
13
|
-
spec.homepage = "https://
|
13
|
+
spec.homepage = "https://github.com/redbubble/smartling_api"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smartling_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Redbubble
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -116,11 +116,15 @@ extensions: []
|
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
118
|
- ".gitignore"
|
119
|
+
- ".ruby-version"
|
120
|
+
- ".travis.yml"
|
119
121
|
- Gemfile
|
120
122
|
- LICENCE.txt
|
121
123
|
- README.md
|
122
124
|
- bin/console
|
123
125
|
- bin/setup
|
126
|
+
- doc/api.md
|
127
|
+
- doc/redbubble.png
|
124
128
|
- lib/smartling_api.rb
|
125
129
|
- lib/smartling_api/authentication.rb
|
126
130
|
- lib/smartling_api/clients/smartling.rb
|
@@ -134,9 +138,8 @@ files:
|
|
134
138
|
- lib/smartling_api/file.rb
|
135
139
|
- lib/smartling_api/project.rb
|
136
140
|
- lib/smartling_api/version.rb
|
137
|
-
- redbubble.png
|
138
141
|
- smartling_api.gemspec
|
139
|
-
homepage: https://
|
142
|
+
homepage: https://github.com/redbubble/smartling_api
|
140
143
|
licenses:
|
141
144
|
- MIT
|
142
145
|
metadata: {}
|
@@ -156,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
159
|
version: '0'
|
157
160
|
requirements: []
|
158
161
|
rubyforge_project:
|
159
|
-
rubygems_version: 2.
|
162
|
+
rubygems_version: 2.4.5.1
|
160
163
|
signing_key:
|
161
164
|
specification_version: 4
|
162
165
|
summary: Wrapper for the Smartling API.
|
data/redbubble.png
DELETED
Binary file
|