Class: CopyTunerClient::Client
- Inherits:
-
Object
- Object
- CopyTunerClient::Client
- Defined in:
- lib/copy_tuner_client/client.rb
Overview
Communicates with the CopyTuner server. This class is used to actually download and upload blurbs, as well as issuing deploys.
A client is usually instantiated when CopyTunerClient::Configuration#apply is called, and the application will not need to interact with it directly.
Constant Summary collapse
- HTTP_ERRORS =
These errors will be rescued when connecting CopyTuner.
[Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError, SocketError, OpenSSL::SSL::SSLError, Errno::ECONNREFUSED]
- USER_AGENT =
"copy_tuner_client #{CopyTunerClient::VERSION}"
Instance Method Summary collapse
-
#deploy ⇒ Object
Issues a deploy, marking all draft content as published for this project.
-
#download {|Hash| ... } ⇒ Object
Downloads all blurbs for the given api_key.
-
#initialize(options) ⇒ Client
constructor
Usually instantiated from CopyTunerClient::Configuration#apply.
-
#upload(data) ⇒ Object
Uploads the given hash of blurbs as draft content.
Constructor Details
#initialize(options) ⇒ Client
Usually instantiated from CopyTunerClient::Configuration#apply. Copies options.
31 32 33 34 35 36 |
# File 'lib/copy_tuner_client/client.rb', line 31 def initialize() [:api_key, :host, :port, :public, :http_read_timeout, :http_open_timeout, :secure, :logger, :ca_file, :s3_host].each do |option| instance_variable_set "@#{option}", [option] end end |
Instance Method Details
#deploy ⇒ Object
Issues a deploy, marking all draft content as published for this project.
85 86 87 88 89 90 91 |
# File 'lib/copy_tuner_client/client.rb', line 85 def deploy connect(host) do |http| response = http.post(uri('deploys'), '', 'User-Agent' => USER_AGENT) check response log 'Deployed' end end |
#download {|Hash| ... } ⇒ Object
Downloads all blurbs for the given api_key.
If the public
option was set to true
, this will use published blurbs. Otherwise, draft content is fetched.
The client tracks ETags between download requests, and will return without yielding anything if the server returns a not modified response.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/copy_tuner_client/client.rb', line 48 def download connect(s3_host) do |http| request = Net::HTTP::Get.new(uri(download_resource)) request['If-None-Match'] = @etag log 'Start downloading translations' t = Time.now response = http.request(request) t_ms = ((Time.now - t) * 1000).to_i if check response bytesize = response.body.bytesize kb = bytesize / 1024.0 mb = kb / 1024.0 t_s = t_ms / 1000.0 kbs = kb / t_s log "Downloaded translations (#{t_ms}ms, #{mb.round(1)}MB, #{kbs.round(1)}KB/s)" yield JSON.parse(response.body) else log "No new translations (#{t_ms}ms)" end @etag = response['ETag'] end end |
#upload(data) ⇒ Object
Uploads the given hash of blurbs as draft content.
75 76 77 78 79 80 81 |
# File 'lib/copy_tuner_client/client.rb', line 75 def upload(data) connect(host) do |http| response = http.post(uri('draft_blurbs'), data.to_json, 'Content-Type' => 'application/json', 'User-Agent' => USER_AGENT) check response log 'Uploaded missing translations' end end |