crowdin-api 1.1.0 → 1.2.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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test-and-lint.yml +1 -1
  3. data/.gitignore +2 -2
  4. data/.rubocop_todo.yml +37 -30
  5. data/README.md +23 -12
  6. data/bin/crowdin-console +4 -4
  7. data/lib/crowdin-api/api-resources/dictionaries.rb +34 -0
  8. data/lib/crowdin-api/api-resources/distributions.rb +99 -0
  9. data/lib/crowdin-api/api-resources/glossaries.rb +217 -0
  10. data/lib/crowdin-api/api-resources/labels.rb +117 -0
  11. data/lib/crowdin-api/api-resources/languages.rb +1 -0
  12. data/lib/crowdin-api/api-resources/machine_translation_engines.rb +74 -0
  13. data/lib/crowdin-api/api-resources/projects.rb +15 -1
  14. data/lib/crowdin-api/api-resources/reports.rb +138 -0
  15. data/lib/crowdin-api/api-resources/screenshots.rb +186 -0
  16. data/lib/crowdin-api/api-resources/source_files.rb +3 -2
  17. data/lib/crowdin-api/api-resources/storages.rb +5 -1
  18. data/lib/crowdin-api/api-resources/string_comments.rb +73 -0
  19. data/lib/crowdin-api/api-resources/string_translations.rb +220 -0
  20. data/lib/crowdin-api/api-resources/tasks.rb +113 -0
  21. data/lib/crowdin-api/api-resources/teams.rb +144 -0
  22. data/lib/crowdin-api/api-resources/translation_memory.rb +145 -0
  23. data/lib/crowdin-api/api-resources/translations.rb +8 -6
  24. data/lib/crowdin-api/api-resources/users.rb +129 -0
  25. data/lib/crowdin-api/api-resources/vendors.rb +21 -0
  26. data/lib/crowdin-api/api-resources/webhooks.rb +73 -0
  27. data/lib/crowdin-api/api-resources/workflows.rb +3 -0
  28. data/lib/crowdin-api/client/client.rb +41 -28
  29. data/lib/crowdin-api/client/configuration.rb +10 -6
  30. data/lib/crowdin-api/client/version.rb +1 -1
  31. data/lib/crowdin-api/core/errors.rb +2 -1
  32. data/lib/crowdin-api/core/{api_errors_raiser.rb → errors_raisers.rb} +21 -11
  33. data/lib/crowdin-api/core/request.rb +8 -5
  34. data/lib/crowdin-api/core/utils.rb +10 -0
  35. data/lib/crowdin-api.rb +22 -6
  36. data/spec/client/client-instance_spec.rb +14 -0
  37. data/spec/{core/config-instance_spec.rb → client/configuration-instance_spec.rb} +7 -7
  38. metadata +21 -5
  39. data/spec/crowdin-api_spec.rb +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc71aeec74dd34cef85bb90b9accdd273d18ce3fd8ba9888eb3ce6a073e6aff0
4
- data.tar.gz: 39e8290a34930ad659e1ad5879f4f91283f82f88f2316c7f64f03ef524de35cc
3
+ metadata.gz: 12e4090258b99a1702202afb42fa199658b4afcd544372b9c5360d1807f65960
4
+ data.tar.gz: a11f40b227a80f556e4947c05189df7ac226d9141f4103d2aa6f93d3f08ca164
5
5
  SHA512:
6
- metadata.gz: d95cbb784a0148eab14bce79dff1dd70735e60aecad95f3be2402ac525581bae5c42dfce8f888ab7255fa3096f7153201a3256d3a6f41821a35f9eaec215abab
7
- data.tar.gz: 4b9604fa346136d64a69beb7643beff66433cbbc9102242f56bac6b3f9ebd23e29cc70339e63b9c1a754ce77cf71a6c624d1b97120a5b7f82fb3dbdcb3b23054
6
+ metadata.gz: 34da514b4e85ea10655d92971b6b495c3d8c141c7c7e195128ff0668883bda4bb9966433899e2f4c8297ad669d2c9af0f72ab6eaa6e07e2f5e9d4ab83ed0b963
7
+ data.tar.gz: 74e30dac5d1d2c0bba0c0a47c8eae3adb359770272165eb3506cf7e0ff918555cc204d7d0e3bdcbc16bc549d563d9140dd9d9bc3392dfb3a3912ec1373cf2f28
@@ -12,7 +12,7 @@ jobs:
12
12
  runs-on: ubuntu-latest
13
13
  strategy:
14
14
  matrix:
15
- ruby-version: ['2.6', '2.7', '3.0']
15
+ ruby-version: [ '2.6', '2.7', '3.0' ]
16
16
  steps:
17
17
  - name: Checkout code
18
18
  uses: actions/checkout@v2
data/.gitignore CHANGED
@@ -1,12 +1,12 @@
1
1
  # Ignore Ruby logs
2
- .ruby-version
3
2
  .idea
4
3
 
5
4
  # Ignore MacOS logs
6
5
  .DS_Store
7
6
 
8
- # Ignore versioning file
7
+ # Ignore versioning files
9
8
  Gemfile.lock
9
+ .ruby-version
10
10
 
11
11
  # Ignore tests coverage folder
12
12
  coverage
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2021-12-13 20:26:23 UTC using RuboCop version 1.23.0.
3
+ # on 2022-02-14 06:05:44 UTC using RuboCop version 1.23.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -21,12 +21,15 @@ Gemspec/RequiredRubyVersion:
21
21
  Exclude:
22
22
  - 'crowdin-api.gemspec'
23
23
 
24
- # Offense count: 2
24
+ # Offense count: 4
25
25
  # Cop supports --auto-correct.
26
- # Configuration parameters: AllowForAlignment, AllowBeforeTrailingComments, ForceEqualSignAlignment.
27
- Layout/ExtraSpacing:
26
+ # Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle.
27
+ # SupportedHashRocketStyles: key, separator, table
28
+ # SupportedColonStyles: key, separator, table
29
+ # SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit
30
+ Layout/HashAlignment:
28
31
  Exclude:
29
- - 'bin/crowdin-console'
32
+ - 'lib/crowdin-api/client/configuration.rb'
30
33
 
31
34
  # Offense count: 1
32
35
  # Cop supports --auto-correct.
@@ -47,24 +50,26 @@ Metrics/AbcSize:
47
50
  Metrics/BlockLength:
48
51
  Max: 54
49
52
 
50
- # Offense count: 4
53
+ # Offense count: 12
51
54
  # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
52
55
  Metrics/MethodLength:
53
56
  Max: 18
54
57
 
55
- # Offense count: 2
58
+ # Offense count: 8
56
59
  # Configuration parameters: CountComments, CountAsOne.
57
60
  Metrics/ModuleLength:
58
- Max: 205
61
+ Max: 199
59
62
 
60
- # Offense count: 1
61
- # Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
63
+ # Offense count: 2
64
+ # Configuration parameters: CountKeywordArgs.
62
65
  Metrics/ParameterLists:
66
+ MaxOptionalParameters: 4
63
67
  Max: 6
64
68
 
65
- # Offense count: 1
69
+ # Offense count: 2
66
70
  Naming/AccessorMethodName:
67
71
  Exclude:
72
+ - 'lib/crowdin-api/api-resources/users.rb'
68
73
  - 'lib/crowdin-api/core/request.rb'
69
74
 
70
75
  # Offense count: 3
@@ -74,8 +79,8 @@ Naming/AccessorMethodName:
74
79
  Naming/FileName:
75
80
  Exclude:
76
81
  - 'lib/crowdin-api.rb'
77
- - 'spec/core/config-instance_spec.rb'
78
- - 'spec/crowdin-api_spec.rb'
82
+ - 'spec/client/client-instance_spec.rb'
83
+ - 'spec/client/configuration-instance_spec.rb'
79
84
 
80
85
  # Offense count: 3
81
86
  # Configuration parameters: EnforcedStyleForLeadingUnderscores.
@@ -91,7 +96,7 @@ Naming/RescuedExceptionsVariableName:
91
96
  Exclude:
92
97
  - 'lib/crowdin-api/core/request.rb'
93
98
 
94
- # Offense count: 7
99
+ # Offense count: 8
95
100
  # Cop supports --auto-correct.
96
101
  # Configuration parameters: EnforcedStyle.
97
102
  # SupportedStyles: separated, grouped
@@ -106,24 +111,10 @@ Style/CollectionCompact:
106
111
  Exclude:
107
112
  - 'lib/crowdin-api/core/request.rb'
108
113
 
109
- # Offense count: 12
114
+ # Offense count: 22
110
115
  # Configuration parameters: AllowedConstants.
111
116
  Style/Documentation:
112
- Exclude:
113
- - 'spec/**/*'
114
- - 'test/**/*'
115
- - 'lib/crowdin-api/api-resources/languages.rb'
116
- - 'lib/crowdin-api/api-resources/projects.rb'
117
- - 'lib/crowdin-api/api-resources/source_files.rb'
118
- - 'lib/crowdin-api/api-resources/source_strings.rb'
119
- - 'lib/crowdin-api/api-resources/storages.rb'
120
- - 'lib/crowdin-api/api-resources/translation_status.rb'
121
- - 'lib/crowdin-api/api-resources/translations.rb'
122
- - 'lib/crowdin-api/api-resources/workflows.rb'
123
- - 'lib/crowdin-api/client/client.rb'
124
- - 'lib/crowdin-api/client/configuration.rb'
125
- - 'lib/crowdin-api/core/api_errors_raiser.rb'
126
- - 'lib/crowdin-api/core/request.rb'
117
+ Enabled: false
127
118
 
128
119
  # Offense count: 1
129
120
  # Cop supports --auto-correct.
@@ -137,3 +128,19 @@ Style/FrozenStringLiteralComment:
137
128
  Style/MixinUsage:
138
129
  Exclude:
139
130
  - 'bin/crowdin-console'
131
+
132
+ # Offense count: 2
133
+ # Cop supports --auto-correct.
134
+ # Configuration parameters: EnforcedStyle.
135
+ # SupportedStyles: implicit, explicit
136
+ Style/RescueStandardError:
137
+ Exclude:
138
+ - 'lib/crowdin-api/api-resources/labels.rb'
139
+ - 'lib/crowdin-api/api-resources/string_translations.rb'
140
+
141
+ # Offense count: 1
142
+ # Cop supports --auto-correct.
143
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
144
+ # URISchemes: http, https
145
+ Layout/LineLength:
146
+ Max: 122
data/README.md CHANGED
@@ -10,7 +10,7 @@ For more about Crowdin API v2 see the documentation:
10
10
  - [Crowdin](https://support.crowdin.com/api/v2/)
11
11
  - [Crowdin Enterprise](https://support.crowdin.com/enterprise/api/)
12
12
 
13
- ### Status
13
+ ## Status
14
14
 
15
15
  [![Gem](https://img.shields.io/gem/v/crowdin-api?logo=ruby&cacheSeconds=1800)](https://rubygems.org/gems/crowdin-api)
16
16
  [![Gem](https://img.shields.io/gem/dt/crowdin-api?cacheSeconds=1800)](https://rubygems.org/gems/crowdin-api)
@@ -22,21 +22,25 @@ For more about Crowdin API v2 see the documentation:
22
22
  [![GitHub](https://img.shields.io/github/license/crowdin/crowdin-api-client-ruby?cacheSeconds=1800)](https://github.com/crowdin/crowdin-api-client-ruby/blob/main/LICENSE)
23
23
 
24
24
  ## Table of Contents
25
+ * [Requirements](#requirements)
25
26
  * [Installation](#installation)
26
27
  * [Quick Start](#quick-start)
27
28
  * [Initialization](#initialization)
28
- * [How to call methods](#how-to-call-methods)
29
+ * [Usage](#usage)
29
30
  * [Command-Line Client](#command-line-client)
30
31
  * [Seeking Assistance](#seeking-assistance)
31
32
  * [Contributing](#contributing)
32
33
  * [License](#license)
33
34
 
35
+ ## Requirements
36
+ * Ruby >= 2.4
37
+
34
38
  ## Installation
35
39
 
36
40
  Add this line to your application's Gemfile:
37
41
 
38
42
  ```gemfile
39
- gem 'crowdin-api', '~> 1.1.0'
43
+ gem 'crowdin-api', '~> 1.2.1'
40
44
  ```
41
45
 
42
46
  And then execute:
@@ -70,12 +74,13 @@ crowdin = Crowdin::Client.new do |config|
70
74
  config.api_token = 'YourApiToken'
71
75
  end
72
76
 
73
- # Or you can intialize Enterprise Client instance by specifying your organization_domain in config options
77
+ # Or you can intialize Enterprise Client instance by specifying your
78
+ # organization_domain in config options
74
79
  crowdin = Crowdin::Client.new do |config|
75
80
  config.api_token = 'YourEnterpriseApiToken'
76
81
  config.organization_domain = 'YourOrganizationDomain'
77
82
  end
78
- # Note: we use full specified organization domain if that includes .com
83
+ # Note: we use full specified organization domain if that includes '.com'
79
84
  # config.organization_domain = your_domain -> https://your_domain.api.crowdin.com
80
85
  # config.organization_domain = your_domain.com -> your_domain.com
81
86
 
@@ -86,8 +91,8 @@ crowdin = Crowdin::Client.new do |config|
86
91
  config.project_id = 'YourProjectId' # [Integer] nil by default
87
92
  config.enable_logger = true # [Boolean] false by default
88
93
  end
89
- # Note: Client will initialize default Logger instance if you have specify enable_logger to true,
90
- # you can change it by crowdin.logger = YourLogger
94
+ # Note: Client will initialize default Logger instance if you have specify
95
+ # enable_logger to true, you can change it by crowdin.logger = YourLogger
91
96
 
92
97
  # Also you can specify proxy by adding it to ENV['http_proxy'] before Client initialization
93
98
  ```
@@ -115,14 +120,20 @@ projects = crowdin.list_projects(offset: 10, limit: 20)
115
120
  # Get specified project
116
121
  project = crowdin.get_project(your_project_id)
117
122
 
123
+ # Edit project
124
+ project = crowdin.edit_project(project_id, [{op: 'replace',
125
+ path: '/name',
126
+ value: 'your_new_project_name'}])
127
+
118
128
  # Add Storage
119
129
  storage = crowdin.add_storage(File.open('YourFilename.extension', 'r'))
120
- # or you can specify only filename
130
+ # or you can specify only absolute path to file
121
131
  storage = crowdin.add_storage('YourFilename.extension')
122
132
 
123
133
  # Download file
124
- filename = crowdin.download_file(your_destination, your_file_id, your_project_id)
125
- # your_destination - filename or full path to file
134
+ file = crowdin.download_file(your_file_id, your_destination, your_project_id)
135
+ # your_destination - filename or absolute path to file, optional
136
+ # Without destination option file will be saved to the current directory with a default filename
126
137
  # project_id is optional, as it can be initialized with a Crowdin Client
127
138
 
128
139
  # File revisions
@@ -143,9 +154,9 @@ $ bundle exec crowdin-console --enable-logger --api-token API_TOKEN --project-id
143
154
  Or Crowdin Enterprise
144
155
 
145
156
  ```console
146
- $ bundle exec crowdin-console --enable-logger --enterprise --api-token API_TOKEN --organization-domain YOUR_DOMAIN --project-id PROJECT_ID
157
+ $ bundle exec crowdin-console --enable-logger --enterprise --api-token API_TOKEN --organization-domain DOMAIN --project-id PROJECT_ID
147
158
  ```
148
- Note: you can specify full organization domain by adding .com
159
+ Note: you can specify full organization domain by adding '.com'
149
160
 
150
161
  When execute you'll have IRB console with configured *@crowdin* instance
151
162
 
data/bin/crowdin-console CHANGED
@@ -17,7 +17,7 @@ require 'optparse'
17
17
  # bundle exec crowdin-console --enterprise --api-token YOUR_ENTERPRISE_API_TOKEN --organization-domain YOUR_DOMAIN
18
18
  #
19
19
 
20
- include Crowdin::Errors::ApiErrorsRaiser
20
+ include Crowdin::Errors::ClcErrorsRaiser
21
21
 
22
22
  options = {}
23
23
 
@@ -27,7 +27,7 @@ OptionParser.new do |opts|
27
27
  opts.on('--enterprise', 'Enterprise API') { |v| options[:enterprise] = v }
28
28
  opts.on('--api-token TOKEN', 'API Token') { |v| options[:api_token] = v }
29
29
  opts.on('--organization-domain DOMAIN', 'Organization Domain') { |v| options[:organization_domain] = v }
30
- opts.on('--project-id ID', 'Project ID') { |v| options[:project_id] = v }
30
+ opts.on('--project-id ID', 'Project ID') { |v| options[:project_id] = v }
31
31
  opts.on('--enable-logger', 'Enable logger') { |v| options[:enable_logger] = v }
32
32
  end.parse!
33
33
 
@@ -39,8 +39,8 @@ if options[:enterprise]
39
39
  @crowdin = Crowdin::Client.new do |config|
40
40
  config.api_token = options[:api_token]
41
41
  config.organization_domain = options[:organization_domain]
42
- config.enable_logger = options[:enable_logger] || false
43
- config.project_id = options[:project_id] || nil
42
+ config.enable_logger = options[:enable_logger] || false
43
+ config.project_id = options[:project_id] || nil
44
44
  end
45
45
  else
46
46
  @crowdin = Crowdin::Client.new do |config|
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Crowdin
4
+ module ApiResources
5
+ module Dictionaries
6
+ def list_dictionaries(query = {}, project_id = config.project_id)
7
+ project_id || raise_project_id_is_required_error
8
+
9
+ request = Web::Request.new(
10
+ self,
11
+ :get,
12
+ "/projects/#{project_id}/dictionaries",
13
+ query
14
+ )
15
+
16
+ request.perform
17
+ end
18
+
19
+ def edit_dictionary(language_id = nil, query = {}, project_id = config.project_id)
20
+ language_id || raise_parameter_is_required_error(:language_id)
21
+ project_id || raise_project_id_is_required_error
22
+
23
+ request = Web::Request.new(
24
+ self,
25
+ :patch,
26
+ "/projects/#{project_id}/dictionaries/#{language_id}",
27
+ query
28
+ )
29
+
30
+ request.perform
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Crowdin
4
+ module ApiResources
5
+ module Distributions
6
+ def list_distributions(query = {}, project_id = config.project_id)
7
+ project_id || raise_project_id_is_required_error
8
+
9
+ request = Web::Request.new(
10
+ self,
11
+ :get,
12
+ "/projects/#{project_id}/distributions",
13
+ query
14
+ )
15
+
16
+ request.perform
17
+ end
18
+
19
+ def add_distribution(query = {}, project_id = config.project_id)
20
+ project_id || raise_project_id_is_required_error
21
+
22
+ request = Web::Request.new(
23
+ self,
24
+ :post,
25
+ "/projects/#{project_id}/distributions",
26
+ query
27
+ )
28
+
29
+ request.perform
30
+ end
31
+
32
+ def get_distribution(hash = nil, project_id = config.project_id)
33
+ hash || raise_parameter_is_required_error(:hash)
34
+ project_id || raise_project_id_is_required_error
35
+
36
+ request = Web::Request.new(
37
+ self,
38
+ :get,
39
+ "/projects/#{project_id}/distributions/#{hash}"
40
+ )
41
+
42
+ request.perform
43
+ end
44
+
45
+ def delete_distribution(hash = nil, project_id = config.project_id)
46
+ hash || raise_parameter_is_required_error(:hash)
47
+ project_id || raise_project_id_is_required_error
48
+
49
+ request = Web::Request.new(
50
+ self,
51
+ :delete,
52
+ "/projects/#{project_id}/distributions/#{hash}"
53
+ )
54
+
55
+ request.perform
56
+ end
57
+
58
+ def edit_distribution(hash = nil, query = {}, project_id = config.project_id)
59
+ hash || raise_parameter_is_required_error(:hash)
60
+ project_id || raise_project_id_is_required_error
61
+
62
+ request = Web::Request.new(
63
+ self,
64
+ :patch,
65
+ "/projects/#{project_id}/distributions/#{hash}",
66
+ query
67
+ )
68
+
69
+ request.perform
70
+ end
71
+
72
+ def get_destribution_release(hash = nil, project_id = config.project_id)
73
+ hash || raise_parameter_is_required_error(:hash)
74
+ project_id || raise_project_id_is_required_error
75
+
76
+ request = Web::Request.new(
77
+ self,
78
+ :get,
79
+ "/projects/#{project_id}/distributions/#{hash}/release"
80
+ )
81
+
82
+ request.perform
83
+ end
84
+
85
+ def release_distribution(hash = nil, project_id = config.project_id)
86
+ hash || raise_parameter_is_required_error(:hash)
87
+ project_id || raise_project_id_is_required_error
88
+
89
+ request = Web::Request.new(
90
+ self,
91
+ :post,
92
+ "/projects/#{project_id}/distributions/#{hash}/release"
93
+ )
94
+
95
+ request.perform
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,217 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Crowdin
4
+ module ApiResources
5
+ module Glossaries
6
+ def list_glossaries(query = {})
7
+ request = Web::Request.new(
8
+ self,
9
+ :get,
10
+ '/glossaries',
11
+ query
12
+ )
13
+
14
+ request.perform
15
+ end
16
+
17
+ def add_glossary(query = {})
18
+ request = Web::Request.new(
19
+ self,
20
+ :post,
21
+ '/glossaries',
22
+ query
23
+ )
24
+
25
+ request.perform
26
+ end
27
+
28
+ def get_glossary(glossary_id = nil, query = {})
29
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
30
+
31
+ request = Web::Request.new(
32
+ self,
33
+ :get,
34
+ "/glossaries/#{glossary_id}",
35
+ query
36
+ )
37
+
38
+ request.perform
39
+ end
40
+
41
+ def delete_glossary(glossary_id = nil, query = {})
42
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
43
+
44
+ request = Web::Request.new(
45
+ self,
46
+ :delete,
47
+ "/glossaries/#{glossary_id}",
48
+ query
49
+ )
50
+
51
+ request.perform
52
+ end
53
+
54
+ def edit_glossary(glossary_id = nil, query = {})
55
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
56
+
57
+ request = Web::Request.new(
58
+ self,
59
+ :patch,
60
+ "/glossaries/#{glossary_id}",
61
+ query
62
+ )
63
+
64
+ request.perform
65
+ end
66
+
67
+ def export_glossary(query = {}, glossary_id = nil, destination = nil)
68
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
69
+
70
+ request = Web::Request.new(
71
+ self,
72
+ :post,
73
+ "/glossaries/#{glossary_id}/exports",
74
+ query,
75
+ {},
76
+ destination
77
+ )
78
+
79
+ request.perform
80
+ end
81
+
82
+ def check_glossary_export_status(glossary_id = nil, export_id = nil)
83
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
84
+ export_id || raise_parameter_is_required_error(:export_id)
85
+
86
+ request = Web::Request.new(
87
+ self,
88
+ :get,
89
+ "/glossaries/#{glossary_id}/exports/#{export_id}"
90
+ )
91
+
92
+ request.perform
93
+ end
94
+
95
+ def download_glossary(glossary_id = nil, export_id = nil, destination = nil)
96
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
97
+ export_id || raise_parameter_is_required_error(:export_id)
98
+
99
+ request = Web::Request.new(
100
+ self,
101
+ :get,
102
+ "/glossaries/#{glossary_id}/exports/#{export_id}/download",
103
+ {},
104
+ {},
105
+ destination
106
+ )
107
+
108
+ request.perform
109
+ end
110
+
111
+ def import_glossary(glossary_id = nil, query = {})
112
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
113
+
114
+ request = Web::Request.new(
115
+ self,
116
+ :post,
117
+ "/glossaries/#{glossary_id}/imports",
118
+ query
119
+ )
120
+
121
+ request.perform
122
+ end
123
+
124
+ def check_glossary_import_status(glossary_id = nil, import_id = nil)
125
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
126
+ import_id || raise_parameter_is_required_error(:import_id)
127
+
128
+ request = Web::Request.new(
129
+ self,
130
+ :get,
131
+ "/glossaries/#{glossary_id}/imports/#{import_id}"
132
+ )
133
+
134
+ request.perform
135
+ end
136
+
137
+ def list_terms(glossary_id = nil, query = {})
138
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
139
+
140
+ request = Web::Request.new(
141
+ self,
142
+ :get,
143
+ "/glossaries/#{glossary_id}/terms",
144
+ query
145
+ )
146
+
147
+ request.perform
148
+ end
149
+
150
+ def add_term(glossary_id = nil, query = {})
151
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
152
+
153
+ request = Web::Request.new(
154
+ self,
155
+ :post,
156
+ "/glossaries/#{glossary_id}/terms",
157
+ query
158
+ )
159
+
160
+ request.perform
161
+ end
162
+
163
+ def clear_glossary(glossary_id = nil, query = {})
164
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
165
+
166
+ request = Web::Request.new(
167
+ self,
168
+ :delete,
169
+ "/glossaries/#{glossary_id}/terms",
170
+ query
171
+ )
172
+
173
+ request.perform
174
+ end
175
+
176
+ def get_term(glossary_id = nil, term_id = nil)
177
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
178
+ term_id || raise_parameter_is_required_error(:term_id)
179
+
180
+ request = Web::Request.new(
181
+ self,
182
+ :get,
183
+ "/glossaries/#{glossary_id}/terms/#{term_id}"
184
+ )
185
+
186
+ request.perform
187
+ end
188
+
189
+ def delete_term(glossary_id = nil, term_id = nil)
190
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
191
+ term_id || raise_parameter_is_required_error(:term_id)
192
+
193
+ request = Web::Request.new(
194
+ self,
195
+ :delete,
196
+ "/glossaries/#{glossary_id}/terms/#{term_id}"
197
+ )
198
+
199
+ request.perform
200
+ end
201
+
202
+ def edit_term(glossary_id = nil, term_id = nil, query = {})
203
+ glossary_id || raise_parameter_is_required_error(:glossary_id)
204
+ term_id || raise_parameter_is_required_error(:term_id)
205
+
206
+ request = Web::Request.new(
207
+ self,
208
+ :patch,
209
+ "/glossaries/#{glossary_id}/terms/#{term_id}",
210
+ query
211
+ )
212
+
213
+ request.perform
214
+ end
215
+ end
216
+ end
217
+ end