onesky-ruby 0.0.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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.rspec +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +67 -0
- data/Rakefile +1 -0
- data/lib/onesky/client.rb +36 -0
- data/lib/onesky/errors.rb +30 -0
- data/lib/onesky/helpers/request.rb +82 -0
- data/lib/onesky/project.rb +38 -0
- data/lib/onesky/resources/locale.rb +9 -0
- data/lib/onesky/resources/project/base.rb +23 -0
- data/lib/onesky/resources/project/file_mgt.rb +25 -0
- data/lib/onesky/resources/project/import_task.rb +15 -0
- data/lib/onesky/resources/project/order.rb +19 -0
- data/lib/onesky/resources/project/quotation.rb +11 -0
- data/lib/onesky/resources/project/translation.rb +23 -0
- data/lib/onesky/resources/project.rb +17 -0
- data/lib/onesky/resources/project_group.rb +25 -0
- data/lib/onesky/resources/project_type.rb +9 -0
- data/lib/onesky/restclient.rb +38 -0
- data/lib/onesky/version.rb +3 -0
- data/lib/onesky.rb +4 -0
- data/onesky-ruby.gemspec +27 -0
- data/spec/fixture/en.yml +3 -0
- data/spec/onesky/client_spec.rb +13 -0
- data/spec/onesky/helpers/request_spec.rb +51 -0
- data/spec/onesky/resources/locale_spec.rb +18 -0
- data/spec/onesky/resources/project/base_spec.rb +49 -0
- data/spec/onesky/resources/project/file_spec.rb +47 -0
- data/spec/onesky/resources/project/import_task_spec.rb +31 -0
- data/spec/onesky/resources/project/order_spec.rb +45 -0
- data/spec/onesky/resources/project/quotation_spec.rb +23 -0
- data/spec/onesky/resources/project/translation_spec.rb +59 -0
- data/spec/onesky/resources/project_group_spec.rb +63 -0
- data/spec/onesky/resources/project_spec.rb +41 -0
- data/spec/onesky/resources/project_type_spec.rb +18 -0
- data/spec/spec_helper.rb +18 -0
- metadata +167 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 07702d69f7f7c3651594e79cf6dbd6e3bdf35205
|
4
|
+
data.tar.gz: f4bfd6c6a08a1b2ad6747d317bd676bd175989e7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6f995fba3cc6aa9486a467474ed9b041fb4132a1222c3a787699ed0da7a718aa74e6bb1d8a3aa4869036a8cfbc0c47579dcdb9327a11351cdb7f4abcab1bdffa
|
7
|
+
data.tar.gz: 182b75526c85377c628084bf88920d605aff30af196e90fd1514b89c5835e531a6f5f4f4bb18f41022933b34e0d7e1162a3ca8180eaed6b42f1e41f8ed9b296b
|
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Victor Lam
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
# OneSky - Ruby client
|
2
|
+
|
3
|
+
Ruby client for [OneSky](http://www.oneskyapp.com) [Platform API](/onesky/api-documentation-platform)
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'onesky-ruby'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install onesky-ruby
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
```Ruby
|
22
|
+
require 'onesky'
|
23
|
+
|
24
|
+
# Create client
|
25
|
+
client = Onesky::Client.new('<api_key>', '<api_secret>')
|
26
|
+
|
27
|
+
# list available locales
|
28
|
+
resp = JSON.parse(client.list_locale)
|
29
|
+
p resp['data']
|
30
|
+
|
31
|
+
# list project groups
|
32
|
+
resp = JSON.parse(client.list_project_group)
|
33
|
+
p resp['data']
|
34
|
+
|
35
|
+
# show project group details
|
36
|
+
project_group_id = 1
|
37
|
+
resp = JSON.parse(client.show_project_group project_group_id)
|
38
|
+
p resp['data']
|
39
|
+
|
40
|
+
# list projects
|
41
|
+
resp = JSON.parse(client.list_project project_group_id)
|
42
|
+
p resp['data']
|
43
|
+
|
44
|
+
### Work with Project
|
45
|
+
|
46
|
+
# show project details
|
47
|
+
project_id = 3
|
48
|
+
project = client.porject(project_id)
|
49
|
+
resp = JSON.parse(project.show)
|
50
|
+
p resp['data']
|
51
|
+
|
52
|
+
# upload file
|
53
|
+
resp = project.upload_file(file: 'path/to/string/file', file_format: 'RUBY_YAML')
|
54
|
+
resp.code # => 201
|
55
|
+
|
56
|
+
# download translation
|
57
|
+
resp = project.export_translation(source_file_name: 'en.yml', locale: 'ja')
|
58
|
+
File.open('path/to/target/file', 'w') { |file| file.write(resp)}
|
59
|
+
```
|
60
|
+
|
61
|
+
## Contributing
|
62
|
+
|
63
|
+
1. Fork it ( http://github.com/<my-github-username>/onesky-ruby/fork )
|
64
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
65
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
66
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
67
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'digest'
|
2
|
+
|
3
|
+
require 'onesky/resources/locale'
|
4
|
+
require 'onesky/resources/project_type'
|
5
|
+
require 'onesky/resources/project_group'
|
6
|
+
require 'onesky/resources/project'
|
7
|
+
require 'onesky/helpers/request'
|
8
|
+
require 'onesky/project'
|
9
|
+
|
10
|
+
module Onesky
|
11
|
+
class Client
|
12
|
+
include Resources::Locale
|
13
|
+
include Resources::ProjectType
|
14
|
+
include Resources::ProjectGroup
|
15
|
+
include Resources::Project
|
16
|
+
include Helpers::Request
|
17
|
+
|
18
|
+
attr_accessor :api_key, :api_secret, :project_id
|
19
|
+
|
20
|
+
def initialize(key, secret)
|
21
|
+
@api_key = key
|
22
|
+
@api_secret = secret
|
23
|
+
end
|
24
|
+
|
25
|
+
def auth_hash
|
26
|
+
now = Time.now.to_i
|
27
|
+
|
28
|
+
{
|
29
|
+
api_key: @api_key,
|
30
|
+
timestamp: now,
|
31
|
+
dev_hash: Digest::MD5.hexdigest(now.to_s + @api_secret)
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Onesky
|
2
|
+
module Errors
|
3
|
+
|
4
|
+
class OneskyError < StandardError
|
5
|
+
attr_accessor :response
|
6
|
+
def initialize(resp)
|
7
|
+
@response = resp
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# Raise error of 400 Bad Request
|
12
|
+
class BadRequestError < OneskyError; end
|
13
|
+
|
14
|
+
# Raise error of 401 Unauthorized
|
15
|
+
class UnauthorizedError < OneskyError; end
|
16
|
+
|
17
|
+
# Raise error of 403 Forbidden
|
18
|
+
class ForbiddenError < OneskyError; end
|
19
|
+
|
20
|
+
# Raise error of 404 Not Found
|
21
|
+
class NotFoundError < OneskyError; end
|
22
|
+
|
23
|
+
# Raise error of 405 Method Not Allowed
|
24
|
+
class MethodNotAllowedError < OneskyError; end
|
25
|
+
|
26
|
+
# Raise error of 500 Internal Server Error
|
27
|
+
class InternalServerError < OneskyError; end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
|
3
|
+
module Helpers
|
4
|
+
module Request
|
5
|
+
|
6
|
+
ENDPOINT = 'https://platform.api.onesky.io'
|
7
|
+
VERSION = 1
|
8
|
+
|
9
|
+
protected
|
10
|
+
|
11
|
+
def get(path, params = {})
|
12
|
+
uri = uri_prefix + path
|
13
|
+
RestClient.get(uri, params: auth_hash.merge(params)) do |resp, req, result|
|
14
|
+
handle_error(resp)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def post(path, body_hash)
|
19
|
+
uri = uri_prefix + path
|
20
|
+
RestClient.post(uri, body_hash.to_json, content_type: :json, params: auth_hash) do |resp, req, result|
|
21
|
+
handle_error(resp)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def post_multipart(path, body_hash)
|
26
|
+
uri = uri_prefix + path
|
27
|
+
RestClient.post(uri, body_hash.merge({multipart: true}), params: auth_hash) do |resp, req, result|
|
28
|
+
handle_error(resp)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def put(path, body_hash)
|
33
|
+
uri = uri_prefix + path
|
34
|
+
RestClient.put(uri, body_hash.to_json, content_type: :json, params: auth_hash) do |resp, req, result|
|
35
|
+
handle_error(resp)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def delete(path, params = {})
|
40
|
+
uri = uri_prefix + path
|
41
|
+
RestClient.delete(uri, params: auth_hash.merge(params)) do |resp, req, result|
|
42
|
+
handle_error(resp)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def uri_prefix
|
49
|
+
"#{ENDPOINT}/#{VERSION}"
|
50
|
+
end
|
51
|
+
|
52
|
+
def handle_error(response)
|
53
|
+
return response if response.code.to_i < 400 # return if not error
|
54
|
+
|
55
|
+
case response.code.to_i
|
56
|
+
when 400
|
57
|
+
raise Onesky::Errors::BadRequestError.new(response), "400 Bad Request - #{extract_message(response)}"
|
58
|
+
when 401
|
59
|
+
raise Onesky::Errors::UnauthorizedError.new(response), "401 Unauthorized - #{extract_message(response)}"
|
60
|
+
when 403
|
61
|
+
raise Onesky::Errors::ForbiddenError.new(response), "403 Forbidden - #{extract_message(response)}"
|
62
|
+
when 404
|
63
|
+
raise Onesky::Errors::NotFoundError.new(response), "404 Not Found - #{extract_message(response)}"
|
64
|
+
when 405
|
65
|
+
raise Onesky::Errors::MethodNotAllowedError.new(response), "405 Method Not Allowed - #{extract_message(response)}"
|
66
|
+
when 500
|
67
|
+
raise Onesky::Errors::InternalServerError.new(response), "500 Internal Server Error - Please contact OneSky at support@oneskyapp.com"
|
68
|
+
else
|
69
|
+
raise Onesky::Errors::OneskyError.new(response), "#{response.code} Error"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def extract_message(response)
|
74
|
+
response_body = JSON.parse(response)
|
75
|
+
if response_body.has_key?('meta') && response_body['meta'].has_key?('message')
|
76
|
+
return response_body['meta']['message']
|
77
|
+
end
|
78
|
+
''
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'onesky/resources/project/base'
|
2
|
+
require 'onesky/resources/project/file_mgt'
|
3
|
+
require 'onesky/resources/project/translation'
|
4
|
+
require 'onesky/resources/project/import_task'
|
5
|
+
require 'onesky/resources/project/quotation'
|
6
|
+
require 'onesky/resources/project/order'
|
7
|
+
require 'onesky/helpers/request'
|
8
|
+
|
9
|
+
module Onesky
|
10
|
+
class Project
|
11
|
+
|
12
|
+
include Resources::Project::Base
|
13
|
+
include Resources::Project::FileMgt
|
14
|
+
include Resources::Project::Translation
|
15
|
+
include Resources::Project::ImportTask
|
16
|
+
include Resources::Project::Quotation
|
17
|
+
include Resources::Project::Order
|
18
|
+
include Helpers::Request
|
19
|
+
|
20
|
+
attr_accessor :client, :project_id
|
21
|
+
|
22
|
+
def initialize(client, id)
|
23
|
+
@client = client
|
24
|
+
@project_id = id
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def project_path
|
30
|
+
"/projects/#{@project_id}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def auth_hash
|
34
|
+
@client.auth_hash
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Resources
|
2
|
+
module Project
|
3
|
+
module Base
|
4
|
+
|
5
|
+
def show
|
6
|
+
get(project_path)
|
7
|
+
end
|
8
|
+
|
9
|
+
def update(params)
|
10
|
+
put(project_path, params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def remove
|
14
|
+
delete(project_path)
|
15
|
+
end
|
16
|
+
|
17
|
+
def list_language
|
18
|
+
get("#{project_path}/languages")
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Resources
|
2
|
+
module Project
|
3
|
+
module FileMgt
|
4
|
+
|
5
|
+
def list_file
|
6
|
+
get("#{project_path}/files")
|
7
|
+
end
|
8
|
+
|
9
|
+
def upload_file(params)
|
10
|
+
file = params[:file]
|
11
|
+
if file.is_a?(String)
|
12
|
+
raise IOError, 'File does not exist' unless File.exists?(file)
|
13
|
+
params[:file] = File.new(file, 'rt')
|
14
|
+
end
|
15
|
+
|
16
|
+
post_multipart("#{project_path}/files", params)
|
17
|
+
end
|
18
|
+
|
19
|
+
def delete_file(params)
|
20
|
+
delete("#{project_path}/files", params)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Resources
|
2
|
+
module Project
|
3
|
+
module ImportTask
|
4
|
+
|
5
|
+
def list_import_task(params = {})
|
6
|
+
get("#{project_path}/import-tasks", params)
|
7
|
+
end
|
8
|
+
|
9
|
+
def show_import_task(import_task_id)
|
10
|
+
get("#{project_path}/import-tasks/#{import_task_id}")
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Resources
|
2
|
+
module Project
|
3
|
+
module Order
|
4
|
+
|
5
|
+
def list_order(params = {})
|
6
|
+
get("#{project_path}/orders", params)
|
7
|
+
end
|
8
|
+
|
9
|
+
def show_order(order_id)
|
10
|
+
get("#{project_path}/orders/#{order_id}")
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_order(params)
|
14
|
+
post("#{project_path}/orders", params)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Resources
|
2
|
+
module Project
|
3
|
+
module Translation
|
4
|
+
|
5
|
+
def export_translation(params)
|
6
|
+
get("#{project_path}/translations", params)
|
7
|
+
end
|
8
|
+
|
9
|
+
def export_multilingual(params)
|
10
|
+
get("#{project_path}/translations/multilingual", params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def export_app_description(params)
|
14
|
+
get("#{project_path}/translations/app-descriptions", params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def get_translation_status(params)
|
18
|
+
get("#{project_path}/translations/status", params)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Resources
|
2
|
+
module Project
|
3
|
+
|
4
|
+
def list_project(project_group_id)
|
5
|
+
get("/project-groups/#{project_group_id}/projects")
|
6
|
+
end
|
7
|
+
|
8
|
+
def create_project(project_group_id, params)
|
9
|
+
post("/project-groups/#{project_group_id}/projects", params)
|
10
|
+
end
|
11
|
+
|
12
|
+
def project(project_id)
|
13
|
+
Onesky::Project.new(self, project_id)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Resources
|
2
|
+
module ProjectGroup
|
3
|
+
|
4
|
+
def list_project_group
|
5
|
+
get('/project-groups')
|
6
|
+
end
|
7
|
+
|
8
|
+
def show_project_group(project_group_id)
|
9
|
+
get("/project-groups/#{project_group_id}")
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_project_group(params)
|
13
|
+
post('/project-groups', params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def delete_project_group(project_group_id)
|
17
|
+
delete("/project-groups/#{project_group_id}")
|
18
|
+
end
|
19
|
+
|
20
|
+
def list_project_group_languages(project_group_id)
|
21
|
+
get("/project-groups/#{project_group_id}/languages")
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Monkey patching RestClient::Request.process_url_params
|
2
|
+
# To support array in URL params
|
3
|
+
# RestClient.get('http://www.example.com', params: {weekday: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']})
|
4
|
+
# => GET http://www.example.com?weekday[]=Mon&weekday[]=Tue&weekday[]=Wed&weekday[]=Thu&weekday[]=Fri
|
5
|
+
|
6
|
+
module RestClient
|
7
|
+
class Request
|
8
|
+
|
9
|
+
def process_url_params url, headers
|
10
|
+
url_params = {}
|
11
|
+
headers.delete_if do |key, value|
|
12
|
+
if 'params' == key.to_s.downcase && value.is_a?(Hash)
|
13
|
+
url_params.merge! value
|
14
|
+
true
|
15
|
+
else
|
16
|
+
false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
unless url_params.empty?
|
20
|
+
query_string = url_params.collect { |k, v| build_url_params(k, v) }.join('&')
|
21
|
+
url + "?#{query_string}"
|
22
|
+
else
|
23
|
+
url
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def build_url_params key, value
|
30
|
+
if value.is_a?(Array)
|
31
|
+
value.map { |v| "#{key.to_s}[]=#{CGI::escape(v.to_s)}" }.join('&')
|
32
|
+
else
|
33
|
+
"#{key.to_s}=#{CGI::escape(value.to_s)}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
data/lib/onesky.rb
ADDED
data/onesky-ruby.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'onesky/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "onesky-ruby"
|
8
|
+
spec.version = Onesky::VERSION
|
9
|
+
spec.authors = ["Victor Lam"]
|
10
|
+
spec.email = ["victorebox@yahoo.com.hk"]
|
11
|
+
spec.summary = "To interact with OneSky Platform API"
|
12
|
+
spec.description = "Ruby wrapper for OneSky API"
|
13
|
+
spec.homepage = "http://github.com/onesky/onesky-ruby"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency 'rest-client', '~> 1.7'
|
22
|
+
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.5"
|
24
|
+
spec.add_development_dependency "rake", "~> 10.3"
|
25
|
+
spec.add_development_dependency "rspec", "~> 3.1"
|
26
|
+
spec.add_development_dependency "webmock", "~> 1.19"
|
27
|
+
end
|
data/spec/fixture/en.yml
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Onesky::Client do
|
4
|
+
|
5
|
+
let(:client) {Onesky::Client.new('api_key', 'api_secret')}
|
6
|
+
|
7
|
+
it 'should able to set api_key, api_secret' do
|
8
|
+
expect(client.api_key).to eq 'api_key'
|
9
|
+
expect(client.api_secret).to eq 'api_secret'
|
10
|
+
expect(client.auth_hash).to be_an_instance_of(Hash)
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Helpers::Request' do
|
4
|
+
|
5
|
+
let(:api_key) {''}
|
6
|
+
let(:api_secret) {''}
|
7
|
+
let(:client) {Onesky::Client.new(api_key, api_secret)}
|
8
|
+
let(:project_id) {1}
|
9
|
+
let(:project) {client.project(project_id)}
|
10
|
+
|
11
|
+
describe '#get' do
|
12
|
+
it 'should raise error for error response code' do
|
13
|
+
stub_request(:get, full_path_with_auth_hash("/locales", api_key, api_secret))
|
14
|
+
.to_return(status: 400, body: {meta: {code: 400, message: 'error message'}}.to_json)
|
15
|
+
expect {client.list_locale}.to raise_error(Onesky::Errors::BadRequestError, '400 Bad Request - error message')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#post' do
|
20
|
+
it 'should return response on error' do
|
21
|
+
stub_request(:post, full_path_with_auth_hash("/project-groups", api_key, api_secret))
|
22
|
+
.to_return(status: 400, body: {meta: {code: 400, message: 'error message'}}.to_json)
|
23
|
+
expect {client.create_project_group({name: 'TEST'})}.to raise_error(Onesky::Errors::BadRequestError, '400 Bad Request - error message')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '#post_multipart' do
|
28
|
+
it 'should return response on error' do
|
29
|
+
stub_request(:post, full_path_with_auth_hash("/projects/#{project_id}/files", api_key, api_secret))
|
30
|
+
.to_return(status: 400, body: {meta: {code: 400, message: 'error message'}}.to_json)
|
31
|
+
expect {project.upload_file({file: 'spec/fixture/en.yml', file_format: 'RUBY_YAML'})}.to raise_error(Onesky::Errors::BadRequestError, '400 Bad Request - error message')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#put' do
|
36
|
+
it 'should return response on error' do
|
37
|
+
stub_request(:put, full_path_with_auth_hash("/projects/#{project_id}", api_key, api_secret))
|
38
|
+
.to_return(status: 400, body: {meta: {code: 400, message: 'error message'}}.to_json)
|
39
|
+
expect {project.update({name: 'NEW NAME'})}.to raise_error(Onesky::Errors::BadRequestError, '400 Bad Request - error message')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '#delete' do
|
44
|
+
it 'should return response on error' do
|
45
|
+
stub_request(:delete, full_path_with_auth_hash("/projects/#{project_id}", api_key, api_secret))
|
46
|
+
.to_return(status: 400, body: {meta: {code: 400, message: 'error message'}}.to_json)
|
47
|
+
expect {project.remove}.to raise_error(Onesky::Errors::BadRequestError, '400 Bad Request - error message')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Locale' do
|
4
|
+
|
5
|
+
let(:api_key) {'api_key'}
|
6
|
+
let(:api_secret) {'api_secret'}
|
7
|
+
let(:client) {Onesky::Client.new(api_key, api_secret)}
|
8
|
+
|
9
|
+
describe 'list_locale' do
|
10
|
+
it 'should list all available locales' do
|
11
|
+
stub_request(:get, full_path_with_auth_hash('/locales', api_key, api_secret))
|
12
|
+
.to_return(body: {})
|
13
|
+
response = client.list_locale
|
14
|
+
expect(response).to be_an_instance_of(Hash)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Project::Base' do
|
4
|
+
|
5
|
+
let(:api_key) {'api_key'}
|
6
|
+
let(:api_secret) {'api_secret'}
|
7
|
+
let(:client) {Onesky::Client.new(api_key, api_secret)}
|
8
|
+
let(:project_id) {1}
|
9
|
+
let(:project) {client.project(project_id)}
|
10
|
+
|
11
|
+
describe 'show' do
|
12
|
+
it 'should show project information' do
|
13
|
+
stub_request(:get, full_path_with_auth_hash("/projects/#{project_id}", api_key, api_secret))
|
14
|
+
.to_return(body: {})
|
15
|
+
response = project.show
|
16
|
+
expect(response).to be_an_instance_of(Hash)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'update' do
|
21
|
+
let(:params) {{name: 'New name', description: 'New project description'}}
|
22
|
+
|
23
|
+
it 'should update project information' do
|
24
|
+
stub_request(:put, full_path_with_auth_hash("/projects/#{project_id}", api_key, api_secret))
|
25
|
+
.to_return(status: 200)
|
26
|
+
response = project.update(params)
|
27
|
+
expect(response.code).to eq(200)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe 'remove' do
|
32
|
+
it 'should delete a project' do
|
33
|
+
stub_request(:delete, full_path_with_auth_hash("/projects/#{project_id}", api_key, api_secret))
|
34
|
+
.to_return(status: 200)
|
35
|
+
response = project.remove
|
36
|
+
expect(response.code).to eq(200)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe 'list_language' do
|
41
|
+
it 'should list languages of project' do
|
42
|
+
stub_request(:get, full_path_with_auth_hash("/projects/#{project_id}/languages", api_key, api_secret))
|
43
|
+
.to_return(body: {})
|
44
|
+
response = project.list_language
|
45
|
+
expect(response).to be_an_instance_of(Hash)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Project::File' do
|
4
|
+
|
5
|
+
let(:api_key) {'api_key'}
|
6
|
+
let(:api_secret) {'api_secret'}
|
7
|
+
let(:client) {Onesky::Client.new(api_key, api_secret)}
|
8
|
+
let(:project_id) {1}
|
9
|
+
let(:project) {client.project(project_id)}
|
10
|
+
|
11
|
+
describe 'list_file' do
|
12
|
+
it 'should list files in project' do
|
13
|
+
stub_request(:get, full_path_with_auth_hash("/projects/#{project_id}/files", api_key, api_secret))
|
14
|
+
.to_return(body: {})
|
15
|
+
response = project.list_file
|
16
|
+
expect(response).to be_an_instance_of(Hash)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'upload_file' do
|
21
|
+
let(:params) {{file: 'spec/fixture/en.yml', file_format: 'RUBY_YAML'}}
|
22
|
+
|
23
|
+
it 'should upload file to project' do
|
24
|
+
stub_request(:post, full_path_with_auth_hash("/projects/#{project_id}/files", api_key, api_secret))
|
25
|
+
.to_return(body: {})
|
26
|
+
response = project.upload_file(params)
|
27
|
+
expect(response).to be_an_instance_of(Hash)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should raise error when file does not exist' do
|
31
|
+
expect {project.upload_file(file: 'spec/fixture/no_file.yml')}.to raise_error(IOError, 'File does not exist')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe 'delete_file' do
|
36
|
+
let(:params) {{file_name: 'en.yml'}}
|
37
|
+
let(:params_as_query_string) {'&file_name=en.yml'}
|
38
|
+
|
39
|
+
it 'should delete file from project' do
|
40
|
+
stub_request(:delete, full_path_with_auth_hash("/projects/#{project_id}/files", api_key, api_secret) + params_as_query_string)
|
41
|
+
.to_return(body: {})
|
42
|
+
response = project.delete_file(params)
|
43
|
+
expect(response).to be_an_instance_of(Hash)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Project::ImportTask' do
|
4
|
+
|
5
|
+
let(:api_key) {'api_key'}
|
6
|
+
let(:api_secret) {'api_secret'}
|
7
|
+
let(:client) {Onesky::Client.new(api_key, api_secret)}
|
8
|
+
let(:project_id) {1}
|
9
|
+
let(:project) {client.project(project_id)}
|
10
|
+
|
11
|
+
describe 'list_import_task' do
|
12
|
+
it 'should list import tasks of the project' do
|
13
|
+
stub_request(:get, full_path_with_auth_hash("/projects/#{project_id}/import-tasks", api_key, api_secret))
|
14
|
+
.to_return(body: {})
|
15
|
+
response = project.list_import_task
|
16
|
+
expect(response).to be_an_instance_of(Hash)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'show_import_task' do
|
21
|
+
let(:import_task_id) {1}
|
22
|
+
|
23
|
+
it 'should show an import task details' do
|
24
|
+
stub_request(:get, full_path_with_auth_hash("/projects/#{project_id}/import-tasks/#{import_task_id}", api_key, api_secret))
|
25
|
+
.to_return(body: {})
|
26
|
+
response = project.show_import_task(import_task_id)
|
27
|
+
expect(response).to be_an_instance_of(Hash)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Project::Order' do
|
4
|
+
|
5
|
+
let(:api_key) {'api_key'}
|
6
|
+
let(:api_secret) {'api_secret'}
|
7
|
+
let(:client) {Onesky::Client.new(api_key, api_secret)}
|
8
|
+
let(:project_id) {1}
|
9
|
+
let(:project) {client.project(project_id)}
|
10
|
+
|
11
|
+
describe 'list_order' do
|
12
|
+
it 'should list orders in project' do
|
13
|
+
stub_request(:get, full_path_with_auth_hash("/projects/#{project_id}/orders", api_key, api_secret))
|
14
|
+
.to_return(status: 200, body: {})
|
15
|
+
response = project.list_order
|
16
|
+
expect(response).to be_an_instance_of(Hash)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'show_order' do
|
21
|
+
let(:order_id) {1}
|
22
|
+
|
23
|
+
it 'should show an order details' do
|
24
|
+
stub_request(:get, full_path_with_auth_hash("/projects/#{project_id}/orders/#{order_id}", api_key, api_secret))
|
25
|
+
.to_return(status: 200, body: {})
|
26
|
+
response = project.show_order(order_id)
|
27
|
+
expect(response).to be_an_instance_of(Hash)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe 'create_order' do
|
32
|
+
let(:files) {['en.yml', 'en2.yml']}
|
33
|
+
let(:to_locale) {'ja'}
|
34
|
+
let(:params) {{files: files, to_locale: to_locale}}
|
35
|
+
|
36
|
+
it 'should create an order' do
|
37
|
+
stub_request(:post, full_path_with_auth_hash("/projects/#{project_id}/orders", api_key, api_secret))
|
38
|
+
.with(body: params.to_json, headers: {'Content_Type' => 'application/json'})
|
39
|
+
.to_return(status: 200, body: {})
|
40
|
+
response = project.create_order(params)
|
41
|
+
expect(response).to be_an_instance_of(Hash)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Project::Quotation' do
|
4
|
+
|
5
|
+
let(:api_key) {'api_key'}
|
6
|
+
let(:api_secret) {'api_secret'}
|
7
|
+
let(:client) {Onesky::Client.new(api_key, api_secret)}
|
8
|
+
let(:project_id) {1}
|
9
|
+
let(:project) {client.project(project_id)}
|
10
|
+
|
11
|
+
describe 'show_quotation' do
|
12
|
+
let(:params) {{files: ['en.yml', 'en2.yml'], to_locale: 'ja'}}
|
13
|
+
let(:params_as_query_string) {'&files[]=en.yml&files[]=en2.yml&to_locale=ja'}
|
14
|
+
|
15
|
+
it 'should show quotation details' do
|
16
|
+
stub_request(:get, full_path_with_auth_hash("/projects/#{project_id}/quotations", api_key, api_secret) + params_as_query_string)
|
17
|
+
.to_return(status: 200)
|
18
|
+
response = project.show_quotation(params)
|
19
|
+
expect(response.code).to eq(200)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Project::Translation' do
|
4
|
+
|
5
|
+
let(:api_key) {'api_key'}
|
6
|
+
let(:api_secret) {'api_secret'}
|
7
|
+
let(:client) {Onesky::Client.new(api_key, api_secret)}
|
8
|
+
let(:project_id) {1}
|
9
|
+
let(:project) {client.project(project_id)}
|
10
|
+
|
11
|
+
describe 'export_translation' do
|
12
|
+
let(:params) {{source_file_name: 'en.yml', locale: 'ja'}}
|
13
|
+
let(:params_as_query_string) {'&source_file_name=en.yml&locale=ja'}
|
14
|
+
|
15
|
+
it 'should export translation' do
|
16
|
+
stub_request(:get, full_path_with_auth_hash("/projects/#{project_id}/translations", api_key, api_secret) + params_as_query_string)
|
17
|
+
.to_return(status: 200, body: 'file content')
|
18
|
+
response = project.export_translation(params)
|
19
|
+
expect(response.code).to eq(200)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'export_multilingual' do
|
24
|
+
let(:params) {{source_file_name: 'en.yml'}}
|
25
|
+
let(:params_as_query_string) {'&source_file_name=en.yml'}
|
26
|
+
|
27
|
+
it 'should export multilingual' do
|
28
|
+
stub_request(:get, full_path_with_auth_hash("/projects/#{project_id}/translations/multilingual", api_key, api_secret) + params_as_query_string)
|
29
|
+
.to_return(status: 200, body: 'file content')
|
30
|
+
response = project.export_multilingual(params)
|
31
|
+
expect(response.code).to eq(200)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe 'export_app_description' do
|
36
|
+
let(:params) {{locale: 'ja'}}
|
37
|
+
let(:params_as_query_string) {'&locale=ja'}
|
38
|
+
|
39
|
+
it 'should export app description' do
|
40
|
+
stub_request(:get, full_path_with_auth_hash("/projects/#{project_id}/translations/app-descriptions", api_key, api_secret) + params_as_query_string)
|
41
|
+
.to_return(status: 200, body: 'file content')
|
42
|
+
response = project.export_app_description(params)
|
43
|
+
expect(response.code).to eq(200)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe 'get_translation_status' do
|
48
|
+
let(:params) {{file_name: 'en.yml', locale: 'ja'}}
|
49
|
+
let(:params_as_query_string) {'&file_name=en.yml&locale=ja'}
|
50
|
+
|
51
|
+
it 'should show translation status' do
|
52
|
+
stub_request(:get, full_path_with_auth_hash("/projects/#{project_id}/translations/status", api_key, api_secret) + params_as_query_string)
|
53
|
+
.to_return(body: {})
|
54
|
+
response = project.get_translation_status(params)
|
55
|
+
expect(response).to be_an_instance_of(Hash)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Project Group' do
|
4
|
+
|
5
|
+
let(:api_key) {'api_key'}
|
6
|
+
let(:api_secret) {'api_secret'}
|
7
|
+
let(:client) {Onesky::Client.new(api_key, api_secret)}
|
8
|
+
|
9
|
+
describe 'list_project_group' do
|
10
|
+
it 'should list all available project group' do
|
11
|
+
stub_request(:get, full_path_with_auth_hash('/project-groups', api_key, api_secret))
|
12
|
+
.to_return(body: {})
|
13
|
+
response = client.list_project_group
|
14
|
+
expect(response).to be_an_instance_of(Hash)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'show_project_group' do
|
19
|
+
let(:project_group_id) {1}
|
20
|
+
|
21
|
+
it 'should show a project group information' do
|
22
|
+
stub_request(:get, full_path_with_auth_hash("/project-groups/#{project_group_id}", api_key, api_secret))
|
23
|
+
.to_return(body: {})
|
24
|
+
response = client.show_project_group(project_group_id)
|
25
|
+
expect(response).to be_an_instance_of(Hash)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'create_project_group' do
|
30
|
+
let(:params) {{name: 'New Project Group'}}
|
31
|
+
|
32
|
+
it 'should create a project group' do
|
33
|
+
stub_request(:post, full_path_with_auth_hash('/project-groups', api_key, api_secret))
|
34
|
+
.with(body: params.to_json, headers: {'Content_Type' => 'application/json'})
|
35
|
+
.to_return(body: {})
|
36
|
+
response = client.create_project_group(params)
|
37
|
+
expect(response).to be_an_instance_of(Hash)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe 'delete_project_group' do
|
42
|
+
let(:project_group_id) {1}
|
43
|
+
|
44
|
+
it 'should delete a project group' do
|
45
|
+
stub_request(:delete, full_path_with_auth_hash("/project-groups/#{project_group_id}", api_key, api_secret))
|
46
|
+
.to_return(body: {})
|
47
|
+
response = client.delete_project_group(project_group_id)
|
48
|
+
expect(response).to be_an_instance_of(Hash)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe 'list_project_group_languages' do
|
53
|
+
let(:project_group_id) {1}
|
54
|
+
|
55
|
+
it 'should list languages activated of a project group' do
|
56
|
+
stub_request(:get, full_path_with_auth_hash("/project-groups/#{project_group_id}/languages", api_key, api_secret))
|
57
|
+
.to_return(body: {})
|
58
|
+
response = client.list_project_group_languages(project_group_id)
|
59
|
+
expect(response).to be_an_instance_of(Hash)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Project' do
|
4
|
+
|
5
|
+
let(:api_key) {'api_key'}
|
6
|
+
let(:api_secret) {'api_secret'}
|
7
|
+
let(:client) {Onesky::Client.new(api_key, api_secret)}
|
8
|
+
|
9
|
+
describe 'list_project' do
|
10
|
+
let(:project_group_id) {1}
|
11
|
+
|
12
|
+
it 'should list all projects of a project group' do
|
13
|
+
stub_request(:get, full_path_with_auth_hash("/project-groups/#{project_group_id}/projects", api_key, api_secret))
|
14
|
+
.to_return(body: {})
|
15
|
+
response = client.list_project(project_group_id)
|
16
|
+
expect(response).to be_an_instance_of(Hash)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'create_project' do
|
21
|
+
let(:project_group_id) {1}
|
22
|
+
let(:params) {{project_type: 'website'}}
|
23
|
+
|
24
|
+
it 'should list all projects of a project group' do
|
25
|
+
stub_request(:post, full_path_with_auth_hash("/project-groups/#{project_group_id}/projects", api_key, api_secret))
|
26
|
+
.with(body: params.to_json, headers: {'Content_Type' => 'application/json'})
|
27
|
+
.to_return(body: {})
|
28
|
+
response = client.create_project(project_group_id, params)
|
29
|
+
expect(response).to be_an_instance_of(Hash)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'project' do
|
34
|
+
let(:project_id) {1}
|
35
|
+
|
36
|
+
it 'get project object' do
|
37
|
+
expect(client.project(project_id)).to be_an_instance_of(Onesky::Project)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Project Type' do
|
4
|
+
|
5
|
+
let(:api_key) {'api_key'}
|
6
|
+
let(:api_secret) {'api_secret'}
|
7
|
+
let(:client) {Onesky::Client.new(api_key, api_secret)}
|
8
|
+
|
9
|
+
describe 'list_project_type' do
|
10
|
+
it 'should list all available project type' do
|
11
|
+
stub_request(:get, full_path_with_auth_hash('/project-types', api_key, api_secret))
|
12
|
+
.to_return(body: {})
|
13
|
+
response = client.list_project_type
|
14
|
+
expect(response).to be_an_instance_of(Hash)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'digest'
|
2
|
+
require 'onesky'
|
3
|
+
require 'webmock/rspec'
|
4
|
+
WebMock.disable_net_connect!(allow_localhost: true)
|
5
|
+
|
6
|
+
def auth_query_string(api_key, api_secret)
|
7
|
+
now = Time.now.to_i
|
8
|
+
output = '?'
|
9
|
+
output += "api_key=#{api_key}"
|
10
|
+
output += "×tamp=#{now.to_s}"
|
11
|
+
output += "&dev_hash=#{Digest::MD5.hexdigest(now.to_s + api_secret)}"
|
12
|
+
|
13
|
+
output
|
14
|
+
end
|
15
|
+
|
16
|
+
def full_path_with_auth_hash(path, api_key, api_secret)
|
17
|
+
"#{Helpers::Request::ENDPOINT}/#{Helpers::Request::VERSION}#{path}#{auth_query_string(api_key, api_secret)}"
|
18
|
+
end
|
metadata
ADDED
@@ -0,0 +1,167 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: onesky-ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Victor Lam
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-10-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rest-client
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.5'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.1'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.1'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: webmock
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.19'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.19'
|
83
|
+
description: Ruby wrapper for OneSky API
|
84
|
+
email:
|
85
|
+
- victorebox@yahoo.com.hk
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- ".gitignore"
|
91
|
+
- ".rspec"
|
92
|
+
- Gemfile
|
93
|
+
- LICENSE.txt
|
94
|
+
- README.md
|
95
|
+
- Rakefile
|
96
|
+
- lib/onesky.rb
|
97
|
+
- lib/onesky/client.rb
|
98
|
+
- lib/onesky/errors.rb
|
99
|
+
- lib/onesky/helpers/request.rb
|
100
|
+
- lib/onesky/project.rb
|
101
|
+
- lib/onesky/resources/locale.rb
|
102
|
+
- lib/onesky/resources/project.rb
|
103
|
+
- lib/onesky/resources/project/base.rb
|
104
|
+
- lib/onesky/resources/project/file_mgt.rb
|
105
|
+
- lib/onesky/resources/project/import_task.rb
|
106
|
+
- lib/onesky/resources/project/order.rb
|
107
|
+
- lib/onesky/resources/project/quotation.rb
|
108
|
+
- lib/onesky/resources/project/translation.rb
|
109
|
+
- lib/onesky/resources/project_group.rb
|
110
|
+
- lib/onesky/resources/project_type.rb
|
111
|
+
- lib/onesky/restclient.rb
|
112
|
+
- lib/onesky/version.rb
|
113
|
+
- onesky-ruby.gemspec
|
114
|
+
- spec/fixture/en.yml
|
115
|
+
- spec/onesky/client_spec.rb
|
116
|
+
- spec/onesky/helpers/request_spec.rb
|
117
|
+
- spec/onesky/resources/locale_spec.rb
|
118
|
+
- spec/onesky/resources/project/base_spec.rb
|
119
|
+
- spec/onesky/resources/project/file_spec.rb
|
120
|
+
- spec/onesky/resources/project/import_task_spec.rb
|
121
|
+
- spec/onesky/resources/project/order_spec.rb
|
122
|
+
- spec/onesky/resources/project/quotation_spec.rb
|
123
|
+
- spec/onesky/resources/project/translation_spec.rb
|
124
|
+
- spec/onesky/resources/project_group_spec.rb
|
125
|
+
- spec/onesky/resources/project_spec.rb
|
126
|
+
- spec/onesky/resources/project_type_spec.rb
|
127
|
+
- spec/spec_helper.rb
|
128
|
+
homepage: http://github.com/onesky/onesky-ruby
|
129
|
+
licenses:
|
130
|
+
- MIT
|
131
|
+
metadata: {}
|
132
|
+
post_install_message:
|
133
|
+
rdoc_options: []
|
134
|
+
require_paths:
|
135
|
+
- lib
|
136
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
requirements: []
|
147
|
+
rubyforge_project:
|
148
|
+
rubygems_version: 2.2.2
|
149
|
+
signing_key:
|
150
|
+
specification_version: 4
|
151
|
+
summary: To interact with OneSky Platform API
|
152
|
+
test_files:
|
153
|
+
- spec/fixture/en.yml
|
154
|
+
- spec/onesky/client_spec.rb
|
155
|
+
- spec/onesky/helpers/request_spec.rb
|
156
|
+
- spec/onesky/resources/locale_spec.rb
|
157
|
+
- spec/onesky/resources/project/base_spec.rb
|
158
|
+
- spec/onesky/resources/project/file_spec.rb
|
159
|
+
- spec/onesky/resources/project/import_task_spec.rb
|
160
|
+
- spec/onesky/resources/project/order_spec.rb
|
161
|
+
- spec/onesky/resources/project/quotation_spec.rb
|
162
|
+
- spec/onesky/resources/project/translation_spec.rb
|
163
|
+
- spec/onesky/resources/project_group_spec.rb
|
164
|
+
- spec/onesky/resources/project_spec.rb
|
165
|
+
- spec/onesky/resources/project_type_spec.rb
|
166
|
+
- spec/spec_helper.rb
|
167
|
+
has_rdoc:
|