Class: CopycopterClient::Client
- Inherits:
-
Object
- Object
- CopycopterClient::Client
- Defined in:
- lib/copycopter_client/client.rb
Overview
Communicates with the Copycopter server. This class is used to actually download and upload blurbs, as well as issuing deploys.
A client is usually instantiated when CopycopterClient::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 Copycopter.
[Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError, SocketError, OpenSSL::SSL::SSLError, Errno::ECONNREFUSED]
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 CopycopterClient::Configuration#apply.
-
#upload(data) ⇒ Object
Uploads the given hash of blurbs as draft content.
Constructor Details
#initialize(options) ⇒ Client
Usually instantiated from CopycopterClient::Configuration#apply. Copies options.
28 29 30 31 32 33 |
# File 'lib/copycopter_client/client.rb', line 28 def initialize() [:api_key, :host, :port, :public, :http_read_timeout, :http_open_timeout, :secure, :logger, :ca_file].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.
73 74 75 76 77 78 79 |
# File 'lib/copycopter_client/client.rb', line 73 def deploy connect do |http| response = http.post(uri("deploys"), "") 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.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/copycopter_client/client.rb', line 45 def download connect do |http| request = Net::HTTP::Get.new(uri(download_resource)) request['If-None-Match'] = @etag response = http.request(request) if check(response) log("Downloaded translations") yield JSON.parse(response.body) else log("No new translations") end @etag = response['ETag'] end end |
#upload(data) ⇒ Object
Uploads the given hash of blurbs as draft content.
63 64 65 66 67 68 69 |
# File 'lib/copycopter_client/client.rb', line 63 def upload(data) connect do |http| response = http.post(uri("draft_blurbs"), data.to_json, 'Content-Type' => 'application/json') check(response) log("Uploaded missing translations") end end |