From f3464cc4ac611a53603ac6077be928a5d13e00d4 Mon Sep 17 00:00:00 2001 From: Mantas Masalskis Date: Fri, 20 Aug 2021 05:36:30 +0200 Subject: [PATCH] Fixes #2634 - Merge not possible with not set, required attributes --- .../app/views/object_manager/screens.jst.eco | 6 +- app/controllers/channels_sms_controller.rb | 30 +- app/controllers/form_controller.rb | 69 +-- .../object_manager/attribute/validation.rb | 10 +- app/models/ticket.rb | 2 +- app/models/transaction.rb | 22 +- lib/application_handle_info.rb | 29 +- lib/facebook.rb | 2 +- lib/telegram.rb | 2 +- lib/twitter_sync.rb | 2 +- spec/lib/application_handle_info_spec.rb | 86 +++- spec/models/channel/driver/facebook_spec.rb | 16 + spec/models/channel/driver/twitter_spec.rb | 14 + .../attribute/validation_spec.rb | 36 ++ spec/models/ticket_spec.rb | 15 + spec/requests/form_spec.rb | 22 + spec/requests/integration/telegram_spec.rb | 14 + spec/requests/integration/twilio_sms_spec.rb | 22 + spec/support/application_handle_info.rb | 6 + ...info_context_gets_switched_to_twitter_.yml | 437 ++++++++++++++++++ ...leinfo_context_reverts_back_to_default.yml | 437 ++++++++++++++++++ 21 files changed, 1200 insertions(+), 79 deletions(-) create mode 100644 test/data/vcr_cassettes/models/channel/driver/twitter/when_applicationhandleinfo_context_gets_switched_to_twitter_.yml create mode 100644 test/data/vcr_cassettes/models/channel/driver/twitter/when_applicationhandleinfo_context_reverts_back_to_default.yml diff --git a/app/assets/javascripts/app/views/object_manager/screens.jst.eco b/app/assets/javascripts/app/views/object_manager/screens.jst.eco index dc31fd3d6..c1145cf54 100644 --- a/app/assets/javascripts/app/views/object_manager/screens.jst.eco +++ b/app/assets/javascripts/app/views/object_manager/screens.jst.eco @@ -23,7 +23,11 @@ <%- @T(key) %>: checked<% end %> value="true"> <% end %> <% end %> + + + + <%- @T('Not applicable to: merging, emails, form, Facebook, Telegram, Twitter, SMS') %> <% end %> - \ No newline at end of file + diff --git a/app/controllers/channels_sms_controller.rb b/app/controllers/channels_sms_controller.rb index 7a8edb11d..a0c54078d 100644 --- a/app/controllers/channels_sms_controller.rb +++ b/app/controllers/channels_sms_controller.rb @@ -55,22 +55,24 @@ class ChannelsSmsController < ApplicationController def webhook raise Exceptions::UnprocessableEntity, 'token param missing' if params['token'].blank? - channel = nil - Channel.where(active: true, area: 'Sms::Account').each do |local_channel| - next if local_channel.options[:webhook_token] != params['token'] + ApplicationHandleInfo.in_context('sms') do + channel = nil + Channel.where(active: true, area: 'Sms::Account').each do |local_channel| + next if local_channel.options[:webhook_token] != params['token'] - channel = local_channel - end - if !channel - render( - json: { message: 'channel not found' }, - status: :not_found - ) - return - end + channel = local_channel + end + if !channel + render( + json: { message: 'channel not found' }, + status: :not_found + ) + return + end - conten_type, content = channel.process(params.permit!.to_h) - send_data content, type: conten_type + content_type, content = channel.process(params.permit!.to_h) + send_data content, type: content_type + end end private diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 35945247a..5afd71507 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -89,46 +89,49 @@ class FormController < ApplicationController ) end + ticket = nil + # set current user UserInfo.current_user_id = customer.id - - group = Group.find_by(id: Setting.get('form_ticket_create_group_id')) - if !group - group = Group.where(active: true).first + ApplicationHandleInfo.in_context('form') do # rubocop:disable Metrics/BlockLength + group = Group.find_by(id: Setting.get('form_ticket_create_group_id')) if !group - group = Group.first + group = Group.where(active: true).first + if !group + group = Group.first + end end - end - ticket = Ticket.create!( - group_id: group.id, - customer_id: customer.id, - title: params[:title], - preferences: { - form: { - remote_ip: request.remote_ip, - fingerprint_md5: Digest::MD5.hexdigest(params[:fingerprint]), - } - } - ) - article = Ticket::Article.create!( - ticket_id: ticket.id, - type_id: Ticket::Article::Type.find_by(name: 'web').id, - sender_id: Ticket::Article::Sender.find_by(name: 'Customer').id, - body: params[:body], - subject: params[:title], - internal: false, - ) - - params[:file]&.each do |file| - Store.add( - object: 'Ticket::Article', - o_id: article.id, - data: file.read, - filename: file.original_filename, + ticket = Ticket.create!( + group_id: group.id, + customer_id: customer.id, + title: params[:title], preferences: { - 'Mime-Type' => file.content_type, + form: { + remote_ip: request.remote_ip, + fingerprint_md5: Digest::MD5.hexdigest(params[:fingerprint]), + } } ) + article = Ticket::Article.create!( + ticket_id: ticket.id, + type_id: Ticket::Article::Type.find_by(name: 'web').id, + sender_id: Ticket::Article::Sender.find_by(name: 'Customer').id, + body: params[:body], + subject: params[:title], + internal: false, + ) + + params[:file]&.each do |file| + Store.add( + object: 'Ticket::Article', + o_id: article.id, + data: file.read, + filename: file.original_filename, + preferences: { + 'Mime-Type' => file.content_type, + } + ) + end end UserInfo.current_user_id = 1 diff --git a/app/models/object_manager/attribute/validation.rb b/app/models/object_manager/attribute/validation.rb index e774f9f61..470fccc32 100644 --- a/app/models/object_manager/attribute/validation.rb +++ b/app/models/object_manager/attribute/validation.rb @@ -4,7 +4,7 @@ class ObjectManager::Attribute::Validation < ActiveModel::Validator include ::Mixin::HasBackends def validate(record) - return if validation_unneeded? + return if !validation_needed? @record = record sanitize_memory_cache @@ -20,10 +20,12 @@ class ObjectManager::Attribute::Validation < ActiveModel::Validator attr_reader :record - def validation_unneeded? - return true if Setting.get('import_mode') + def validation_needed? + return false if Setting.get('import_mode') - ApplicationHandleInfo.current != 'application_server' + return false if ApplicationHandleInfo.context_without_custom_attributes? + + ApplicationHandleInfo.current == 'application_server' end def attributes_unchanged? diff --git a/app/models/ticket.rb b/app/models/ticket.rb index 7b113938d..f4e454cd4 100644 --- a/app/models/ticket.rb +++ b/app/models/ticket.rb @@ -290,7 +290,7 @@ returns raise Exceptions::UnprocessableEntity, 'Can\'t merge ticket with it self!' if id == target_ticket.id # update articles - Transaction.execute do + Transaction.execute context: 'merge' do Ticket::Article.where(ticket_id: id).each(&:touch) diff --git a/app/models/transaction.rb b/app/models/transaction.rb index 36ee93dc8..f57bf6cab 100644 --- a/app/models/transaction.rb +++ b/app/models/transaction.rb @@ -2,7 +2,7 @@ class Transaction attr_reader :options - attr_accessor :original_user_id, :original_interface_handle + attr_accessor :original_user_id, :original_interface_handle, :original_interface_context def initialize(options = {}) @options = options @@ -32,6 +32,7 @@ class Transaction reset_user_id_start bulk_import_start interface_handle_start + interface_context_start end def start_transaction @@ -45,6 +46,7 @@ class Transaction def finish_transaction interface_handle_finish + interface_context_finish TransactionDispatcher.commit(options) PushMessages.finish @@ -101,4 +103,22 @@ class Transaction ApplicationHandleInfo.current = original_interface_handle end + + def interface_context? + options[:context].present? + end + + def interface_context_start + return if !interface_context? + + self.original_interface_context = ApplicationHandleInfo.context + + ApplicationHandleInfo.context = options[:context] + end + + def interface_context_finish + return if !interface_context? + + ApplicationHandleInfo.context = original_interface_context + end end diff --git a/lib/application_handle_info.rb b/lib/application_handle_info.rb index ca29b3c68..1756a668d 100644 --- a/lib/application_handle_info.rb +++ b/lib/application_handle_info.rb @@ -1,13 +1,9 @@ # Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/ module ApplicationHandleInfo - def self.current - Thread.current[:application_handle] || 'unknown' - end - - def self.current=(name) - Thread.current[:application_handle] = name - end + # stores current application handler. + # for example application_server, scheduler, websocket, postmaster... + thread_mattr_accessor :current def self.postmaster? return false if current.blank? @@ -24,4 +20,23 @@ module ApplicationHandleInfo ensure self.current = orig end + + # stores action context + # for example merge, twitter, telegram.... + # used to determine if custom attribute validation shall run + thread_mattr_accessor :context + + def self.in_context(name) + raise ArgumentError, 'requires a block' if !block_given? + + orig = context + self.context = name + yield + ensure + self.context = orig + end + + def self.context_without_custom_attributes? + %w[merge twitter telegram facebook form mail sms].include? context.to_s + end end diff --git a/lib/facebook.rb b/lib/facebook.rb index 9cb86b65d..adbc43d55 100644 --- a/lib/facebook.rb +++ b/lib/facebook.rb @@ -305,7 +305,7 @@ result ticket = nil # use transaction - Transaction.execute(reset_user_id: true) do + Transaction.execute(reset_user_id: true, context: 'facebook') do existing_article = Ticket::Article.find_by(message_id: post['id']) ticket = if existing_article existing_article.ticket diff --git a/lib/telegram.rb b/lib/telegram.rb index fafaf9add..5b2412568 100644 --- a/lib/telegram.rb +++ b/lib/telegram.rb @@ -744,7 +744,7 @@ returns ticket = nil # use transaction - Transaction.execute(reset_user_id: true) do + Transaction.execute(reset_user_id: true, context: 'telegram') do user = to_user(params) ticket = to_ticket(params, user, group_id, channel) to_article(params, user, ticket, channel) diff --git a/lib/twitter_sync.rb b/lib/twitter_sync.rb index 0f397eed7..af244457b 100644 --- a/lib/twitter_sync.rb +++ b/lib/twitter_sync.rb @@ -450,7 +450,7 @@ class TwitterSync Rails.logger.debug { 'import tweet' } ticket = nil - Transaction.execute(reset_user_id: true) do + Transaction.execute(reset_user_id: true, context: 'twitter') do # check if parent exists user = to_user(tweet) diff --git a/spec/lib/application_handle_info_spec.rb b/spec/lib/application_handle_info_spec.rb index daf755f14..f3a71d005 100644 --- a/spec/lib/application_handle_info_spec.rb +++ b/spec/lib/application_handle_info_spec.rb @@ -3,6 +3,24 @@ require 'rails_helper' RSpec.describe ApplicationHandleInfo do + shared_context 'safe block execution' do |attribute:| + # This `around` block is identical to ApplicationHandleInfo.use. + # + # Q: So why don't we just use it here to DRY things up? + # A: Because that's the method we're trying to test, dummy! + # + # Q: Why can't we do `before { ApplicationHandleInfo.current = 'foo' }` instead? + # A: Because that would change `ApplicationHandleInfo.current` for all subsequent specs. + # (RSpec uses database transactions to keep test environments clean, + # but `ApplicationHandleInfo.current` lives outside of the database.) + around do |example| + original = described_class.send(attribute) + described_class.send("#{attribute}=", 'foo') + example.run + described_class.send("#{attribute}=", original) + end + end + describe '.use' do it 'requires a block' do expect { described_class.use('foo') } @@ -10,21 +28,7 @@ RSpec.describe ApplicationHandleInfo do end context 'for a given starting ApplicationHandleInfo' do - # This `around` block is identical to ApplicationHandleInfo.use. - # - # Q: So why don't we just use it here to DRY things up? - # A: Because that's the method we're trying to test, dummy! - # - # Q: Why can't we do `before { ApplicationHandleInfo.current = 'foo' }` instead? - # A: Because that would change `ApplicationHandleInfo.current` for all subsequent specs. - # (RSpec uses database transactions to keep test environments clean, - # but `ApplicationHandleInfo.current` lives outside of the database.) - around do |example| - original = described_class.current - described_class.current = 'foo' - example.run - described_class.current = original - end + include_examples 'safe block execution', attribute: :current it 'runs the block using the given ApplicationHandleInfo' do described_class.use('bar') do @@ -47,4 +51,56 @@ RSpec.describe ApplicationHandleInfo do end end end + + describe '.in_context' do + it 'requires a block' do + expect { described_class.use('foo') } + .to raise_error(ArgumentError) + end + + context 'for a given starting ApplicationHandleInfo' do + include_examples 'safe block execution', attribute: :context + + it 'runs the block using the given ApplicationHandleInfo' do + described_class.in_context('bar') do + expect(described_class.context).to eq('bar') + end + end + + it 'resets ApplicationHandleInfo to its original value' do + described_class.in_context('bar') { nil } + + expect(described_class.context).to eq('foo') + end + + context 'when an error is raised in the given block' do + it 'does not rescue the error, and still resets ApplicationHandleInfo' do + expect { described_class.in_context('bar') { raise } } + .to raise_error(StandardError) + .and not_change(described_class, :context) + end + end + end + end + + describe '.context_without_custom_attributes?' do + it 'returns false when set to default context' do + expect(described_class).not_to be_context_without_custom_attributes + end + + context 'for a given starting ApplicationHandleInfo' do + include_examples 'safe block execution', attribute: :context + + it 'returns true when set to context that does not use custom attributes' do + described_class.context = 'merge' + expect(described_class).to be_context_without_custom_attributes + end + + it 'returns true when in .in_context block' do + described_class.in_context(:merge) do + expect(described_class).to be_context_without_custom_attributes + end + end + end + end end diff --git a/spec/models/channel/driver/facebook_spec.rb b/spec/models/channel/driver/facebook_spec.rb index a894b0c03..677799698 100644 --- a/spec/models/channel/driver/facebook_spec.rb +++ b/spec/models/channel/driver/facebook_spec.rb @@ -10,7 +10,21 @@ RSpec.describe Channel::Driver::Facebook, use_vcr: true, required_envs: %w[FACEB let!(:channel) { create(:facebook_channel) } + # This test requires ENV variables to run + # Yes, it runs off VCR cassette + # But it requires following ENV variables to be present: + # + # export FACEBOOK_CUSTOMER_ID=placeholder + # export FACEBOOK_CUSTOMER_FIRSTNAME=placeholder + # export FACEBOOK_CUSTOMER_LASTNAME=placeholder + # export FACEBOOK_PAGE_1_ACCCESS_TOKEN=placeholder + # export FACEBOOK_PAGE_1_ID=123 + # export FACEBOOK_PAGE_1_NAME=placeholder + # export FACEBOOK_PAGE_1_POST_ID=placeholder + # export FACEBOOK_PAGE_1_POST_COMMENT_ID=placeholder + # it 'tests full run' do # rubocop:disable RSpec/MultipleExpectations, RSpec/ExampleLength + allow(ApplicationHandleInfo).to receive('context=') ExternalCredential.create name: :facebook, credentials: { application_id: ENV['FACEBOOK_APPLICATION_ID'], application_secret: ENV['FACEBOOK_APPLICATION_SECRET'] } channel.fetch @@ -50,5 +64,7 @@ RSpec.describe Channel::Driver::Facebook, use_vcr: true, required_envs: %w[FACEB expect(outbound_article).to be_present expect(outbound_article.from).to eq ENV['FACEBOOK_PAGE_1_NAME'] expect(outbound_article.ticket.articles.count).to be ticket_initial_count + 1 + + expect(ApplicationHandleInfo).to have_received('context=').with('facebook').at_least(1) end end diff --git a/spec/models/channel/driver/twitter_spec.rb b/spec/models/channel/driver/twitter_spec.rb index eacddc5b4..d6ceda5da 100644 --- a/spec/models/channel/driver/twitter_spec.rb +++ b/spec/models/channel/driver/twitter_spec.rb @@ -745,6 +745,20 @@ RSpec.describe Channel::Driver::Twitter, required_envs: %w[TWITTER_CONSUMER_KEY end describe '#fetch', use_vcr: :time_sensitive do + context 'when ApplicationHandleInfo context' do + it 'gets switched to "twitter"' do + allow(ApplicationHandleInfo).to receive('context=') + channel.fetch + expect(ApplicationHandleInfo).to have_received('context=').with('twitter').at_least(1) + end + + it 'reverts back to default' do + allow(ApplicationHandleInfo).to receive('context=') + channel.fetch + expect(ApplicationHandleInfo.context).not_to eq 'twitter' + end + end + describe 'rate limiting' do before do allow(Rails.env).to receive(:test?).and_return(false) diff --git a/spec/models/object_manager/attribute/validation_spec.rb b/spec/models/object_manager/attribute/validation_spec.rb index 2aedf832f..799c7e880 100644 --- a/spec/models/object_manager/attribute/validation_spec.rb +++ b/spec/models/object_manager/attribute/validation_spec.rb @@ -97,5 +97,41 @@ RSpec.describe ObjectManager::Attribute::Validation, application_handle: 'applic end end end + + context 'when custom attribute exists' do + before do + allow(subject).to receive(:attributes_unchanged?) # rubocop:disable RSpec/SubjectStub + end + + it 'runs validation in default context' do + ApplicationHandleInfo.in_context(nil) do + subject.validate(record) + end + + expect(subject).to have_received(:attributes_unchanged?) # rubocop:disable RSpec/SubjectStub + end + + it 'does not run validations in contexts that do not use custom attributes' do + ApplicationHandleInfo.in_context('merge') do + subject.validate(record) + end + + expect(subject).not_to have_received(:attributes_unchanged?) # rubocop:disable RSpec/SubjectStub + end + end + end + + describe '#validation_needed' do + it 'runs validation in default context' do + ApplicationHandleInfo.in_context(nil) do + expect(subject.send(:validation_needed?)).to be true + end + end + + it 'does not run validations in contexts that do not use custom attributes' do + ApplicationHandleInfo.in_context('merge') do + expect(subject.send(:validation_needed?)).to be false + end + end end end diff --git a/spec/models/ticket_spec.rb b/spec/models/ticket_spec.rb index d9df81f30..9ed46d4bd 100644 --- a/spec/models/ticket_spec.rb +++ b/spec/models/ticket_spec.rb @@ -418,6 +418,21 @@ RSpec.describe Ticket, type: :model do expect(log).to include(start_with("Another ticket was merged into ticket (#{target_ticket.title})")) end end + + context 'ApplicationHandleInfo context' do + it 'gets switched to "merge"' do + allow(ApplicationHandleInfo).to receive('context=') + ticket.merge_to(ticket_id: target_ticket.id, user_id: 1) + expect(ApplicationHandleInfo).to have_received('context=').with('merge').at_least(1) + end + + it 'reverts back to default' do + allow(ApplicationHandleInfo).to receive('context=') + ticket.merge_to(ticket_id: target_ticket.id, user_id: 1) + + expect(ApplicationHandleInfo.context).not_to eq 'merge' + end + end end describe '#perform_changes' do diff --git a/spec/requests/form_spec.rb b/spec/requests/form_spec.rb index 4b45ca210..7fc28391d 100644 --- a/spec/requests/form_spec.rb +++ b/spec/requests/form_spec.rb @@ -233,5 +233,27 @@ RSpec.describe 'Form', type: :request, searchindex: true do expect(response).to have_http_status(:forbidden) end + + context 'when ApplicationHandleInfo context' do + let(:fingerprint) { SecureRandom.hex(40) } + let(:token) { json_response['token'] } + + before do + Setting.set('form_ticket_create', true) + post '/api/v1/form_config', params: { fingerprint: fingerprint }, as: :json + end + + it 'gets switched to "form"' do + allow(ApplicationHandleInfo).to receive('context=') + post '/api/v1/form_submit', params: { fingerprint: fingerprint, token: token, name: 'Bob Smith', email: 'discard@znuny.com', title: 'test-last', body: 'hello' }, as: :json + expect(ApplicationHandleInfo).to have_received('context=').with('form').at_least(1) + end + + it 'reverts back to default' do + allow(ApplicationHandleInfo).to receive('context=') + post '/api/v1/form_submit', params: { fingerprint: fingerprint, token: token, name: 'Bob Smith', email: 'discard@znuny.com', title: 'test-last', body: 'hello' }, as: :json + expect(ApplicationHandleInfo.context).not_to eq 'form' + end + end end end diff --git a/spec/requests/integration/telegram_spec.rb b/spec/requests/integration/telegram_spec.rb index a185e1ae2..621e62e12 100644 --- a/spec/requests/integration/telegram_spec.rb +++ b/spec/requests/integration/telegram_spec.rb @@ -398,6 +398,20 @@ RSpec.describe 'Telegram Webhook Integration', type: :request do expect(ticket2.articles.first.to).to eq('@ChrispressoBot2') end + context 'when ApplicationHandleInfo context' do + it 'gets switched to "telegram"' do + allow(ApplicationHandleInfo).to receive('context=') + post callback_url, params: read_message('private', 'text'), as: :json + expect(ApplicationHandleInfo).to have_received('context=').with('telegram').at_least(1) + end + + it 'reverts back to default' do + allow(ApplicationHandleInfo).to receive('context=') + post callback_url, params: read_message('private', 'text'), as: :json + expect(ApplicationHandleInfo.context).not_to eq 'telegram' + end + end + end def read_message(type, file) diff --git a/spec/requests/integration/twilio_sms_spec.rb b/spec/requests/integration/twilio_sms_spec.rb index 4c2a34ff1..56a554a84 100644 --- a/spec/requests/integration/twilio_sms_spec.rb +++ b/spec/requests/integration/twilio_sms_spec.rb @@ -201,6 +201,28 @@ RSpec.describe 'Twilio SMS', type: :request do expect(customer.id).to eq(User.last.id) end + it 'does basic call when ticket has a custom attribute', db_strategy: :reset do + create(:object_manager_attribute_text, screens: attributes_for(:required_screen)) + ObjectManager::Attribute.migration_execute + + UserInfo.current_user_id = 1 + create( + :channel, + area: 'Sms::Account', + options: { + adapter: 'sms/twilio', + webhook_token: 'f409460e50f76d331fdac8ba7b7963b6', + account_id: '111', + token: '223', + sender: '333', + }, + group_id: Group.first.id, + ) + + post '/api/v1/sms_webhook/f409460e50f76d331fdac8ba7b7963b6', params: read_message('inbound_sms1'), as: :json + expect(response).to have_http_status(:ok) + end + def read_message(file) JSON.parse(File.read(Rails.root.join('test', 'data', 'twilio', "#{file}.json"))) end diff --git a/spec/support/application_handle_info.rb b/spec/support/application_handle_info.rb index 960130fca..be5644402 100644 --- a/spec/support/application_handle_info.rb +++ b/spec/support/application_handle_info.rb @@ -6,4 +6,10 @@ RSpec.configure do |config| example.run end end + + config.around(:each, :application_handle_context) do |example| + ApplicationHandleInfo.in_context(example.metadata[:application_handle_context]) do + example.run + end + end end diff --git a/test/data/vcr_cassettes/models/channel/driver/twitter/when_applicationhandleinfo_context_gets_switched_to_twitter_.yml b/test/data/vcr_cassettes/models/channel/driver/twitter/when_applicationhandleinfo_context_gets_switched_to_twitter_.yml new file mode 100644 index 000000000..3c8e1c562 --- /dev/null +++ b/test/data/vcr_cassettes/models/channel/driver/twitter/when_applicationhandleinfo_context_gets_switched_to_twitter_.yml @@ -0,0 +1,437 @@ +--- +http_interactions: +- request: + method: get + uri: https://api.twitter.com/1.1/search/tweets.json?count=100&q=zammad&result_type=mixed + body: + encoding: UTF-8 + string: '' + headers: + User-Agent: + - TwitterRubyGem/6.2.0 + Authorization: + - OAuth oauth_consumer_key="REDACTED", oauth_nonce="4cf21224c8251d6a4258c53521e91153", + oauth_signature="1Bhg5ml%2Fqh6g9vzdqS61dVhkOMQ%3D", oauth_signature_method="HMAC-SHA1", + oauth_timestamp="1580796438", oauth_token="REDACTED", + oauth_version="1.0" + Connection: + - close + Host: + - api.twitter.com + response: + status: + code: 200 + message: OK + headers: + Cache-Control: + - no-cache, no-store, must-revalidate, pre-check=0, post-check=0 + Connection: + - close + Content-Disposition: + - attachment; filename=json.json + Content-Length: + - '124247' + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 04 Feb 2020 06:07:18 GMT + Expires: + - Tue, 31 Mar 1981 05:00:00 GMT + Last-Modified: + - Tue, 04 Feb 2020 06:07:18 GMT + Pragma: + - no-cache + Server: + - tsa_m + Set-Cookie: + - guest_id=v1%3A158079643841913533; Max-Age=63072000; Expires=Thu, 3 Feb 2022 + 06:07:18 GMT; Path=/; Domain=.twitter.com + - lang=en; Path=/ + - personalization_id="v1_sndnLJA9djOn3UynRVrAHg=="; Max-Age=63072000; Expires=Thu, + 3 Feb 2022 06:07:18 GMT; Path=/; Domain=.twitter.com + Status: + - 200 OK + Strict-Transport-Security: + - max-age=631138519 + X-Access-Level: + - read-write-directmessages + X-Connection-Hash: + - e258dfc9229bc838cd9d50c00177c48a + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Rate-Limit-Limit: + - '180' + X-Rate-Limit-Remaining: + - '179' + X-Rate-Limit-Reset: + - '1580797338' + X-Response-Time: + - '182' + X-Transaction: + - 00cf981300b03fb6 + X-Twitter-Response-Tags: + - BouncerCompliant + X-Xss-Protection: + - '0' + body: + encoding: UTF-8 + string: '{"statuses":[{"created_at":"Thu + Jan 30 17:54:11 +0000 2020","id":1222941090417803264,"id_str":"1222941090417803264","text":"RT + @zammadhq: Good morning! Come to our Global Office. And stay where your heart + is. We are looking for creative colleagues! \ud83d\udc69\u200d\ud83d\ude92\ud83d\udc68\u200d\ud83c\udf3e\ud83d\udc68\u200d\ud83c\udf73\ud83e\uddb9\u200d\u2640\ufe0f\u2026","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"zammadhq","name":"Zammad + HQ","id":785412523193425920,"id_str":"785412523193425920","indices":[3,12]}],"urls":[]},"metadata":{"iso_language_code":"en","result_type":"recent"},"source":"\u003ca + href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":1095164760683937793,"id_str":"1095164760683937793","name":"epicjobs","screen_name":"epicjobs","location":"","description":"Discover + jobs for design, product, ux, ui, engineering, pm, research, and more via + Twitter.","url":"https:\/\/t.co\/SEL0wCY0OD","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/SEL0wCY0OD","expanded_url":"http:\/\/epicjobs.co","display_url":"epicjobs.co","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":10704,"friends_count":3,"listed_count":59,"created_at":"Tue + Feb 12 03:36:40 +0000 2019","favourites_count":456,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":403,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1121064385504534529\/-Wgf9Ot2_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1121064385504534529\/-Wgf9Ot2_normal.png","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/1095164760683937793\/1558719255","profile_link_color":"333333","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweeted_status":{"created_at":"Tue + Jan 28 10:43:56 +0000 2020","id":1222108036795334657,"id_str":"1222108036795334657","text":"Good + morning! Come to our Global Office. And stay where your heart is. We are looking + for creative colleagues! \ud83d\udc69\u200d\ud83d\ude92\u2026 https:\/\/t.co\/FOl3SnktR7","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/FOl3SnktR7","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/1222108036795334657","display_url":"twitter.com\/i\/web\/status\/1\u2026","indices":[116,139]}]},"metadata":{"iso_language_code":"en","result_type":"recent"},"source":"\u003ca + href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":785412523193425920,"id_str":"785412523193425920","name":"Zammad + HQ","screen_name":"zammadhq","location":"","description":"Helpdesk and Customer + Support made easy. Open Source for download or to go with SaaS. #zammad","url":"https:\/\/t.co\/XITyrXmhTP","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/XITyrXmhTP","expanded_url":"http:\/\/zammad.com","display_url":"zammad.com","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":595,"friends_count":577,"listed_count":19,"created_at":"Mon + Oct 10 09:31:52 +0000 2016","favourites_count":349,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":551,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/785412960797745152\/wxdIvejo_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/785412960797745152\/wxdIvejo_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/785412523193425920\/1476097853","profile_link_color":"31B068","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":7,"favorite_count":11,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},"is_quote_status":false,"retweet_count":7,"favorite_count":0,"favorited":false,"retweeted":false,"lang":"en"},{"created_at":"Tue + Jan 28 11:56:51 +0000 2020","id":1222126386334388225,"id_str":"1222126386334388225","text":"@zammadhq + Are you guys going to be at FOSDEM in Brussels this weekend? As Zammad users + ourselves we would love to c\u2026 https:\/\/t.co\/2OBpnTUyIL","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"zammadhq","name":"Zammad + HQ","id":785412523193425920,"id_str":"785412523193425920","indices":[0,9]}],"urls":[{"url":"https:\/\/t.co\/2OBpnTUyIL","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/1222126386334388225","display_url":"twitter.com\/i\/web\/status\/1\u2026","indices":[117,140]}]},"metadata":{"iso_language_code":"en","result_type":"recent"},"source":"\u003ca + href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e","in_reply_to_status_id":1222108036795334657,"in_reply_to_status_id_str":"1222108036795334657","in_reply_to_user_id":785412523193425920,"in_reply_to_user_id_str":"785412523193425920","in_reply_to_screen_name":"zammadhq","user":{"id":1168172858469732355,"id_str":"1168172858469732355","name":"Cloud68","screen_name":"Cloud68HQ","location":"Tirana, + Albania","description":"Reclaim your data from big tech!\n\nManaging Nextcloud, + Discourse & other open source instances for you, so you don''t have to. + Official ProtonMail partners.","url":"https:\/\/t.co\/eaUgbpg8RK","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/eaUgbpg8RK","expanded_url":"https:\/\/cloud68.co","display_url":"cloud68.co","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":91,"friends_count":227,"listed_count":1,"created_at":"Sun + Sep 01 14:44:59 +0000 2019","favourites_count":139,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":49,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1189466673532854272\/ZZRN4sw8_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1189466673532854272\/ZZRN4sw8_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/1168172858469732355\/1572424995","profile_link_color":"1DA1F2","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":1,"favorited":false,"retweeted":false,"lang":"en"},{"created_at":"Tue + Jan 28 10:51:28 +0000 2020","id":1222109934923460608,"id_str":"1222109934923460608","text":"Come + and join our team to bring Zammad even further forward! \n\nIt''s gonna be + amazing, promised! https:\/\/t.co\/DMlrQdIEeE","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/DMlrQdIEeE","expanded_url":"https:\/\/twitter.com\/zammadhq\/status\/1222108036795334657","display_url":"twitter.com\/zammadhq\/statu\u2026","indices":[96,119]}]},"metadata":{"iso_language_code":"en","result_type":"recent"},"source":"\u003ca + href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":290111612,"id_str":"290111612","name":"Mr.Generation","screen_name":"Mr_Generation","location":"Berlin, + Deutschland","description":"Streaming\/Gaming | Light technican (Hobby) | + Webmaster of so much | IT-Admin | Photography | coffee junkie | Zammad | Berlin","url":"https:\/\/t.co\/sXMe6W0b5t","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/sXMe6W0b5t","expanded_url":"https:\/\/www.mrgeneration.de\/","display_url":"mrgeneration.de","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":62,"friends_count":116,"listed_count":2,"created_at":"Fri + Apr 29 19:07:04 +0000 2011","favourites_count":693,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":1788,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1095305778460798983\/mA-tSgeW_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1095305778460798983\/mA-tSgeW_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/290111612\/1549976386","profile_link_color":"404040","profile_sidebar_border_color":"FC58FC","profile_sidebar_fill_color":"FAEDF8","profile_text_color":"F26F9F","profile_use_background_image":true,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":true,"quoted_status_id":1222108036795334657,"quoted_status_id_str":"1222108036795334657","quoted_status":{"created_at":"Tue + Jan 28 10:43:56 +0000 2020","id":1222108036795334657,"id_str":"1222108036795334657","text":"Good + morning! Come to our Global Office. And stay where your heart is. We are looking + for creative colleagues! \ud83d\udc69\u200d\ud83d\ude92\u2026 https:\/\/t.co\/FOl3SnktR7","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/FOl3SnktR7","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/1222108036795334657","display_url":"twitter.com\/i\/web\/status\/1\u2026","indices":[116,139]}]},"metadata":{"iso_language_code":"en","result_type":"recent"},"source":"\u003ca + href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":785412523193425920,"id_str":"785412523193425920","name":"Zammad + HQ","screen_name":"zammadhq","location":"","description":"Helpdesk and Customer + Support made easy. Open Source for download or to go with SaaS. #zammad","url":"https:\/\/t.co\/XITyrXmhTP","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/XITyrXmhTP","expanded_url":"http:\/\/zammad.com","display_url":"zammad.com","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":595,"friends_count":577,"listed_count":19,"created_at":"Mon + Oct 10 09:31:52 +0000 2016","favourites_count":349,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":551,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/785412960797745152\/wxdIvejo_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/785412960797745152\/wxdIvejo_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/785412523193425920\/1476097853","profile_link_color":"31B068","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":7,"favorite_count":11,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},"retweet_count":0,"favorite_count":4,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},{"created_at":"Sat + Dec 01 06:30:03 +0000 2018","id":1068754078241501184,"id_str":"1068754078241501184","text":"GitHub + Trending Archive, 29 Nov 2018, Ruby. mgleon08\/example-crawler, tongueroo\/jets, + testdouble\/standard, matthe\u2026 https:\/\/t.co\/JhiOoxbwVL","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/JhiOoxbwVL","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/1068754078241501184","display_url":"twitter.com\/i\/web\/status\/1\u2026","indices":[117,140]}]},"metadata":{"iso_language_code":"en","result_type":"recent"},"source":"\u003ca + href=\"https:\/\/github.example.com\/awesome\/\" rel=\"nofollow\"\u003eGithub + Awesome Search\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":993040996744159233,"id_str":"993040996744159233","name":"example","screen_name":"example","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":81,"friends_count":105,"listed_count":1,"created_at":"Sun + May 06 08:13:18 +0000 2018","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":9355,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/996714244090417152\/2QDJvxkN_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/996714244090417152\/2QDJvxkN_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/993040996744159233\/1526470497","profile_link_color":"E81C4F","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":0,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"}],"search_metadata":{"completed_in":0.045,"max_id":1224440380881428480,"max_id_str":"1224440380881428480","next_results":"?max_id=1221826904430346239&q=zammad&count=100&include_entities=1&result_type=mixed","query":"zammad","refresh_url":"?since_id=1224440380881428480&q=zammad&result_type=mixed&include_entities=1","count":100,"since_id":0,"since_id_str":"0"}}' + http_version: + recorded_at: Tue, 04 Feb 2020 06:07:18 GMT +- request: + method: get + uri: http://pbs.twimg.com/profile_images/1121064385504534529/-Wgf9Ot2_bigger.png + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Zammad User Agent + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + Host: + - pbs.twimg.com + response: + status: + code: 200 + message: OK + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Content-Length + Age: + - '76528' + Cache-Control: + - max-age=604800, must-revalidate + Content-Type: + - image/png + Date: + - Tue, 04 Feb 2020 06:07:27 GMT + Last-Modified: + - Wed, 24 Apr 2019 14:50:32 GMT + Server: + - ECS (tpe/68A8) + Strict-Transport-Security: + - max-age=631138519 + Surrogate-Key: + - profile_images profile_images/bucket/2 profile_images/1121064385504534529 + X-Cache: + - HIT + X-Connection-Hash: + - d794e5057dfcb8c176f39934751f5fec + X-Content-Type-Options: + - nosniff + X-Response-Time: + - '110' + Content-Length: + - '4041' + body: + encoding: ASCII-8BIT + string: !binary |- + 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 + http_version: + recorded_at: Tue, 04 Feb 2020 06:07:27 GMT +- request: + method: get + uri: http://maps.googleapis.com/maps/api/geocode/json?address=Tirana,%20Albania&sensor=true + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Zammad User Agent + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + Host: + - maps.googleapis.com + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Date: + - Tue, 04 Feb 2020 06:07:32 GMT + Pragma: + - no-cache + Expires: + - Fri, 01 Jan 1990 00:00:00 GMT + Cache-Control: + - no-cache, must-revalidate + Vary: + - Accept-Language + Access-Control-Allow-Origin: + - "*" + Server: + - mafe + Content-Length: + - '202' + X-Xss-Protection: + - '0' + X-Frame-Options: + - SAMEORIGIN + Server-Timing: + - gfet4t7; dur=1 + body: + encoding: ASCII-8BIT + string: | + { + "error_message" : "You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account", + "results" : [], + "status" : "REQUEST_DENIED" + } + http_version: + recorded_at: Tue, 04 Feb 2020 06:07:32 GMT +- request: + method: get + uri: http://pbs.twimg.com/profile_images/1189466673532854272/ZZRN4sw8_bigger.jpg + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Zammad User Agent + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + Host: + - pbs.twimg.com + response: + status: + code: 200 + message: OK + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Content-Length + Age: + - '237853' + Cache-Control: + - max-age=604800, must-revalidate + Content-Type: + - image/jpeg + Date: + - Tue, 04 Feb 2020 06:07:32 GMT + Last-Modified: + - Wed, 30 Oct 2019 08:56:48 GMT + Server: + - ECS (tpe/68A1) + Strict-Transport-Security: + - max-age=631138519 + Surrogate-Key: + - profile_images profile_images/bucket/7 profile_images/1189466673532854272 + X-Cache: + - HIT + X-Connection-Hash: + - b140b365ea73f0d34e1c7c5a2ad7cbc9 + X-Content-Type-Options: + - nosniff + X-Response-Time: + - '108' + Content-Length: + - '3863' + body: + encoding: ASCII-8BIT + string: !binary |- + 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vb5H8//EACQRAQACAQIFBQEAAAAAAAAAAAEAETEhURBBcYGhIGGRsfDB/9oACAEDAQE/ELMwGH7vLWu8B6FfBqg68/DrK2uz9xaBvAr3fExETlMr23+YFFMdD195QGvVD+sq5F54KZBjjc5iAplWppslnbn5l6wK9r+2K2bd39p24f/EACMRAQABAwMFAQEBAAAAAAAAAAERACExQVFhcYGRocHwENH/2gAIAQIBAT8Qzlg/Qc0ThubQp1WO1qJHVGFLbmvqj5gO5YnZNXqkUOaEC04OqSu2KAIBwMEGUqQUFHITm+aWFb4ieTD1LetqlkL3Hqa9yKC0uW5nccTQ0uys8p8MVZsS/PtMSNDqqNvfimRqELziL4qZBWQN9mdPjvQMho2JtOT70ouA8Aq8QgUYOEwTLPCn7/TBisfuW9IpGGkTC7qpd9HxV4JOlnmCohOA+6vf+f/EACcQAQABAwQBAwUBAQAAAAAAAAERACExQVFhcZGBofAQwdHh8SCx/9oACAEBAAE/EKdoI+HdWi31Fr85u/tS0aSxI6kLDhigwzVdtyMpxzNZQAtCoLAyRMLUboGH2i5IO6HMl9J06ibN/qp3isAEq020hZssAmp7MdvGMIguq4c0NN80nZItO6HhqEFOo6Fq5ASPhPMlEe2W81Fv6oLFWAQBny5gzktZG+JrjcTRGybn0hHEI5S/8MUaORSDLyYTtGPNTAfXmlwdB7/8U2ZEJxftO+XmoUM1JdIZUJLnK+xgPfmjROFGrJm9ufpouD6XKsa375o2QIza34AuelSb1Kgjhb2jMSz6UqYuLSZXopTXp5mgTb1jXdaztakYQl2XT9FGvRWc7bxQYqMDtZuOfOMU30FlooB5w/lS/DIVJT0+xQHFhEyLRKWYeK4fml4U+5DNmaYNoORiaJnk898YUhYkmZL5HE/QkHAgyqz1EUFggQ11HrW4Ax4/ihGglrKlIxma+afajaYDdIdlIAJS/wBihfSknpHJcp6O+aBsKVsZMjlr1WlROTJgC0aunrUE8sC51xFYlDmlLA/KN8jSCid3pvsK/kVM8QKGHqdY/tKplwmWjT8Vb/1EEtl0X42q2ZVzt7u7+5oiuhK1eS0vvSNmtQjHLZ8kmiHKTs9acX/VEBlFMFCnAt4qKM227U/NJlBXZtJ0AfLVHQeC76wN/wDtPhaZJvhdWqFBsaJH2eAeI3pNAEFjGozO/NXkuC2kuqht+monp3WVlcr9cmSw9x0eat8GIY2wpw0z1EVz4XxR8JNpE0VL3U57soSoELGzWtUobOl13Wr/AJayVkpg6/y//9kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= + http_version: + recorded_at: Tue, 04 Feb 2020 06:07:32 GMT +- request: + method: get + uri: http://maps.googleapis.com/maps/api/geocode/json?address=Tirana,%20Albania&sensor=true + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Zammad User Agent + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + Host: + - maps.googleapis.com + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Date: + - Tue, 04 Feb 2020 06:07:32 GMT + Pragma: + - no-cache + Expires: + - Fri, 01 Jan 1990 00:00:00 GMT + Cache-Control: + - no-cache, must-revalidate + Vary: + - Accept-Language + Access-Control-Allow-Origin: + - "*" + Server: + - mafe + Content-Length: + - '202' + X-Xss-Protection: + - '0' + X-Frame-Options: + - SAMEORIGIN + Server-Timing: + - gfet4t7; dur=1 + body: + encoding: ASCII-8BIT + string: | + { + "error_message" : "You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account", + "results" : [], + "status" : "REQUEST_DENIED" + } + http_version: + recorded_at: Tue, 04 Feb 2020 06:07:32 GMT +- request: + method: get + uri: https://api.twitter.com/1.1/statuses/show/1222108036795334657.json + body: + encoding: UTF-8 + string: '' + headers: + User-Agent: + - TwitterRubyGem/6.2.0 + Authorization: + - OAuth oauth_consumer_key="REDACTED", oauth_nonce="fadbc0e65e0cd98a1bbd46262121c7af", + oauth_signature="vqic%2BIyQkpIlEzbY2VXidbD2CQ4%3D", oauth_signature_method="HMAC-SHA1", + oauth_timestamp="1580796452", oauth_token="REDACTED", + oauth_version="1.0" + Connection: + - close + Host: + - api.twitter.com + response: + status: + code: 200 + message: OK + headers: + Cache-Control: + - no-cache, no-store, must-revalidate, pre-check=0, post-check=0 + Connection: + - close + Content-Disposition: + - attachment; filename=json.json + Content-Length: + - '2781' + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 04 Feb 2020 06:07:32 GMT + Expires: + - Tue, 31 Mar 1981 05:00:00 GMT + Last-Modified: + - Tue, 04 Feb 2020 06:07:32 GMT + Pragma: + - no-cache + Server: + - tsa_m + Set-Cookie: + - guest_id=v1%3A158079645287432567; Max-Age=63072000; Expires=Thu, 3 Feb 2022 + 06:07:32 GMT; Path=/; Domain=.twitter.com + - lang=en; Path=/ + - personalization_id="v1_8MuLQGGHeQ0iKjjEyK3kwA=="; Max-Age=63072000; Expires=Thu, + 3 Feb 2022 06:07:32 GMT; Path=/; Domain=.twitter.com + Status: + - 200 OK + Strict-Transport-Security: + - max-age=631138519 + X-Access-Level: + - read-write-directmessages + X-Connection-Hash: + - 608ef1d33f94f7800d75e9f14fc86838 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Rate-Limit-Limit: + - '900' + X-Rate-Limit-Remaining: + - '892' + X-Rate-Limit-Reset: + - '1580797340' + X-Response-Time: + - '125' + X-Transaction: + - 00dc12c800f73e29 + X-Twitter-Response-Tags: + - BouncerCompliant + X-Xss-Protection: + - '0' + body: + encoding: UTF-8 + string: '{"created_at":"Tue Jan 28 10:43:56 +0000 2020","id":1222108036795334657,"id_str":"1222108036795334657","text":"Good + morning! Come to our Global Office. And stay where your heart is. We are looking + for creative colleagues! \ud83d\udc69\u200d\ud83d\ude92\u2026 https:\/\/t.co\/FOl3SnktR7","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/FOl3SnktR7","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/1222108036795334657","display_url":"twitter.com\/i\/web\/status\/1\u2026","indices":[116,139]}]},"source":"\u003ca + href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":785412523193425920,"id_str":"785412523193425920","name":"Zammad + HQ","screen_name":"zammadhq","location":"","description":"Helpdesk and Customer + Support made easy. Open Source for download or to go with SaaS. #zammad","url":"https:\/\/t.co\/XITyrXmhTP","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/XITyrXmhTP","expanded_url":"http:\/\/zammad.com","display_url":"zammad.com","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":595,"friends_count":577,"listed_count":19,"created_at":"Mon + Oct 10 09:31:52 +0000 2016","favourites_count":349,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":551,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/785412960797745152\/wxdIvejo_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/785412960797745152\/wxdIvejo_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/785412523193425920\/1476097853","profile_link_color":"31B068","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"can_media_tag":true,"followed_by":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":7,"favorite_count":11,"favorited":false,"retweeted":false,"possibly_sensitive":false,"possibly_sensitive_appealable":false,"lang":"en"}' + http_version: + recorded_at: Tue, 04 Feb 2020 06:07:32 GMT +recorded_with: VCR 4.0.0 diff --git a/test/data/vcr_cassettes/models/channel/driver/twitter/when_applicationhandleinfo_context_reverts_back_to_default.yml b/test/data/vcr_cassettes/models/channel/driver/twitter/when_applicationhandleinfo_context_reverts_back_to_default.yml new file mode 100644 index 000000000..3c8e1c562 --- /dev/null +++ b/test/data/vcr_cassettes/models/channel/driver/twitter/when_applicationhandleinfo_context_reverts_back_to_default.yml @@ -0,0 +1,437 @@ +--- +http_interactions: +- request: + method: get + uri: https://api.twitter.com/1.1/search/tweets.json?count=100&q=zammad&result_type=mixed + body: + encoding: UTF-8 + string: '' + headers: + User-Agent: + - TwitterRubyGem/6.2.0 + Authorization: + - OAuth oauth_consumer_key="REDACTED", oauth_nonce="4cf21224c8251d6a4258c53521e91153", + oauth_signature="1Bhg5ml%2Fqh6g9vzdqS61dVhkOMQ%3D", oauth_signature_method="HMAC-SHA1", + oauth_timestamp="1580796438", oauth_token="REDACTED", + oauth_version="1.0" + Connection: + - close + Host: + - api.twitter.com + response: + status: + code: 200 + message: OK + headers: + Cache-Control: + - no-cache, no-store, must-revalidate, pre-check=0, post-check=0 + Connection: + - close + Content-Disposition: + - attachment; filename=json.json + Content-Length: + - '124247' + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 04 Feb 2020 06:07:18 GMT + Expires: + - Tue, 31 Mar 1981 05:00:00 GMT + Last-Modified: + - Tue, 04 Feb 2020 06:07:18 GMT + Pragma: + - no-cache + Server: + - tsa_m + Set-Cookie: + - guest_id=v1%3A158079643841913533; Max-Age=63072000; Expires=Thu, 3 Feb 2022 + 06:07:18 GMT; Path=/; Domain=.twitter.com + - lang=en; Path=/ + - personalization_id="v1_sndnLJA9djOn3UynRVrAHg=="; Max-Age=63072000; Expires=Thu, + 3 Feb 2022 06:07:18 GMT; Path=/; Domain=.twitter.com + Status: + - 200 OK + Strict-Transport-Security: + - max-age=631138519 + X-Access-Level: + - read-write-directmessages + X-Connection-Hash: + - e258dfc9229bc838cd9d50c00177c48a + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Rate-Limit-Limit: + - '180' + X-Rate-Limit-Remaining: + - '179' + X-Rate-Limit-Reset: + - '1580797338' + X-Response-Time: + - '182' + X-Transaction: + - 00cf981300b03fb6 + X-Twitter-Response-Tags: + - BouncerCompliant + X-Xss-Protection: + - '0' + body: + encoding: UTF-8 + string: '{"statuses":[{"created_at":"Thu + Jan 30 17:54:11 +0000 2020","id":1222941090417803264,"id_str":"1222941090417803264","text":"RT + @zammadhq: Good morning! Come to our Global Office. And stay where your heart + is. We are looking for creative colleagues! \ud83d\udc69\u200d\ud83d\ude92\ud83d\udc68\u200d\ud83c\udf3e\ud83d\udc68\u200d\ud83c\udf73\ud83e\uddb9\u200d\u2640\ufe0f\u2026","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"zammadhq","name":"Zammad + HQ","id":785412523193425920,"id_str":"785412523193425920","indices":[3,12]}],"urls":[]},"metadata":{"iso_language_code":"en","result_type":"recent"},"source":"\u003ca + href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":1095164760683937793,"id_str":"1095164760683937793","name":"epicjobs","screen_name":"epicjobs","location":"","description":"Discover + jobs for design, product, ux, ui, engineering, pm, research, and more via + Twitter.","url":"https:\/\/t.co\/SEL0wCY0OD","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/SEL0wCY0OD","expanded_url":"http:\/\/epicjobs.co","display_url":"epicjobs.co","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":10704,"friends_count":3,"listed_count":59,"created_at":"Tue + Feb 12 03:36:40 +0000 2019","favourites_count":456,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":403,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1121064385504534529\/-Wgf9Ot2_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1121064385504534529\/-Wgf9Ot2_normal.png","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/1095164760683937793\/1558719255","profile_link_color":"333333","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweeted_status":{"created_at":"Tue + Jan 28 10:43:56 +0000 2020","id":1222108036795334657,"id_str":"1222108036795334657","text":"Good + morning! Come to our Global Office. And stay where your heart is. We are looking + for creative colleagues! \ud83d\udc69\u200d\ud83d\ude92\u2026 https:\/\/t.co\/FOl3SnktR7","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/FOl3SnktR7","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/1222108036795334657","display_url":"twitter.com\/i\/web\/status\/1\u2026","indices":[116,139]}]},"metadata":{"iso_language_code":"en","result_type":"recent"},"source":"\u003ca + href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":785412523193425920,"id_str":"785412523193425920","name":"Zammad + HQ","screen_name":"zammadhq","location":"","description":"Helpdesk and Customer + Support made easy. Open Source for download or to go with SaaS. #zammad","url":"https:\/\/t.co\/XITyrXmhTP","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/XITyrXmhTP","expanded_url":"http:\/\/zammad.com","display_url":"zammad.com","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":595,"friends_count":577,"listed_count":19,"created_at":"Mon + Oct 10 09:31:52 +0000 2016","favourites_count":349,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":551,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/785412960797745152\/wxdIvejo_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/785412960797745152\/wxdIvejo_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/785412523193425920\/1476097853","profile_link_color":"31B068","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":7,"favorite_count":11,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},"is_quote_status":false,"retweet_count":7,"favorite_count":0,"favorited":false,"retweeted":false,"lang":"en"},{"created_at":"Tue + Jan 28 11:56:51 +0000 2020","id":1222126386334388225,"id_str":"1222126386334388225","text":"@zammadhq + Are you guys going to be at FOSDEM in Brussels this weekend? As Zammad users + ourselves we would love to c\u2026 https:\/\/t.co\/2OBpnTUyIL","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"zammadhq","name":"Zammad + HQ","id":785412523193425920,"id_str":"785412523193425920","indices":[0,9]}],"urls":[{"url":"https:\/\/t.co\/2OBpnTUyIL","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/1222126386334388225","display_url":"twitter.com\/i\/web\/status\/1\u2026","indices":[117,140]}]},"metadata":{"iso_language_code":"en","result_type":"recent"},"source":"\u003ca + href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e","in_reply_to_status_id":1222108036795334657,"in_reply_to_status_id_str":"1222108036795334657","in_reply_to_user_id":785412523193425920,"in_reply_to_user_id_str":"785412523193425920","in_reply_to_screen_name":"zammadhq","user":{"id":1168172858469732355,"id_str":"1168172858469732355","name":"Cloud68","screen_name":"Cloud68HQ","location":"Tirana, + Albania","description":"Reclaim your data from big tech!\n\nManaging Nextcloud, + Discourse & other open source instances for you, so you don''t have to. + Official ProtonMail partners.","url":"https:\/\/t.co\/eaUgbpg8RK","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/eaUgbpg8RK","expanded_url":"https:\/\/cloud68.co","display_url":"cloud68.co","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":91,"friends_count":227,"listed_count":1,"created_at":"Sun + Sep 01 14:44:59 +0000 2019","favourites_count":139,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":49,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1189466673532854272\/ZZRN4sw8_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1189466673532854272\/ZZRN4sw8_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/1168172858469732355\/1572424995","profile_link_color":"1DA1F2","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":1,"favorited":false,"retweeted":false,"lang":"en"},{"created_at":"Tue + Jan 28 10:51:28 +0000 2020","id":1222109934923460608,"id_str":"1222109934923460608","text":"Come + and join our team to bring Zammad even further forward! \n\nIt''s gonna be + amazing, promised! https:\/\/t.co\/DMlrQdIEeE","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/DMlrQdIEeE","expanded_url":"https:\/\/twitter.com\/zammadhq\/status\/1222108036795334657","display_url":"twitter.com\/zammadhq\/statu\u2026","indices":[96,119]}]},"metadata":{"iso_language_code":"en","result_type":"recent"},"source":"\u003ca + href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":290111612,"id_str":"290111612","name":"Mr.Generation","screen_name":"Mr_Generation","location":"Berlin, + Deutschland","description":"Streaming\/Gaming | Light technican (Hobby) | + Webmaster of so much | IT-Admin | Photography | coffee junkie | Zammad | Berlin","url":"https:\/\/t.co\/sXMe6W0b5t","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/sXMe6W0b5t","expanded_url":"https:\/\/www.mrgeneration.de\/","display_url":"mrgeneration.de","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":62,"friends_count":116,"listed_count":2,"created_at":"Fri + Apr 29 19:07:04 +0000 2011","favourites_count":693,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":1788,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1095305778460798983\/mA-tSgeW_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1095305778460798983\/mA-tSgeW_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/290111612\/1549976386","profile_link_color":"404040","profile_sidebar_border_color":"FC58FC","profile_sidebar_fill_color":"FAEDF8","profile_text_color":"F26F9F","profile_use_background_image":true,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":true,"quoted_status_id":1222108036795334657,"quoted_status_id_str":"1222108036795334657","quoted_status":{"created_at":"Tue + Jan 28 10:43:56 +0000 2020","id":1222108036795334657,"id_str":"1222108036795334657","text":"Good + morning! Come to our Global Office. And stay where your heart is. We are looking + for creative colleagues! \ud83d\udc69\u200d\ud83d\ude92\u2026 https:\/\/t.co\/FOl3SnktR7","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/FOl3SnktR7","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/1222108036795334657","display_url":"twitter.com\/i\/web\/status\/1\u2026","indices":[116,139]}]},"metadata":{"iso_language_code":"en","result_type":"recent"},"source":"\u003ca + href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":785412523193425920,"id_str":"785412523193425920","name":"Zammad + HQ","screen_name":"zammadhq","location":"","description":"Helpdesk and Customer + Support made easy. Open Source for download or to go with SaaS. #zammad","url":"https:\/\/t.co\/XITyrXmhTP","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/XITyrXmhTP","expanded_url":"http:\/\/zammad.com","display_url":"zammad.com","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":595,"friends_count":577,"listed_count":19,"created_at":"Mon + Oct 10 09:31:52 +0000 2016","favourites_count":349,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":551,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/785412960797745152\/wxdIvejo_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/785412960797745152\/wxdIvejo_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/785412523193425920\/1476097853","profile_link_color":"31B068","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":7,"favorite_count":11,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},"retweet_count":0,"favorite_count":4,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},{"created_at":"Sat + Dec 01 06:30:03 +0000 2018","id":1068754078241501184,"id_str":"1068754078241501184","text":"GitHub + Trending Archive, 29 Nov 2018, Ruby. mgleon08\/example-crawler, tongueroo\/jets, + testdouble\/standard, matthe\u2026 https:\/\/t.co\/JhiOoxbwVL","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/JhiOoxbwVL","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/1068754078241501184","display_url":"twitter.com\/i\/web\/status\/1\u2026","indices":[117,140]}]},"metadata":{"iso_language_code":"en","result_type":"recent"},"source":"\u003ca + href=\"https:\/\/github.example.com\/awesome\/\" rel=\"nofollow\"\u003eGithub + Awesome Search\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":993040996744159233,"id_str":"993040996744159233","name":"example","screen_name":"example","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":81,"friends_count":105,"listed_count":1,"created_at":"Sun + May 06 08:13:18 +0000 2018","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":9355,"lang":"en","contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/996714244090417152\/2QDJvxkN_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/996714244090417152\/2QDJvxkN_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/993040996744159233\/1526470497","profile_link_color":"E81C4F","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":0,"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"}],"search_metadata":{"completed_in":0.045,"max_id":1224440380881428480,"max_id_str":"1224440380881428480","next_results":"?max_id=1221826904430346239&q=zammad&count=100&include_entities=1&result_type=mixed","query":"zammad","refresh_url":"?since_id=1224440380881428480&q=zammad&result_type=mixed&include_entities=1","count":100,"since_id":0,"since_id_str":"0"}}' + http_version: + recorded_at: Tue, 04 Feb 2020 06:07:18 GMT +- request: + method: get + uri: http://pbs.twimg.com/profile_images/1121064385504534529/-Wgf9Ot2_bigger.png + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Zammad User Agent + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + Host: + - pbs.twimg.com + response: + status: + code: 200 + message: OK + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Content-Length + Age: + - '76528' + Cache-Control: + - max-age=604800, must-revalidate + Content-Type: + - image/png + Date: + - Tue, 04 Feb 2020 06:07:27 GMT + Last-Modified: + - Wed, 24 Apr 2019 14:50:32 GMT + Server: + - ECS (tpe/68A8) + Strict-Transport-Security: + - max-age=631138519 + Surrogate-Key: + - profile_images profile_images/bucket/2 profile_images/1121064385504534529 + X-Cache: + - HIT + X-Connection-Hash: + - d794e5057dfcb8c176f39934751f5fec + X-Content-Type-Options: + - nosniff + X-Response-Time: + - '110' + Content-Length: + - '4041' + body: + encoding: ASCII-8BIT + string: !binary |- + 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 + http_version: + recorded_at: Tue, 04 Feb 2020 06:07:27 GMT +- request: + method: get + uri: http://maps.googleapis.com/maps/api/geocode/json?address=Tirana,%20Albania&sensor=true + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Zammad User Agent + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + Host: + - maps.googleapis.com + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Date: + - Tue, 04 Feb 2020 06:07:32 GMT + Pragma: + - no-cache + Expires: + - Fri, 01 Jan 1990 00:00:00 GMT + Cache-Control: + - no-cache, must-revalidate + Vary: + - Accept-Language + Access-Control-Allow-Origin: + - "*" + Server: + - mafe + Content-Length: + - '202' + X-Xss-Protection: + - '0' + X-Frame-Options: + - SAMEORIGIN + Server-Timing: + - gfet4t7; dur=1 + body: + encoding: ASCII-8BIT + string: | + { + "error_message" : "You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account", + "results" : [], + "status" : "REQUEST_DENIED" + } + http_version: + recorded_at: Tue, 04 Feb 2020 06:07:32 GMT +- request: + method: get + uri: http://pbs.twimg.com/profile_images/1189466673532854272/ZZRN4sw8_bigger.jpg + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Zammad User Agent + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + Host: + - pbs.twimg.com + response: + status: + code: 200 + message: OK + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Content-Length + Age: + - '237853' + Cache-Control: + - max-age=604800, must-revalidate + Content-Type: + - image/jpeg + Date: + - Tue, 04 Feb 2020 06:07:32 GMT + Last-Modified: + - Wed, 30 Oct 2019 08:56:48 GMT + Server: + - ECS (tpe/68A1) + Strict-Transport-Security: + - max-age=631138519 + Surrogate-Key: + - profile_images profile_images/bucket/7 profile_images/1189466673532854272 + X-Cache: + - HIT + X-Connection-Hash: + - b140b365ea73f0d34e1c7c5a2ad7cbc9 + X-Content-Type-Options: + - nosniff + X-Response-Time: + - '108' + Content-Length: + - '3863' + body: + encoding: ASCII-8BIT + string: !binary |- + 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vb5H8//EACQRAQACAQIFBQEAAAAAAAAAAAEAETEhURBBcYGhIGGRsfDB/9oACAEDAQE/ELMwGH7vLWu8B6FfBqg68/DrK2uz9xaBvAr3fExETlMr23+YFFMdD195QGvVD+sq5F54KZBjjc5iAplWppslnbn5l6wK9r+2K2bd39p24f/EACMRAQABAwMFAQEBAAAAAAAAAAERACExQVFhcYGRocHwENH/2gAIAQIBAT8Qzlg/Qc0ThubQp1WO1qJHVGFLbmvqj5gO5YnZNXqkUOaEC04OqSu2KAIBwMEGUqQUFHITm+aWFb4ieTD1LetqlkL3Hqa9yKC0uW5nccTQ0uys8p8MVZsS/PtMSNDqqNvfimRqELziL4qZBWQN9mdPjvQMho2JtOT70ouA8Aq8QgUYOEwTLPCn7/TBisfuW9IpGGkTC7qpd9HxV4JOlnmCohOA+6vf+f/EACcQAQABAwQBAwUBAQAAAAAAAAERACExQVFhcZGBofAQwdHh8SCx/9oACAEBAAE/EKdoI+HdWi31Fr85u/tS0aSxI6kLDhigwzVdtyMpxzNZQAtCoLAyRMLUboGH2i5IO6HMl9J06ibN/qp3isAEq020hZssAmp7MdvGMIguq4c0NN80nZItO6HhqEFOo6Fq5ASPhPMlEe2W81Fv6oLFWAQBny5gzktZG+JrjcTRGybn0hHEI5S/8MUaORSDLyYTtGPNTAfXmlwdB7/8U2ZEJxftO+XmoUM1JdIZUJLnK+xgPfmjROFGrJm9ufpouD6XKsa375o2QIza34AuelSb1Kgjhb2jMSz6UqYuLSZXopTXp5mgTb1jXdaztakYQl2XT9FGvRWc7bxQYqMDtZuOfOMU30FlooB5w/lS/DIVJT0+xQHFhEyLRKWYeK4fml4U+5DNmaYNoORiaJnk898YUhYkmZL5HE/QkHAgyqz1EUFggQ11HrW4Ax4/ihGglrKlIxma+afajaYDdIdlIAJS/wBihfSknpHJcp6O+aBsKVsZMjlr1WlROTJgC0aunrUE8sC51xFYlDmlLA/KN8jSCid3pvsK/kVM8QKGHqdY/tKplwmWjT8Vb/1EEtl0X42q2ZVzt7u7+5oiuhK1eS0vvSNmtQjHLZ8kmiHKTs9acX/VEBlFMFCnAt4qKM227U/NJlBXZtJ0AfLVHQeC76wN/wDtPhaZJvhdWqFBsaJH2eAeI3pNAEFjGozO/NXkuC2kuqht+monp3WVlcr9cmSw9x0eat8GIY2wpw0z1EVz4XxR8JNpE0VL3U57soSoELGzWtUobOl13Wr/AJayVkpg6/y//9kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= + http_version: + recorded_at: Tue, 04 Feb 2020 06:07:32 GMT +- request: + method: get + uri: http://maps.googleapis.com/maps/api/geocode/json?address=Tirana,%20Albania&sensor=true + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Zammad User Agent + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + Host: + - maps.googleapis.com + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Date: + - Tue, 04 Feb 2020 06:07:32 GMT + Pragma: + - no-cache + Expires: + - Fri, 01 Jan 1990 00:00:00 GMT + Cache-Control: + - no-cache, must-revalidate + Vary: + - Accept-Language + Access-Control-Allow-Origin: + - "*" + Server: + - mafe + Content-Length: + - '202' + X-Xss-Protection: + - '0' + X-Frame-Options: + - SAMEORIGIN + Server-Timing: + - gfet4t7; dur=1 + body: + encoding: ASCII-8BIT + string: | + { + "error_message" : "You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account", + "results" : [], + "status" : "REQUEST_DENIED" + } + http_version: + recorded_at: Tue, 04 Feb 2020 06:07:32 GMT +- request: + method: get + uri: https://api.twitter.com/1.1/statuses/show/1222108036795334657.json + body: + encoding: UTF-8 + string: '' + headers: + User-Agent: + - TwitterRubyGem/6.2.0 + Authorization: + - OAuth oauth_consumer_key="REDACTED", oauth_nonce="fadbc0e65e0cd98a1bbd46262121c7af", + oauth_signature="vqic%2BIyQkpIlEzbY2VXidbD2CQ4%3D", oauth_signature_method="HMAC-SHA1", + oauth_timestamp="1580796452", oauth_token="REDACTED", + oauth_version="1.0" + Connection: + - close + Host: + - api.twitter.com + response: + status: + code: 200 + message: OK + headers: + Cache-Control: + - no-cache, no-store, must-revalidate, pre-check=0, post-check=0 + Connection: + - close + Content-Disposition: + - attachment; filename=json.json + Content-Length: + - '2781' + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 04 Feb 2020 06:07:32 GMT + Expires: + - Tue, 31 Mar 1981 05:00:00 GMT + Last-Modified: + - Tue, 04 Feb 2020 06:07:32 GMT + Pragma: + - no-cache + Server: + - tsa_m + Set-Cookie: + - guest_id=v1%3A158079645287432567; Max-Age=63072000; Expires=Thu, 3 Feb 2022 + 06:07:32 GMT; Path=/; Domain=.twitter.com + - lang=en; Path=/ + - personalization_id="v1_8MuLQGGHeQ0iKjjEyK3kwA=="; Max-Age=63072000; Expires=Thu, + 3 Feb 2022 06:07:32 GMT; Path=/; Domain=.twitter.com + Status: + - 200 OK + Strict-Transport-Security: + - max-age=631138519 + X-Access-Level: + - read-write-directmessages + X-Connection-Hash: + - 608ef1d33f94f7800d75e9f14fc86838 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Rate-Limit-Limit: + - '900' + X-Rate-Limit-Remaining: + - '892' + X-Rate-Limit-Reset: + - '1580797340' + X-Response-Time: + - '125' + X-Transaction: + - 00dc12c800f73e29 + X-Twitter-Response-Tags: + - BouncerCompliant + X-Xss-Protection: + - '0' + body: + encoding: UTF-8 + string: '{"created_at":"Tue Jan 28 10:43:56 +0000 2020","id":1222108036795334657,"id_str":"1222108036795334657","text":"Good + morning! Come to our Global Office. And stay where your heart is. We are looking + for creative colleagues! \ud83d\udc69\u200d\ud83d\ude92\u2026 https:\/\/t.co\/FOl3SnktR7","truncated":true,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[{"url":"https:\/\/t.co\/FOl3SnktR7","expanded_url":"https:\/\/twitter.com\/i\/web\/status\/1222108036795334657","display_url":"twitter.com\/i\/web\/status\/1\u2026","indices":[116,139]}]},"source":"\u003ca + href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":785412523193425920,"id_str":"785412523193425920","name":"Zammad + HQ","screen_name":"zammadhq","location":"","description":"Helpdesk and Customer + Support made easy. Open Source for download or to go with SaaS. #zammad","url":"https:\/\/t.co\/XITyrXmhTP","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/XITyrXmhTP","expanded_url":"http:\/\/zammad.com","display_url":"zammad.com","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":595,"friends_count":577,"listed_count":19,"created_at":"Mon + Oct 10 09:31:52 +0000 2016","favourites_count":349,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":551,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/785412960797745152\/wxdIvejo_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/785412960797745152\/wxdIvejo_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/785412523193425920\/1476097853","profile_link_color":"31B068","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"000000","profile_text_color":"000000","profile_use_background_image":false,"has_extended_profile":false,"default_profile":false,"default_profile_image":false,"can_media_tag":true,"followed_by":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":7,"favorite_count":11,"favorited":false,"retweeted":false,"possibly_sensitive":false,"possibly_sensitive_appealable":false,"lang":"en"}' + http_version: + recorded_at: Tue, 04 Feb 2020 06:07:32 GMT +recorded_with: VCR 4.0.0