ruby-lokalise-api 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -2
  3. data/README.md +172 -10
  4. data/lib/ruby-lokalise-api.rb +2 -0
  5. data/lib/ruby-lokalise-api/client.rb +18 -0
  6. data/lib/ruby-lokalise-api/collections/base.rb +11 -10
  7. data/lib/ruby-lokalise-api/collections/contributor.rb +1 -3
  8. data/lib/ruby-lokalise-api/collections/file.rb +1 -3
  9. data/lib/ruby-lokalise-api/collections/key.rb +8 -3
  10. data/lib/ruby-lokalise-api/collections/key_comment.rb +2 -3
  11. data/lib/ruby-lokalise-api/collections/project.rb +1 -3
  12. data/lib/ruby-lokalise-api/collections/project_comment.rb +1 -3
  13. data/lib/ruby-lokalise-api/collections/project_language.rb +1 -3
  14. data/lib/ruby-lokalise-api/collections/screenshot.rb +1 -3
  15. data/lib/ruby-lokalise-api/collections/snapshot.rb +1 -3
  16. data/lib/ruby-lokalise-api/collections/system_language.rb +1 -3
  17. data/lib/ruby-lokalise-api/collections/task.rb +1 -3
  18. data/lib/ruby-lokalise-api/collections/team.rb +1 -3
  19. data/lib/ruby-lokalise-api/collections/team_user.rb +1 -3
  20. data/lib/ruby-lokalise-api/collections/translation.rb +1 -3
  21. data/lib/ruby-lokalise-api/error.rb +2 -0
  22. data/lib/ruby-lokalise-api/request.rb +11 -3
  23. data/lib/ruby-lokalise-api/resources/base.rb +51 -41
  24. data/lib/ruby-lokalise-api/resources/contributor.rb +6 -4
  25. data/lib/ruby-lokalise-api/resources/file.rb +7 -12
  26. data/lib/ruby-lokalise-api/resources/key.rb +5 -4
  27. data/lib/ruby-lokalise-api/resources/key_comment.rb +6 -4
  28. data/lib/ruby-lokalise-api/resources/project.rb +10 -7
  29. data/lib/ruby-lokalise-api/resources/project_language.rb +5 -4
  30. data/lib/ruby-lokalise-api/resources/screenshot.rb +5 -4
  31. data/lib/ruby-lokalise-api/resources/snapshot.rb +10 -5
  32. data/lib/ruby-lokalise-api/resources/task.rb +5 -4
  33. data/lib/ruby-lokalise-api/resources/team_user.rb +6 -4
  34. data/lib/ruby-lokalise-api/resources/translation.rb +5 -4
  35. data/lib/ruby-lokalise-api/rest/comments.rb +6 -6
  36. data/lib/ruby-lokalise-api/rest/contributors.rb +6 -6
  37. data/lib/ruby-lokalise-api/rest/files.rb +3 -3
  38. data/lib/ruby-lokalise-api/rest/keys.rb +9 -9
  39. data/lib/ruby-lokalise-api/rest/languages.rb +7 -7
  40. data/lib/ruby-lokalise-api/rest/projects.rb +7 -7
  41. data/lib/ruby-lokalise-api/rest/screenshots.rb +6 -6
  42. data/lib/ruby-lokalise-api/rest/snapshots.rb +5 -5
  43. data/lib/ruby-lokalise-api/rest/tasks.rb +6 -6
  44. data/lib/ruby-lokalise-api/rest/team_users.rb +5 -5
  45. data/lib/ruby-lokalise-api/rest/teams.rb +1 -1
  46. data/lib/ruby-lokalise-api/rest/translations.rb +3 -3
  47. data/lib/ruby-lokalise-api/utils/attribute_helpers.rb +19 -5
  48. data/lib/ruby-lokalise-api/utils/endpoint_helpers.rb +12 -0
  49. data/lib/ruby-lokalise-api/utils/string_utils.rb +4 -0
  50. data/lib/ruby-lokalise-api/version.rb +1 -1
  51. data/ruby-lokalise-api.gemspec +1 -0
  52. data/spec/lib/ruby-lokalise-api/rest/comments_spec.rb +22 -5
  53. data/spec/lib/ruby-lokalise-api/rest/contributors_spec.rb +35 -2
  54. data/spec/lib/ruby-lokalise-api/rest/keys_spec.rb +55 -4
  55. data/spec/lib/ruby-lokalise-api/rest/languages_spec.rb +31 -2
  56. data/spec/lib/ruby-lokalise-api/rest/projects_spec.rb +36 -2
  57. data/spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb +45 -8
  58. data/spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb +25 -2
  59. data/spec/lib/ruby-lokalise-api/rest/tasks_spec.rb +38 -2
  60. data/spec/lib/ruby-lokalise-api/rest/team_users_spec.rb +25 -2
  61. data/spec/lib/ruby-lokalise-api/rest/translations_spec.rb +17 -3
  62. metadata +17 -2
@@ -2,12 +2,14 @@ module Lokalise
2
2
  module Resources
3
3
  class KeyComment < Base
4
4
  DATA_KEY = 'Comment'.freeze
5
+ ID_KEY = 'comment'.freeze
6
+ supports :destroy
5
7
 
6
8
  class << self
7
- private
8
-
9
- def endpoint(project_id, key_id)
10
- "projects/#{project_id}/keys/#{key_id}/comments"
9
+ def endpoint(project_id, key_id, comment_id = nil)
10
+ path_from projects: project_id,
11
+ keys: key_id,
12
+ comments: comment_id
11
13
  end
12
14
  end
13
15
  end
@@ -1,16 +1,19 @@
1
1
  module Lokalise
2
2
  module Resources
3
3
  class Project < Base
4
+ supports :update, :destroy
5
+
6
+ def empty
7
+ self.class.empty @client, @path + '/empty'
8
+ end
9
+
4
10
  class << self
5
- def clear(client, project_id)
6
- put("#{endpoint(project_id)}/empty", client)['content']
11
+ def empty(client, path, *_args)
12
+ put(path, client)['content']
7
13
  end
8
14
 
9
- private
10
-
11
- def endpoint(project_id = nil)
12
- 'projects' unless project_id
13
- "projects/#{project_id}"
15
+ def endpoint(project_id = nil, action = nil)
16
+ path_from projects: [project_id, action]
14
17
  end
15
18
  end
16
19
  end
@@ -2,12 +2,13 @@ module Lokalise
2
2
  module Resources
3
3
  class ProjectLanguage < Base
4
4
  DATA_KEY = 'Language'.freeze
5
+ ID_KEY = 'lang'.freeze
6
+ supports :update, :destroy
5
7
 
6
8
  class << self
7
- private
8
-
9
- def endpoint(project_id)
10
- "projects/#{project_id}/languages"
9
+ def endpoint(project_id, language_id = nil)
10
+ path_from projects: project_id,
11
+ languages: language_id
11
12
  end
12
13
  end
13
14
  end
@@ -1,11 +1,12 @@
1
1
  module Lokalise
2
2
  module Resources
3
3
  class Screenshot < Base
4
- class << self
5
- private
4
+ supports :update, :destroy
6
5
 
7
- def endpoint(project_id)
8
- "projects/#{project_id}/screenshots"
6
+ class << self
7
+ def endpoint(project_id, screenshot_id = nil)
8
+ path_from projects: project_id,
9
+ screenshots: screenshot_id
9
10
  end
10
11
  end
11
12
  end
@@ -1,15 +1,20 @@
1
1
  module Lokalise
2
2
  module Resources
3
3
  class Snapshot < Base
4
+ supports :destroy
5
+
6
+ def restore
7
+ self.class.restore @client, @path
8
+ end
9
+
4
10
  class << self
5
- def restore(client, project_id, snapshot_id)
6
- Lokalise::Resources::Project.new post(endpoint(project_id, snapshot_id), client)
11
+ def restore(client, path, *_args)
12
+ Lokalise::Resources::Project.new post(path, client)
7
13
  end
8
14
 
9
- private
10
-
11
15
  def endpoint(project_id, snapshot_id = nil)
12
- "projects/#{project_id}/snapshots/#{snapshot_id}"
16
+ path_from projects: project_id,
17
+ snapshots: snapshot_id
13
18
  end
14
19
  end
15
20
  end
@@ -1,11 +1,12 @@
1
1
  module Lokalise
2
2
  module Resources
3
3
  class Task < Base
4
- class << self
5
- private
4
+ supports :update, :destroy
6
5
 
7
- def endpoint(project_id)
8
- "projects/#{project_id}/tasks"
6
+ class << self
7
+ def endpoint(project_id, task_id = nil)
8
+ path_from projects: project_id,
9
+ tasks: task_id
9
10
  end
10
11
  end
11
12
  end
@@ -1,11 +1,13 @@
1
1
  module Lokalise
2
2
  module Resources
3
3
  class TeamUser < Base
4
- class << self
5
- private
4
+ ID_KEY = 'user'.freeze
5
+ supports :update, :destroy
6
6
 
7
- def endpoint(team_id)
8
- "teams/#{team_id}/users"
7
+ class << self
8
+ def endpoint(team_id, team_user_id = nil)
9
+ path_from teams: team_id,
10
+ users: team_user_id
9
11
  end
10
12
  end
11
13
  end
@@ -1,11 +1,12 @@
1
1
  module Lokalise
2
2
  module Resources
3
3
  class Translation < Base
4
- class << self
5
- private
4
+ supports :update
6
5
 
7
- def endpoint(project_id)
8
- "projects/#{project_id}/translations"
6
+ class << self
7
+ def endpoint(project_id, translation_id = nil)
8
+ path_from projects: project_id,
9
+ translations: translation_id
9
10
  end
10
11
  end
11
12
  end
@@ -8,7 +8,7 @@ module Lokalise
8
8
  # @param key_id [String, Integer]
9
9
  # @param comment_id [String, Integer]
10
10
  def comment(project_id, key_id, comment_id)
11
- Lokalise::Resources::KeyComment.find self, [project_id, key_id], comment_id
11
+ c_r Lokalise::Resources::KeyComment, :find, [project_id, key_id, comment_id]
12
12
  end
13
13
 
14
14
  # Returns all comments for all keys inside the given project
@@ -18,7 +18,7 @@ module Lokalise
18
18
  # @param project_id [String]
19
19
  # @param params [Hash]
20
20
  def project_comments(project_id, params = {})
21
- Lokalise::Collections::ProjectComment.all self, params, project_id
21
+ c_r Lokalise::Collections::ProjectComment, :all, project_id, params
22
22
  end
23
23
 
24
24
  # Returns all comments for the given key inside the given project
@@ -29,7 +29,7 @@ module Lokalise
29
29
  # @param key_id [String, Integer]
30
30
  # @param params [Hash]
31
31
  def comments(project_id, key_id, params = {})
32
- Lokalise::Collections::KeyComment.all self, params, project_id, key_id
32
+ c_r Lokalise::Collections::KeyComment, :all, [project_id, key_id], params
33
33
  end
34
34
 
35
35
  # Creates one or more comments for the given key inside the given project
@@ -40,7 +40,7 @@ module Lokalise
40
40
  # @param key_id [String, Integer]
41
41
  # @param params [Hash, Array<Hash>]
42
42
  def create_comments(project_id, key_id, params)
43
- Lokalise::Resources::KeyComment.create self, [project_id, key_id], params, :comments
43
+ c_r Lokalise::Resources::KeyComment, :create, [project_id, key_id], params, :comments
44
44
  end
45
45
 
46
46
  # Deletes comment for the given key inside the given project
@@ -50,8 +50,8 @@ module Lokalise
50
50
  # @param project_id [String]
51
51
  # @param key_id [String, Integer]
52
52
  # @param comment_id [String, Integer]
53
- def delete_comment(project_id, key_id, comment_id)
54
- Lokalise::Resources::KeyComment.destroy self, [project_id, key_id], comment_id
53
+ def destroy_comment(project_id, key_id, comment_id)
54
+ c_r Lokalise::Resources::KeyComment, :destroy, [project_id, key_id, comment_id]
55
55
  end
56
56
  end
57
57
  end
@@ -7,7 +7,7 @@ module Lokalise
7
7
  # @param project_id [String]
8
8
  # @param params [Hash]
9
9
  def contributors(project_id, params = {})
10
- Lokalise::Collections::Contributor.all self, params, project_id
10
+ c_r Lokalise::Collections::Contributor, :all, project_id, params
11
11
  end
12
12
 
13
13
  # Returns a single contributor for the given project
@@ -17,7 +17,7 @@ module Lokalise
17
17
  # @param project_id [String]
18
18
  # @param contributor_id [String, Integer]
19
19
  def contributor(project_id, contributor_id)
20
- Lokalise::Resources::Contributor.find self, project_id, contributor_id
20
+ c_r Lokalise::Resources::Contributor, :find, [project_id, contributor_id]
21
21
  end
22
22
 
23
23
  # Creates one or more contributors inside the given project
@@ -27,7 +27,7 @@ module Lokalise
27
27
  # @param project_id [String]
28
28
  # @param params [Hash, Array<Hash>]
29
29
  def create_contributors(project_id, params)
30
- Lokalise::Resources::Contributor.create self, project_id, params, :contributors
30
+ c_r Lokalise::Resources::Contributor, :create, project_id, params, :contributors
31
31
  end
32
32
 
33
33
  # Updates the given contributor inside the given project
@@ -38,7 +38,7 @@ module Lokalise
38
38
  # @param contributor_id [String, Integer]
39
39
  # @param params [Hash]
40
40
  def update_contributor(project_id, contributor_id, params)
41
- Lokalise::Resources::Contributor.update self, project_id, contributor_id, params
41
+ c_r Lokalise::Resources::Contributor, :update, [project_id, contributor_id], params
42
42
  end
43
43
 
44
44
  # Deletes contributor inside the given project
@@ -47,8 +47,8 @@ module Lokalise
47
47
  # @return [Hash]
48
48
  # @param project_id [String]
49
49
  # @param contributor_id [String, Integer]
50
- def delete_contributor(project_id, contributor_id)
51
- Lokalise::Resources::Contributor.destroy self, project_id, contributor_id
50
+ def destroy_contributor(project_id, contributor_id)
51
+ c_r Lokalise::Resources::Contributor, :destroy, [project_id, contributor_id]
52
52
  end
53
53
  end
54
54
  end
@@ -7,7 +7,7 @@ module Lokalise
7
7
  # @param project_id [String]
8
8
  # @param params [Hash]
9
9
  def files(project_id, params = {})
10
- Lokalise::Collections::File.all self, params, project_id
10
+ c_r Lokalise::Collections::File, :all, project_id, params
11
11
  end
12
12
 
13
13
  # Exports translation files as .zip bundle, uploads them to Amazon S3 and returns a URL to the generated bundle. The URL is valid for a year
@@ -17,7 +17,7 @@ module Lokalise
17
17
  # @param project_id [String]
18
18
  # @param params [Hash]
19
19
  def download_files(project_id, params)
20
- Lokalise::Resources::File.download self, project_id, params
20
+ c_r Lokalise::Resources::File, :download, [project_id, 'download'], params
21
21
  end
22
22
 
23
23
  # Imports translation file to the given project. File data must base64-encoded
@@ -27,7 +27,7 @@ module Lokalise
27
27
  # @param project_id [String]
28
28
  # @param params [Hash]
29
29
  def upload_file(project_id, params)
30
- Lokalise::Resources::File.upload self, project_id, params
30
+ c_r Lokalise::Resources::File, :upload, [project_id, 'upload'], params
31
31
  end
32
32
  end
33
33
  end
@@ -7,7 +7,7 @@ module Lokalise
7
7
  # @param project_id [String]
8
8
  # @param params [Hash]
9
9
  def keys(project_id, params = {})
10
- Lokalise::Collections::Key.all self, params, project_id
10
+ c_r Lokalise::Collections::Key, :all, project_id, params
11
11
  end
12
12
 
13
13
  # Returns a single translation key for the given project
@@ -18,7 +18,7 @@ module Lokalise
18
18
  # @param key_id [String, Integer]
19
19
  # @param params [Hash]
20
20
  def key(project_id, key_id, params = {})
21
- Lokalise::Resources::Key.find self, project_id, key_id, params
21
+ c_r Lokalise::Resources::Key, :find, [project_id, key_id], params
22
22
  end
23
23
 
24
24
  # Creates one or more translation keys for the given project
@@ -28,7 +28,7 @@ module Lokalise
28
28
  # @param project_id [String]
29
29
  # @param params [Hash, Array<Hash>]
30
30
  def create_keys(project_id, params = {})
31
- Lokalise::Resources::Key.create self, project_id, params, :keys
31
+ c_r Lokalise::Resources::Key, :create, project_id, params, :keys
32
32
  end
33
33
 
34
34
  # Updates translation key for the given project
@@ -39,7 +39,7 @@ module Lokalise
39
39
  # @param key_id [String, Integer]
40
40
  # @param params [Hash]
41
41
  def update_key(project_id, key_id, params = {})
42
- Lokalise::Resources::Key.update self, project_id, key_id, params
42
+ c_r Lokalise::Resources::Key, :update, [project_id, key_id], params
43
43
  end
44
44
 
45
45
  # Updates one or multiple translation keys for the given project
@@ -49,7 +49,7 @@ module Lokalise
49
49
  # @param project_id [String]
50
50
  # @param params [Hash, Array<Hash>]
51
51
  def update_keys(project_id, params)
52
- Lokalise::Resources::Key.update self, project_id, nil, params, :keys
52
+ c_r Lokalise::Resources::Key, :update, project_id, params, :keys
53
53
  end
54
54
 
55
55
  # Deletes translation key for the given project
@@ -58,8 +58,8 @@ module Lokalise
58
58
  # @return [Hash]
59
59
  # @param project_id [String]
60
60
  # @param key_id [String, Integer]
61
- def delete_key(project_id, key_id)
62
- Lokalise::Resources::Key.destroy self, project_id, key_id
61
+ def destroy_key(project_id, key_id)
62
+ c_r Lokalise::Resources::Key, :destroy, [project_id, key_id]
63
63
  end
64
64
 
65
65
  # Deletes one or multiple translation keys for the given project
@@ -68,8 +68,8 @@ module Lokalise
68
68
  # @return [Hash]
69
69
  # @param project_id [String]
70
70
  # @param key_ids [String, Integer, Array<String>, Array<Integer>]
71
- def delete_keys(project_id, key_ids)
72
- Lokalise::Resources::Key.destroy self, project_id, keys: key_ids
71
+ def destroy_keys(project_id, key_ids)
72
+ c_r Lokalise::Resources::Key, :destroy, project_id, key_ids, :keys
73
73
  end
74
74
  end
75
75
  end
@@ -6,7 +6,7 @@ module Lokalise
6
6
  # @return [Lokalise::Collection::SystemLanguage<Lokalise::Resources::SystemLanguage>]
7
7
  # @param params [Hash]
8
8
  def system_languages(params = {})
9
- Lokalise::Collections::SystemLanguage.all self, params
9
+ c_r Lokalise::Collections::SystemLanguage, :all, nil, params
10
10
  end
11
11
 
12
12
  # Returns all languages for the given project
@@ -16,7 +16,7 @@ module Lokalise
16
16
  # @param project_id [String, Integer]
17
17
  # @param params [Hash]
18
18
  def project_languages(project_id, params = {})
19
- Lokalise::Collections::ProjectLanguage.all self, params, project_id
19
+ c_r Lokalise::Collections::ProjectLanguage, :all, project_id, params
20
20
  end
21
21
 
22
22
  # Returns a single language for the given project
@@ -26,7 +26,7 @@ module Lokalise
26
26
  # @param project_id [String]
27
27
  # @param language_id [String, Integer]
28
28
  def language(project_id, language_id)
29
- Lokalise::Resources::ProjectLanguage.find self, project_id, language_id
29
+ c_r Lokalise::Resources::ProjectLanguage, :find, [project_id, language_id]
30
30
  end
31
31
 
32
32
  # Creates one or more language for the given project
@@ -36,7 +36,7 @@ module Lokalise
36
36
  # @param project_id [String]
37
37
  # @param params [Hash]
38
38
  def create_languages(project_id, params)
39
- Lokalise::Resources::ProjectLanguage.create self, project_id, params, :languages
39
+ c_r Lokalise::Resources::ProjectLanguage, :create, project_id, params, :languages
40
40
  end
41
41
 
42
42
  # Updates language for the given project
@@ -47,7 +47,7 @@ module Lokalise
47
47
  # @param language_id [String, Integer]
48
48
  # @param params [Hash]
49
49
  def update_language(project_id, language_id, params)
50
- Lokalise::Resources::ProjectLanguage.update self, project_id, language_id, params
50
+ c_r Lokalise::Resources::ProjectLanguage, :update, [project_id, language_id], params
51
51
  end
52
52
 
53
53
  # Deletes language for the given project
@@ -56,8 +56,8 @@ module Lokalise
56
56
  # @return [Hash]
57
57
  # @param project_id [String]
58
58
  # @param language_id [String, Integer]
59
- def delete_language(project_id, language_id)
60
- Lokalise::Resources::ProjectLanguage.destroy self, project_id, language_id
59
+ def destroy_language(project_id, language_id)
60
+ c_r Lokalise::Resources::ProjectLanguage, :destroy, [project_id, language_id]
61
61
  end
62
62
  end
63
63
  end
@@ -6,7 +6,7 @@ module Lokalise
6
6
  # @return [Lokalise::Collection::Project<Lokalise::Resources::Project>]
7
7
  # @param params [Hash]
8
8
  def projects(params = {})
9
- Lokalise::Collections::Project.all self, params
9
+ c_r Lokalise::Collections::Project, :all, nil, params
10
10
  end
11
11
 
12
12
  # Returns a single project
@@ -15,7 +15,7 @@ module Lokalise
15
15
  # @return [Lokalise::Resources::Project]
16
16
  # @param project_id [String, Integer]
17
17
  def project(project_id)
18
- Lokalise::Resources::Project.find self, nil, project_id
18
+ c_r Lokalise::Resources::Project, :find, project_id
19
19
  end
20
20
 
21
21
  # Creates project
@@ -24,7 +24,7 @@ module Lokalise
24
24
  # @return [Lokalise::Resources::Project]
25
25
  # @param params [Hash]
26
26
  def create_project(params)
27
- Lokalise::Resources::Project.create self, nil, params
27
+ c_r Lokalise::Resources::Project, :create, nil, params
28
28
  end
29
29
 
30
30
  # Updates project
@@ -34,7 +34,7 @@ module Lokalise
34
34
  # @param project_id [String, Integer]
35
35
  # @param params [Hash]
36
36
  def update_project(project_id, params)
37
- Lokalise::Resources::Project.update self, nil, project_id, params
37
+ c_r Lokalise::Resources::Project, :update, project_id, params
38
38
  end
39
39
 
40
40
  # Deletes all keys and translations from the project
@@ -43,7 +43,7 @@ module Lokalise
43
43
  # @return [Hash]
44
44
  # @param project_id [String, Integer]
45
45
  def empty_project(project_id)
46
- Lokalise::Resources::Project.clear self, project_id
46
+ c_r Lokalise::Resources::Project, :empty, [project_id, 'empty']
47
47
  end
48
48
 
49
49
  # Deletes the project
@@ -51,8 +51,8 @@ module Lokalise
51
51
  # @see https://lokalise.co/api2docs/ruby/#transition-delete-a-project-delete
52
52
  # @return [Hash]
53
53
  # @param project_id [String, Integer]
54
- def delete_project(project_id)
55
- Lokalise::Resources::Project.destroy self, nil, project_id
54
+ def destroy_project(project_id)
55
+ c_r Lokalise::Resources::Project, :destroy, project_id
56
56
  end
57
57
  end
58
58
  end