Class: ActivityConsumer::RemoteActivityRestClient
- Inherits:
-
Object
- Object
- ActivityConsumer::RemoteActivityRestClient
- Includes:
- HTTParty
- Defined in:
- app/services/activity_consumer/remote_activity_rest_client.rb
Instance Attribute Summary collapse
-
#latest_etag ⇒ Object
readonly
Returns the value of attribute latest_etag.
Instance Method Summary collapse
- #fetch ⇒ Object
-
#initialize(mode = :delta) ⇒ RemoteActivityRestClient
constructor
A new instance of RemoteActivityRestClient.
- #is_fresh? ⇒ Boolean
Constructor Details
#initialize(mode = :delta) ⇒ RemoteActivityRestClient
10 11 12 |
# File 'app/services/activity_consumer/remote_activity_rest_client.rb', line 10 def initialize(mode = :delta) @mode = mode end |
Instance Attribute Details
#latest_etag ⇒ Object (readonly)
Returns the value of attribute latest_etag.
7 8 9 |
# File 'app/services/activity_consumer/remote_activity_rest_client.rb', line 7 def latest_etag @latest_etag end |
Instance Method Details
#fetch ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/services/activity_consumer/remote_activity_rest_client.rb', line 14 def fetch response = self.class.get(request_url, basic_auth: auth, query: query_params) if response.success? @latest_etag = response.headers['ETag'] activities = [] response['activities'].each do |activity| activity = activity.deep_symbolize_keys Rails.logger.info "[ActivityConsumer] Trying to import #{activity}" unless ActivityConsumer.configuration.import_types.include?(activity[:activity_type]) Rails.logger.info "[ActivityConsumer] type not in: #{ActivityConsumer.configuration.import_types} ... skipping!" next end activities << sub_class_from_type(activity[:activity_type]).new(activity.except(:activity_type)) end activities else # this just raises the net/http response that was raised Rails.logger.error response.response raise response.response end end |
#is_fresh? ⇒ Boolean
38 39 40 41 42 43 44 |
# File 'app/services/activity_consumer/remote_activity_rest_client.rb', line 38 def is_fresh? url = ActivityConsumer.configuration.activity_uri etag = RemoteActivity.last ? RemoteActivity.last.etag : '' response = self.class.head(url, basic_auth: auth, headers: {"If-None-Match" => etag}) response.code == 304 end |