Maintenance: Updated all non-pinned gems.

Special thanks to @thorsteneckel for fixing the VCR/Twitter problems!
This commit is contained in:
Martin Gruner 2021-07-01 11:23:52 +00:00
parent 3b518cfa00
commit 0f61a7e6ca
180 changed files with 113396 additions and 42285 deletions

View file

@ -2,6 +2,7 @@
# https://github.com/rubocop-hq/rubocop/blob/master/config/default.yml # https://github.com/rubocop-hq/rubocop/blob/master/config/default.yml
require: require:
- rubocop-faker
- rubocop-performance - rubocop-performance
- rubocop-rails - rubocop-rails
- rubocop-rspec - rubocop-rspec

View file

@ -70,7 +70,7 @@ gem 'execjs'
# Instead, use an external node.js binary. # Instead, use an external node.js binary.
group :mini_racer, optional: true do group :mini_racer, optional: true do
gem 'libv8' gem 'libv8'
gem 'mini_racer' gem 'mini_racer', '0.2.9' # Newer versions require libv8-node instead which does not compile on older platforms.
end end
# authentication - provider # authentication - provider
@ -95,7 +95,8 @@ gem 'omniauth-weibo-oauth2'
gem 'gmail_xoauth' gem 'gmail_xoauth'
gem 'koala' gem 'koala'
gem 'telegramAPI' gem 'telegramAPI'
gem 'twitter', git: 'https://github.com/sferik/twitter.git' # Updating twitter to 'master' seems to break things, so freeze the revision for now.
gem 'twitter', git: 'https://github.com/sferik/twitter.git', ref: '29a18644e3c433f53ed76f0867f9b9734f7a7357'
# channels - email additions # channels - email additions
gem 'htmlentities' gem 'htmlentities'
@ -190,6 +191,7 @@ group :development, :test do
gem 'coffeelint' gem 'coffeelint'
gem 'pre-commit' gem 'pre-commit'
gem 'rubocop' gem 'rubocop'
gem 'rubocop-faker'
gem 'rubocop-performance' gem 'rubocop-performance'
gem 'rubocop-rails' gem 'rubocop-rails'
gem 'rubocop-rspec' gem 'rubocop-rspec'

View file

@ -1,12 +1,13 @@
GIT GIT
remote: https://github.com/sferik/twitter.git remote: https://github.com/sferik/twitter.git
revision: 844818cad07ce490ccb9d8542ebb6b4fc7a61cb4 revision: 29a18644e3c433f53ed76f0867f9b9734f7a7357
ref: 29a18644e3c433f53ed76f0867f9b9734f7a7357
specs: specs:
twitter (6.2.0) twitter (7.0.0)
addressable (~> 2.3) addressable (~> 2.3)
buftok (~> 0.2.0) buftok (~> 0.2.0)
equalizer (~> 0.0.11) equalizer (~> 0.0.11)
http (~> 3.0) http (~> 4.0)
http-form_data (~> 2.0) http-form_data (~> 2.0)
http_parser.rb (~> 0.6.0) http_parser.rb (~> 0.6.0)
memoizable (~> 0.4.0) memoizable (~> 0.4.0)
@ -47,7 +48,7 @@ GIT
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
aasm (5.0.0) aasm (5.2.0)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
actioncable (6.0.4) actioncable (6.0.4)
actionpack (= 6.0.4) actionpack (= 6.0.4)
@ -93,10 +94,10 @@ GEM
activerecord (6.0.4) activerecord (6.0.4)
activemodel (= 6.0.4) activemodel (= 6.0.4)
activesupport (= 6.0.4) activesupport (= 6.0.4)
activerecord-import (1.0.5) activerecord-import (1.1.0)
activerecord (>= 3.2) activerecord (>= 3.2)
activerecord-nulldb-adapter (0.4.0) activerecord-nulldb-adapter (0.7.0)
activerecord (>= 2.0.0) activerecord (>= 5.2.0, < 6.3)
activerecord-session_store (2.0.0) activerecord-session_store (2.0.0)
actionpack (>= 5.2.4.1) actionpack (>= 5.2.4.1)
activerecord (>= 5.2.4.1) activerecord (>= 5.2.4.1)
@ -114,42 +115,59 @@ GEM
minitest (~> 5.1) minitest (~> 5.1)
tzinfo (~> 1.1) tzinfo (~> 1.1)
zeitwerk (~> 2.2, >= 2.2.2) zeitwerk (~> 2.2, >= 2.2.2)
acts_as_list (1.0.1) acts_as_list (1.0.4)
activerecord (>= 4.2) activerecord (>= 4.2)
addressable (2.5.2) addressable (2.7.0)
public_suffix (>= 2.0.2, < 4.0) public_suffix (>= 2.0.2, < 5.0)
argon2 (2.0.2) argon2 (2.0.3)
ffi (~> 1.9) ffi (~> 1.14)
ffi-compiler (>= 0.1) ffi-compiler (~> 1.0)
ast (2.4.2) ast (2.4.2)
autoprefixer-rails (9.5.1) async (1.29.1)
execjs console (~> 1.10)
binding_of_caller (0.8.0) nio4r (~> 2.3)
timers (~> 4.1)
async-http (0.56.3)
async (~> 1.25)
async-io (~> 1.28)
async-pool (~> 0.2)
protocol-http (~> 0.22.0)
protocol-http1 (~> 0.14.0)
protocol-http2 (~> 0.14.0)
async-http-faraday (0.11.0)
async-http (~> 0.42)
faraday
async-io (1.32.1)
async (~> 1.14)
async-pool (0.3.7)
async (~> 1.25)
autoprefixer-rails (10.2.5.1)
execjs (> 0)
binding_of_caller (1.0.0)
debug_inspector (>= 0.0.1) debug_inspector (>= 0.0.1)
biz (1.8.2) biz (1.8.2)
clavius (~> 1.0) clavius (~> 1.0)
tzinfo tzinfo
bootsnap (1.5.1) bootsnap (1.7.5)
msgpack (~> 1.0) msgpack (~> 1.0)
browser (2.5.3) browser (5.3.1)
buftok (0.2.0) buftok (0.2.0)
builder (3.2.4) builder (3.2.4)
byebug (11.0.1) byebug (11.1.3)
capybara (3.32.2) capybara (3.35.3)
addressable addressable
mini_mime (>= 0.1.3) mini_mime (>= 0.1.3)
nokogiri (~> 1.8) nokogiri (~> 1.8)
rack (>= 1.6.0) rack (>= 1.6.0)
rack-test (>= 0.6.3) rack-test (>= 0.6.3)
regexp_parser (~> 1.5) regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2) xpath (~> 3.2)
childprocess (1.0.1) childprocess (3.0.0)
rake (< 13.0) chunky_png (1.4.0)
chunky_png (1.3.12)
clavius (1.0.4) clavius (1.0.4)
clearbit (0.2.8) clearbit (0.3.3)
nestful (~> 1.1.0) nestful (~> 1.1.0)
coderay (1.1.2) coderay (1.1.3)
coffee-rails (5.0.0) coffee-rails (5.0.0)
coffee-script (>= 2.2.0) coffee-script (>= 2.2.0)
railties (>= 5.2.0) railties (>= 5.2.0)
@ -161,34 +179,36 @@ GEM
coffee-script coffee-script
execjs execjs
json json
composite_primary_keys (12.0.2) composite_primary_keys (12.0.10)
activerecord (~> 6.0.0) activerecord (~> 6.0.0)
concurrent-ruby (1.1.9) concurrent-ruby (1.1.9)
coveralls (0.8.23) console (1.13.1)
json (>= 1.8, < 3) fiber-local
simplecov (~> 0.16.1) coveralls (0.7.1)
term-ansicolor (~> 1.3) multi_json (~> 1.3)
thor (>= 0.19.4, < 2.0) rest-client
tins (~> 1.6) simplecov (>= 0.7)
crack (0.4.3) term-ansicolor
safe_yaml (~> 1.0.0) thor
crack (0.4.5)
rexml
crass (1.0.6) crass (1.0.6)
daemons (1.3.1) daemons (1.4.0)
dalli (2.7.10) dalli (2.7.11)
debug_inspector (0.0.3) debug_inspector (1.1.0)
delayed_job (4.1.8) delayed_job (4.1.9)
activesupport (>= 3.0, < 6.1) activesupport (>= 3.0, < 6.2)
delayed_job_active_record (4.1.4) delayed_job_active_record (4.1.6)
activerecord (>= 3.0, < 6.1) activerecord (>= 3.0, < 6.2)
delayed_job (>= 3.0, < 5) delayed_job (>= 3.0, < 5)
deprecation_toolkit (1.4.0) deprecation_toolkit (1.5.1)
activesupport (>= 4.2) activesupport (>= 4.2)
diff-lcs (1.3) diff-lcs (1.4.4)
diffy (3.3.0) diffy (3.4.0)
docile (1.3.1) docile (1.4.0)
domain_name (0.5.20180417) domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0) unf (>= 0.0.5, < 1.0.0)
doorkeeper (5.3.2) doorkeeper (5.5.2)
railties (>= 5) railties (>= 5)
dotenv (2.7.6) dotenv (2.7.6)
eco (1.0.0) eco (1.0.0)
@ -196,42 +216,55 @@ GEM
eco-source eco-source
execjs execjs
eco-source (1.1.0.rc.1) eco-source (1.1.0.rc.1)
em-websocket (0.5.1) em-websocket (0.5.2)
eventmachine (>= 0.12.9) eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0) http_parser.rb (~> 0.6.0)
equalizer (0.0.11) equalizer (0.0.11)
erubi (1.10.0) erubi (1.10.0)
eventmachine (1.2.7) eventmachine (1.2.7)
execjs (2.7.0) execjs (2.8.1)
factory_bot (5.0.2) factory_bot (6.2.0)
activesupport (>= 4.2.0) activesupport (>= 5.0.0)
factory_bot_rails (5.0.2) factory_bot_rails (6.2.0)
factory_bot (~> 5.0.2) factory_bot (~> 6.2.0)
railties (>= 4.2.0) railties (>= 5.0.0)
faker (1.9.3) faker (2.18.0)
i18n (>= 0.7) i18n (>= 1.6, < 2)
faraday (0.17.3) faraday (1.4.2)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.1)
multipart-post (>= 1.2, < 3) multipart-post (>= 1.2, < 3)
faraday-http-cache (2.0.0) ruby2_keywords (>= 0.0.4)
faraday (~> 0.8) faraday-em_http (1.0.0)
ffi (1.15.0) faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-http-cache (2.2.0)
faraday (>= 0.8)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.1.0)
ffi (1.15.3)
ffi-compiler (1.0.1) ffi-compiler (1.0.1)
ffi (>= 1.0.0) ffi (>= 1.0.0)
rake rake
formatador (0.2.5) fiber-local (1.0.0)
github_changelog_generator (1.14.3) formatador (0.3.0)
github_changelog_generator (1.16.4)
activesupport activesupport
async (>= 1.25.0)
async-http-faraday
faraday-http-cache faraday-http-cache
multi_json multi_json
octokit (~> 4.6) octokit (~> 4.6)
rainbow (>= 2.1) rainbow (>= 2.2.1)
rake (>= 10.0) rake (>= 10.0)
retriable (~> 2.1)
globalid (0.4.2) globalid (0.4.2)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
gmail_xoauth (0.4.2) gmail_xoauth (0.4.2)
oauth (>= 0.3.6) oauth (>= 0.3.6)
guard (2.15.0) guard (2.17.0)
formatador (>= 0.2.4) formatador (>= 0.2.4)
listen (>= 2.7, < 4.0) listen (>= 2.7, < 4.0)
lumberjack (>= 1.0.12, < 2.0) lumberjack (>= 1.0.12, < 2.0)
@ -249,94 +282,97 @@ GEM
guard-symlink (0.1.1) guard-symlink (0.1.1)
guard guard
guard-compat (~> 1.1) guard-compat (~> 1.1)
hashdiff (0.3.8) hashdiff (1.0.1)
hashie (3.6.0) hashie (4.1.0)
hiredis (0.6.3) hiredis (0.6.3)
htmlentities (4.3.4) htmlentities (4.3.4)
http (3.3.0) http (4.4.1)
addressable (~> 2.3) addressable (~> 2.3)
http-cookie (~> 1.0) http-cookie (~> 1.0)
http-form_data (~> 2.0) http-form_data (~> 2.2)
http_parser.rb (~> 0.6.0) http-parser (~> 1.2.0)
http-cookie (1.0.3) http-accept (1.7.0)
http-cookie (1.0.4)
domain_name (~> 0.5) domain_name (~> 0.5)
http-form_data (2.1.1) http-form_data (2.3.0)
http-parser (1.2.3)
ffi-compiler (>= 1.0, < 2.0)
http_parser.rb (0.6.0) http_parser.rb (0.6.0)
httpclient (2.8.3) httpclient (2.8.3)
i18n (1.8.10) i18n (1.8.10)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
icalendar (2.5.3) icalendar (2.7.1)
ice_cube (~> 0.16) ice_cube (~> 0.16)
icalendar-recurrence (1.1.2) icalendar-recurrence (1.1.3)
icalendar (~> 2.0) icalendar (~> 2.0)
ice_cube (~> 0.13) ice_cube (~> 0.16)
ice_cube (0.16.3) ice_cube (0.16.3)
inflection (1.0.0) inflection (1.0.0)
interception (0.5) interception (0.5)
ipaddr (1.2.2) ipaddr (1.2.2)
json (2.3.0) json (2.5.1)
jwt (2.2.2) jwt (2.2.3)
kgio (2.11.2) kgio (2.11.4)
koala (3.0.0) koala (3.0.0)
addressable addressable
faraday faraday
json (>= 1.8) json (>= 1.8)
libv8 (7.3.492.27.1) libv8 (8.4.255.0)
listen (3.1.5) listen (3.5.1)
rb-fsevent (~> 0.9, >= 0.9.4) rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.7) rb-inotify (~> 0.9, >= 0.9.10)
ruby_dep (~> 1.2)
little-plugger (1.1.4) little-plugger (1.1.4)
logging (2.2.2) logging (2.3.0)
little-plugger (~> 1.1) little-plugger (~> 1.1)
multi_json (~> 1.10) multi_json (~> 1.14)
loofah (2.10.0) loofah (2.10.0)
crass (~> 1.0.2) crass (~> 1.0.2)
nokogiri (>= 1.5.9) nokogiri (>= 1.5.9)
lumberjack (1.0.13) lumberjack (1.2.8)
marcel (1.0.1) marcel (1.0.1)
memoizable (0.4.2) memoizable (0.4.2)
thread_safe (~> 0.3, >= 0.3.1) thread_safe (~> 0.3, >= 0.3.1)
method_source (0.9.2) method_source (1.0.0)
mime-types (3.3.1) mime-types (3.3.1)
mime-types-data (~> 3.2015) mime-types-data (~> 3.2015)
mime-types-data (3.2020.1104) mime-types-data (3.2021.0225)
mini_mime (1.1.0) mini_mime (1.1.0)
mini_portile2 (2.5.3) mini_portile2 (2.5.3)
mini_racer (0.2.9) mini_racer (0.2.9)
libv8 (>= 6.9.411) libv8 (>= 6.9.411)
minitest (5.14.4) minitest (5.14.4)
msgpack (1.3.3) msgpack (1.4.2)
multi_json (1.15.0) multi_json (1.15.0)
multi_xml (0.6.0) multi_xml (0.6.0)
multipart-post (2.1.1) multipart-post (2.1.1)
mysql2 (0.5.3) mysql2 (0.5.3)
naught (1.1.0) naught (1.1.0)
nenv (0.3.0) nenv (0.3.0)
nestful (1.1.3) nestful (1.1.4)
net-ldap (0.16.1) net-ldap (0.17.0)
netrc (0.11.0) netrc (0.11.0)
nio4r (2.5.7) nio4r (2.5.7)
nokogiri (1.11.7) nokogiri (1.11.7)
mini_portile2 (~> 2.5.0) mini_portile2 (~> 2.5.0)
racc (~> 1.4) racc (~> 1.4)
nori (2.6.0) nori (2.6.0)
notiffany (0.1.1) notiffany (0.1.3)
nenv (~> 0.1) nenv (~> 0.1)
shellany (~> 0.0) shellany (~> 0.0)
oauth (0.5.6) oauth (0.5.6)
oauth2 (1.4.4) oauth2 (1.4.7)
faraday (>= 0.8, < 2.0) faraday (>= 0.8, < 2.0)
jwt (>= 1.0, < 3.0) jwt (>= 1.0, < 3.0)
multi_json (~> 1.3) multi_json (~> 1.3)
multi_xml (~> 0.5) multi_xml (~> 0.5)
rack (>= 1.2, < 3) rack (>= 1.2, < 3)
octokit (4.13.0) octokit (4.21.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3) sawyer (~> 0.8.0, >= 0.5.3)
omniauth (1.9.1) omniauth (1.9.1)
hashie (>= 3.4.6) hashie (>= 3.4.6)
rack (>= 1.6.2, < 3) rack (>= 1.6.2, < 3)
omniauth-facebook (5.0.0) omniauth-facebook (8.0.0)
omniauth-oauth2 (~> 1.2) omniauth-oauth2 (~> 1.2)
omniauth-github (1.4.0) omniauth-github (1.4.0)
omniauth (~> 1.5) omniauth (~> 1.5)
@ -344,61 +380,69 @@ GEM
omniauth-gitlab (2.0.0) omniauth-gitlab (2.0.0)
omniauth (~> 1.0) omniauth (~> 1.0)
omniauth-oauth2 (~> 1.0) omniauth-oauth2 (~> 1.0)
omniauth-google-oauth2 (0.6.1) omniauth-google-oauth2 (0.8.2)
jwt (>= 2.0) jwt (>= 2.0)
omniauth (>= 1.1.1) oauth2 (~> 1.1)
omniauth-oauth2 (>= 1.5) omniauth (~> 1.1)
omniauth-oauth2 (>= 1.6)
omniauth-linkedin-oauth2 (1.0.0) omniauth-linkedin-oauth2 (1.0.0)
omniauth-oauth2 omniauth-oauth2
omniauth-microsoft-office365 (0.0.8) omniauth-microsoft-office365 (0.0.8)
omniauth omniauth
omniauth-oauth2 omniauth-oauth2
omniauth-oauth (1.1.0) omniauth-oauth (1.2.0)
oauth oauth
omniauth (~> 1.0) omniauth (>= 1.0, < 3)
omniauth-oauth2 (1.7.0) omniauth-oauth2 (1.7.1)
oauth2 (~> 1.4) oauth2 (~> 1.4)
omniauth (~> 1.9) omniauth (>= 1.9, < 3)
omniauth-rails_csrf_protection (0.1.2) omniauth-rails_csrf_protection (0.1.2)
actionpack (>= 4.2) actionpack (>= 4.2)
omniauth (>= 1.3.1) omniauth (>= 1.3.1)
omniauth-saml (1.10.1) omniauth-saml (1.10.3)
omniauth (~> 1.3, >= 1.3.2) omniauth (~> 1.3, >= 1.3.2)
ruby-saml (~> 1.7) ruby-saml (~> 1.9)
omniauth-twitter (1.4.0) omniauth-twitter (1.4.0)
omniauth-oauth (~> 1.1) omniauth-oauth (~> 1.1)
rack rack
omniauth-weibo-oauth2 (0.5.2) omniauth-weibo-oauth2 (0.5.2)
omniauth (~> 1.5) omniauth (~> 1.5)
omniauth-oauth2 (>= 1.4.0) omniauth-oauth2 (>= 1.4.0)
openssl (2.1.2) openssl (2.2.0)
ipaddr ipaddr
parallel (1.20.1) parallel (1.20.1)
parser (3.0.1.1) parser (3.0.1.1)
ast (~> 2.4.1) ast (~> 2.4.1)
pg (0.21.0) pg (0.21.0)
pluginator (1.5.0) pluginator (1.5.0)
power_assert (1.1.4) power_assert (2.0.0)
pre-commit (0.39.0) pre-commit (0.39.0)
pluginator (~> 1.5) pluginator (~> 1.5)
pry (0.12.2) protocol-hpack (1.4.2)
coderay (~> 1.1.0) protocol-http (0.22.4)
method_source (~> 0.9.0) protocol-http1 (0.14.1)
protocol-http (~> 0.22)
protocol-http2 (0.14.2)
protocol-hpack (~> 1.4)
protocol-http (~> 0.18)
pry (0.14.1)
coderay (~> 1.1)
method_source (~> 1.0)
pry-rails (0.3.9) pry-rails (0.3.9)
pry (>= 0.10.4) pry (>= 0.10.4)
pry-remote (0.1.8) pry-remote (0.1.8)
pry (~> 0.9) pry (~> 0.9)
slop (~> 3.0) slop (~> 3.0)
pry-rescue (1.5.0) pry-rescue (1.5.2)
interception (>= 0.5) interception (>= 0.5)
pry (>= 0.12.0) pry (>= 0.12.0)
pry-stack_explorer (0.4.9.3) pry-stack_explorer (0.6.1)
binding_of_caller (>= 0.7) binding_of_caller (~> 1.0)
pry (>= 0.9.11) pry (~> 0.13)
public_suffix (3.1.1) public_suffix (4.0.6)
puma (4.3.8) puma (4.3.8)
nio4r (~> 2.0) nio4r (~> 2.0)
pundit (2.0.1) pundit (2.1.0)
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
pundit-matchers (1.6.0) pundit-matchers (1.6.0)
rspec-rails (>= 3.0.0) rspec-rails (>= 3.0.0)
@ -423,10 +467,10 @@ GEM
bundler (>= 1.3.0) bundler (>= 1.3.0)
railties (= 6.0.4) railties (= 6.0.4)
sprockets-rails (>= 2.0.0) sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.4) rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.x) actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.x) actionview (>= 5.0.1.rc1)
activesupport (>= 5.0.1.x) activesupport (>= 5.0.1.rc1)
rails-dom-testing (2.0.3) rails-dom-testing (2.0.3)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
nokogiri (>= 1.6) nokogiri (>= 1.6)
@ -439,37 +483,37 @@ GEM
rake (>= 0.8.7) rake (>= 0.8.7)
thor (>= 0.20.3, < 2.0) thor (>= 0.20.3, < 2.0)
rainbow (3.0.0) rainbow (3.0.0)
raindrops (0.19.0) raindrops (0.19.2)
rake (12.3.3) rake (13.0.3)
rb-fsevent (0.10.3) rb-fsevent (0.11.0)
rb-inotify (0.10.0) rb-inotify (0.10.1)
ffi (~> 1.0) ffi (~> 1.0)
rchardet (1.8.0) rchardet (1.8.0)
redis (4.2.5) redis (4.2.5)
regexp_parser (1.8.2) regexp_parser (2.1.1)
rest-client (2.0.2) rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0) http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0) mime-types (>= 1.16, < 4.0)
netrc (~> 0.8) netrc (~> 0.8)
retriable (2.1.0)
rexml (3.2.5) rexml (3.2.5)
rspec-core (3.9.2) rspec-core (3.10.1)
rspec-support (~> 3.9.3) rspec-support (~> 3.10.0)
rspec-expectations (3.9.2) rspec-expectations (3.10.1)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.9.0) rspec-support (~> 3.10.0)
rspec-mocks (3.9.1) rspec-mocks (3.10.2)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.9.0) rspec-support (~> 3.10.0)
rspec-rails (3.9.1) rspec-rails (5.0.1)
actionpack (>= 3.0) actionpack (>= 5.2)
activesupport (>= 3.0) activesupport (>= 5.2)
railties (>= 3.0) railties (>= 5.2)
rspec-core (~> 3.9.0) rspec-core (~> 3.10)
rspec-expectations (~> 3.9.0) rspec-expectations (~> 3.10)
rspec-mocks (~> 3.9.0) rspec-mocks (~> 3.10)
rspec-support (~> 3.9.0) rspec-support (~> 3.10)
rspec-support (3.9.3) rspec-support (3.10.2)
rszr (0.5.2) rszr (0.5.2)
rubocop (1.16.0) rubocop (1.16.0)
parallel (~> 1.10) parallel (~> 1.10)
@ -482,6 +526,9 @@ GEM
unicode-display_width (>= 1.4.0, < 3.0) unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.7.0) rubocop-ast (1.7.0)
parser (>= 3.0.1.1) parser (>= 3.0.1.1)
rubocop-faker (1.1.0)
faker (>= 2.12.0)
rubocop (>= 0.82.0)
rubocop-performance (1.11.3) rubocop-performance (1.11.3)
rubocop (>= 1.7.0, < 2.0) rubocop (>= 1.7.0, < 2.0)
rubocop-ast (>= 0.4.0) rubocop-ast (>= 0.4.0)
@ -493,40 +540,40 @@ GEM
rubocop (~> 1.0) rubocop (~> 1.0)
rubocop-ast (>= 1.1.0) rubocop-ast (>= 1.1.0)
ruby-progressbar (1.11.0) ruby-progressbar (1.11.0)
ruby-saml (1.10.2) ruby-saml (1.12.2)
nokogiri (>= 1.5.10) nokogiri (>= 1.10.5)
ruby_dep (1.5.0) rexml
rubyzip (1.3.0) ruby2_keywords (0.0.4)
safe_yaml (1.0.5) rubyzip (2.3.0)
sassc (2.0.1) sassc (2.4.0)
ffi (~> 1.9) ffi (~> 1.9)
rake sassc-rails (2.1.2)
sassc-rails (2.1.1)
railties (>= 4.0.0) railties (>= 4.0.0)
sassc (>= 2.0) sassc (>= 2.0)
sprockets (> 3.0) sprockets (> 3.0)
sprockets-rails sprockets-rails
tilt tilt
sawyer (0.8.1) sawyer (0.8.2)
addressable (>= 2.3.5, < 2.6) addressable (>= 2.3.5)
faraday (~> 0.8, < 1.0) faraday (> 0.8, < 2.0)
selenium-webdriver (3.142.3) selenium-webdriver (3.142.7)
childprocess (>= 0.5, < 2.0) childprocess (>= 0.5, < 4.0)
rubyzip (~> 1.2, >= 1.2.2) rubyzip (>= 1.2.2)
shellany (0.0.1) shellany (0.0.1)
shoulda-matchers (4.0.1) shoulda-matchers (4.5.1)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
simple_oauth (0.3.1) simple_oauth (0.3.1)
simplecov (0.16.1) simplecov (0.21.2)
docile (~> 1.1) docile (~> 1.1)
json (>= 1.8, < 3) simplecov-html (~> 0.11)
simplecov-html (~> 0.10.0) simplecov_json_formatter (~> 0.1)
simplecov-html (0.10.2) simplecov-html (0.12.3)
simplecov-rcov (0.2.3) simplecov-rcov (0.2.3)
simplecov (>= 0.4.1) simplecov (>= 0.4.1)
slack-notifier (2.3.2) simplecov_json_formatter (0.1.3)
slack-notifier (2.4.0)
slop (3.6.0) slop (3.6.0)
spring (2.1.0) spring (2.1.1)
spring-commands-rspec (1.0.4) spring-commands-rspec (1.0.4)
spring (>= 0.9.1) spring (>= 0.9.1)
spring-commands-testunit (1.0.1) spring-commands-testunit (1.0.1)
@ -538,45 +585,48 @@ GEM
actionpack (>= 4.0) actionpack (>= 4.0)
activesupport (>= 4.0) activesupport (>= 4.0)
sprockets (>= 3.0.0) sprockets (>= 3.0.0)
sync (0.5.0)
telegramAPI (1.4.2) telegramAPI (1.4.2)
rest-client (~> 2.0, >= 2.0.2) rest-client (~> 2.0, >= 2.0.2)
telephone_number (1.4.0) telephone_number (1.4.11)
term-ansicolor (1.7.1) term-ansicolor (1.7.1)
tins (~> 1.0) tins (~> 1.0)
test-unit (3.3.3) test-unit (3.4.4)
power_assert power_assert
thor (1.1.0) thor (1.1.0)
thread_safe (0.3.6) thread_safe (0.3.6)
tilt (2.0.9) tilt (2.0.10)
tins (1.20.2) timers (4.3.3)
twilio-ruby (5.23.0) tins (1.29.1)
faraday (~> 0.9) sync
twilio-ruby (5.55.0)
faraday (>= 0.9, < 2.0)
jwt (>= 1.5, <= 2.5) jwt (>= 1.5, <= 2.5)
nokogiri (>= 1.6, < 2.0) nokogiri (>= 1.6, < 2.0)
tzinfo (1.2.9) tzinfo (1.2.9)
thread_safe (~> 0.1) thread_safe (~> 0.1)
uglifier (4.1.20) uglifier (4.2.0)
execjs (>= 0.3.0, < 3) execjs (>= 0.3.0, < 3)
unf (0.1.4) unf (0.1.4)
unf_ext unf_ext
unf_ext (0.0.7.5) unf_ext (0.0.7.7)
unicode-display_width (2.0.0) unicode-display_width (2.0.0)
unicorn (5.5.0) unicorn (6.0.0)
kgio (~> 2.6) kgio (~> 2.6)
raindrops (~> 0.7) raindrops (~> 0.7)
valid_email2 (3.0.1) valid_email2 (3.6.1)
activemodel (>= 3.2) activemodel (>= 3.2)
mail (~> 2.5) mail (~> 2.5)
vcr (4.0.0) vcr (6.0.0)
viewpoint (1.1.0) viewpoint (1.1.1)
httpclient httpclient
logging logging
nokogiri nokogiri
rubyntlm rubyntlm
webmock (3.5.1) webmock (3.13.0)
addressable (>= 2.3.6) addressable (>= 2.3.6)
crack (>= 0.3.2) crack (>= 0.3.2)
hashdiff hashdiff (>= 0.4.0, < 2.0.0)
websocket-driver (0.7.5) websocket-driver (0.7.5)
websocket-extensions (>= 0.1.0) websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5) websocket-extensions (0.1.5)
@ -584,11 +634,11 @@ GEM
xpath (3.2.0) xpath (3.2.0)
nokogiri (~> 1.8) nokogiri (~> 1.8)
zeitwerk (2.4.2) zeitwerk (2.4.2)
zendesk_api (1.19.0) zendesk_api (1.30.0)
faraday (~> 0.9) faraday (>= 0.9.0, < 2.0.0)
hashie (>= 3.5.2, < 4.0.0) hashie (>= 3.5.2, < 5.0.0)
inflection inflection
mime-types mini_mime
multipart-post (~> 2.0) multipart-post (~> 2.0)
PLATFORMS PLATFORMS
@ -642,7 +692,7 @@ DEPENDENCIES
libv8 libv8
mail! mail!
mime-types mime-types
mini_racer mini_racer (= 0.2.9)
mysql2 mysql2
net-ldap net-ldap
oauth2 oauth2
@ -675,6 +725,7 @@ DEPENDENCIES
rspec-rails rspec-rails
rszr (= 0.5.2) rszr (= 0.5.2)
rubocop rubocop
rubocop-faker
rubocop-performance rubocop-performance
rubocop-rails rubocop-rails
rubocop-rspec rubocop-rspec

View file

@ -53,26 +53,22 @@ class CommunicateTwitterJob < ApplicationJob
# fill article with tweet info # fill article with tweet info
# direct message # direct message
if tweet.is_a?(Hash) if tweet.is_a?(Twitter::DirectMessage)
tweet_type = 'DirectMessage' tweet_type = 'DirectMessage'
article.message_id = tweet[:event][:id].to_s article.message_id = tweet.id.to_s
if tweet[:event] && tweet[:event][:type] == 'message_create'
#article.from = "@#{tweet.sender.screen_name}"
#article.to = "@#{tweet.recipient.screen_name}"
article.preferences['twitter'] = { article.preferences['twitter'] = {
recipient_id: tweet[:event][:message_create][:target][:recipient_id], recipient_id: tweet.recipient_id.to_s,
sender_id: tweet[:event][:message_create][:sender_id], sender_id: tweet.sender_id.to_s,
} }
article.preferences['links'] = [ article.preferences['links'] = [
{ {
url: TwitterSync::DM_URL_TEMPLATE % article.preferences[:twitter].slice(:recipient_id, :sender_id).values.map(&:to_i).sort.join('-'), url: TwitterSync::DM_URL_TEMPLATE % article.preferences[:twitter].slice(:recipient_id, :sender_id).values.map(&:to_i).sort.join('-'),
target: '_blank', target: '_blank',
name: 'on Twitter', name: 'on Twitter',
}, },
] ]
end
# regular tweet # regular tweet
elsif tweet.instance_of?(Twitter::Tweet) elsif tweet.instance_of?(Twitter::Tweet)

View file

@ -81,11 +81,11 @@ store new device for user if device not already known
end end
# generate device name # generate device name
if browser[:name] == 'Generic Browser' if browser[:name] == 'Unknown Browser'
browser[:name] = user_agent browser[:name] = user_agent
end end
name = '' name = ''
if browser[:plattform].present? && browser[:plattform] != 'Other' if browser[:plattform].present? && browser[:plattform] != 'UnknownPlatform'
name = browser[:plattform] name = browser[:plattform]
end end
if browser[:name].present? && browser[:name] != 'Other' if browser[:name].present? && browser[:name] != 'Other'

View file

@ -32,7 +32,7 @@ class ExternalCredential::Twitter
request_token = consumer.get_request_token(oauth_callback: ExternalCredential.callback_url('twitter')) request_token = consumer.get_request_token(oauth_callback: ExternalCredential.callback_url('twitter'))
rescue => e rescue => e
case e.message case e.message
when '401 Authorization Required' when '401 Unauthorized'
raise "#{e.message} (Invalid credentials may be to blame.)" raise "#{e.message} (Invalid credentials may be to blame.)"
when '403 Forbidden' when '403 Forbidden'
raise "#{e.message} (Your app's callback URL configuration on developer.twitter.com may be to blame.)" raise "#{e.message} (Your app's callback URL configuration on developer.twitter.com may be to blame.)"

View file

@ -130,6 +130,14 @@ class TwitterSync
state = get_state(channel, tweet) state = get_state(channel, tweet)
end end
if tweet.is_a?(Twitter::DirectMessage)
message = {
type: 'direct_message',
text: tweet.text,
}
state = get_state(channel, tweet)
end
if tweet.is_a?(Hash) && tweet['type'] == 'message_create' if tweet.is_a?(Hash) && tweet['type'] == 'message_create'
message = { message = {
type: 'direct_message', type: 'direct_message',
@ -478,38 +486,17 @@ create a tweet or direct message from an article
=end =end
def from_article(article) def from_article(article)
tweet = nil tweet = nil
case article[:type] case article[:type]
when 'twitter direct-message' when 'twitter direct-message'
Rails.logger.debug { "Create twitter direct message from article to '#{article[:to]}'..." } Rails.logger.debug { "Create twitter direct message from article to '#{article[:to]}'..." }
# tweet = @client.create_direct_message(
# article[:to],
# article[:body],
# {}
# )
article[:to].delete!('@') article[:to].delete!('@')
authorization = Authorization.find_by(provider: 'twitter', username: article[:to]) authorization = Authorization.find_by(provider: 'twitter', username: article[:to])
raise "Unable to lookup user_id for @#{article[:to]}" if !authorization raise "Unable to lookup user_id for @#{article[:to]}" if !authorization
data = { tweet = @client.create_direct_message(authorization.uid.to_i, article[:body])
event: {
type: 'message_create',
message_create: {
target: {
recipient_id: authorization.uid,
},
message_data: {
text: article[:body],
}
}
}
}
tweet = Twitter::REST::Request.new(@client, :json_post, '/1.1/direct_messages/events/new.json', data).perform
when 'twitter status' when 'twitter status'
Rails.logger.debug { 'Create tweet from article...' } Rails.logger.debug { 'Create tweet from article...' }

View file

@ -8,7 +8,7 @@ FactoryBot.define do
factory :twitter_authorization do factory :twitter_authorization do
provider { 'twitter' } provider { 'twitter' }
uid { Faker::Number.number(10) } uid { Faker::Number.number(digits: 10) }
username { Faker::Internet.username } username { Faker::Internet.username }
user_id { user.id } user_id { user.id }
end end

View file

@ -20,7 +20,7 @@ FactoryBot.define do
controller: 'external_credentials', controller: 'external_credentials',
action: 'app_verify', action: 'app_verify',
provider: 'twitter', provider: 'twitter',
webhook_id: Faker::Number.number(19), webhook_id: Faker::Number.number(digits: 19),
} }
end end

View file

@ -3,7 +3,7 @@
FactoryBot.define do FactoryBot.define do
factory 'knowledge_base/answer/translation/content', aliases: %i[knowledge_base_answer_translation_content] do factory 'knowledge_base/answer/translation/content', aliases: %i[knowledge_base_answer_translation_content] do
translation { nil } translation { nil }
body { Faker::Lorem.paragraph(3) } body { Faker::Lorem.paragraph(sentence_count: 3) }
before(:create) do |content| before(:create) do |content|
if content.translation.nil? if content.translation.nil?

View file

@ -2,7 +2,7 @@
FactoryBot.define do FactoryBot.define do
factory :text_module do factory :text_module do
name { "text module #{Faker::Number.unique.number(3)}" } name { "text module #{Faker::Number.unique.number(digits: 3)}" }
keywords { Faker::Superhero.prefix } keywords { Faker::Superhero.prefix }
content { Faker::Lorem.sentence } content { Faker::Lorem.sentence }
updated_by_id { 1 } updated_by_id { 1 }

View file

@ -84,7 +84,7 @@ FactoryBot.define do
sender_name { 'Agent' } sender_name { 'Agent' }
trait :reply do trait :reply do
in_reply_to { Faker::Number.number(19) } in_reply_to { Faker::Number.number(digits: 19) }
end end
end end
@ -99,18 +99,18 @@ FactoryBot.define do
trait :pending_delivery do trait :pending_delivery do
transient do transient do
recipient { create(:twitter_authorization) } recipient { create(:twitter_authorization) }
sender_id { Faker::Number.number(10) } sender_id { Faker::Number.number(digits: 10) }
end end
from { ticket.owner.fullname } from { ticket.owner.fullname }
to { recipient.username } to { recipient.username }
in_reply_to { Faker::Number.number(19) } in_reply_to { Faker::Number.number(digits: 19) }
content_type { 'text/plain' } content_type { 'text/plain' }
end end
trait :delivered do trait :delivered do
pending_delivery pending_delivery
message_id { Faker::Number.number(19) } message_id { Faker::Number.number(digits: 19) }
preferences do preferences do
{ {
delivery_retry: 1, delivery_retry: 1,

View file

@ -7,7 +7,7 @@ require 'rails_helper'
# Individual import steps are tested in spec/lib/sequencer. # Individual import steps are tested in spec/lib/sequencer.
# #
RSpec.describe 'Freshdesk import', type: :integration, use_vcr: true, db_strategy: :reset, required_envs: %w[IMPORT_FRESHDESK_ENDPOINT IMPORT_FRESHDESK_ENDPOINT_KEY] do # rubocop:disable RSpec/DescribeClass RSpec.describe 'Freshdesk import', type: :integration, use_vcr: true, db_strategy: :reset, required_envs: %w[IMPORT_FRESHDESK_ENDPOINT IMPORT_FRESHDESK_ENDPOINT_KEY IMPORT_FRESHDESK_ENDPOINT_SUBDOMAIN] do # rubocop:disable RSpec/DescribeClass
before do before do
@ -24,20 +24,8 @@ RSpec.describe 'Freshdesk import', type: :integration, use_vcr: true, db_strateg
Setting.set('system_init_done', false) Setting.set('system_init_done', false)
VCR.configure do |c| VCR.configure do |c|
%w[
IMPORT_FRESHDESK_ENDPOINT
IMPORT_FRESHDESK_ENDPOINT_KEY
IMPORT_FRESHDESK_ENDPOINT_SUBDOMAIN
].each do |env_key|
c.filter_sensitive_data("<#{env_key}>") { ENV[env_key] }
end
# The API key is used only inside the base64 encoded Basic Auth string, so mask that as well. # The API key is used only inside the base64 encoded Basic Auth string, so mask that as well.
%w[ c.filter_sensitive_data('<IMPORT_FRESHDESK_ENDPOINT_BASIC_AUTH>') { Base64.encode64( "#{ENV['IMPORT_FRESHDESK_ENDPOINT_KEY']}:X" ).chomp }
IMPORT_FRESHDESK_ENDPOINT_BASIC_AUTH
].each do |env_key|
c.filter_sensitive_data("<#{env_key}>") { Base64.encode64( "#{ENV['IMPORT_FRESHDESK_ENDPOINT_KEY']}:X" ).chomp }
end
end end
VCR.use_cassette 'freshdesk_import' do VCR.use_cassette 'freshdesk_import' do

View file

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe CommunicateTwitterJob, type: :job do RSpec.describe CommunicateTwitterJob, type: :job, required_envs: %w[TWITTER_CONSUMER_KEY TWITTER_CONSUMER_SECRET TWITTER_OAUTH_TOKEN TWITTER_OAUTH_TOKEN_SECRET TWITTER_USER_ID TWITTER_DM_RECIPIENT] do
let(:article) { create(:twitter_article, **(try(:factory_options) || {})) } let(:article) { create(:twitter_article, **(try(:factory_options) || {})) }
@ -18,7 +18,7 @@ RSpec.describe CommunicateTwitterJob, type: :job do
'in_reply_to_user_id' => nil, 'in_reply_to_user_id' => nil,
'place' => {}, 'place' => {},
'retweet_count' => 0, 'retweet_count' => 0,
'source' => '<a href="https://zammad.com/" rel="nofollow">zammad</a>', 'source' => '<a href="https://zammad.com" rel="nofollow">Zammad Integration Test</a>',
'favorited' => false, 'favorited' => false,
'truncated' => false, 'truncated' => false,
} }
@ -26,7 +26,7 @@ RSpec.describe CommunicateTwitterJob, type: :job do
let(:links_array) do let(:links_array) do
[{ [{
url: 'https://twitter.com/_/status/1244937367435108360', url: 'https://twitter.com/_/status/1410147100403417088',
target: '_blank', target: '_blank',
name: 'on Twitter', name: 'on Twitter',
}] }]
@ -47,7 +47,7 @@ RSpec.describe CommunicateTwitterJob, type: :job do
it 'updates the article with tweet attributes' do it 'updates the article with tweet attributes' do
expect { described_class.perform_now(article.id) } expect { described_class.perform_now(article.id) }
.to change { article.reload.message_id }.to('1244937367435108360') .to change { article.reload.message_id }.to('1410147100403417088')
.and change { article.reload.preferences[:twitter] }.to(hash_including(tweet_attributes)) .and change { article.reload.preferences[:twitter] }.to(hash_including(tweet_attributes))
.and change { article.reload.preferences[:links] }.to(links_array) .and change { article.reload.preferences[:links] }.to(links_array)
end end
@ -60,41 +60,29 @@ RSpec.describe CommunicateTwitterJob, type: :job do
end end
context 'with a user mention' do context 'with a user mention' do
let(:factory_options) { { body: '@twitter @twitterlive Dont mind me, just testing the API' } } let(:factory_options) { { body: '@zammadtesting Dont mind me, just testing the API' } }
it 'updates the article with tweet recipients' do it 'updates the article with tweet recipients' do
expect { described_class.perform_now(article.id) } expect { described_class.perform_now(article.id) }
.to change { article.reload.to }.to('@Twitter @TwitterLive') .to change { article.reload.to }.to('@ZammadTesting')
end end
end end
end end
context 'for DMs' do context 'for DMs' do
let(:article) { create(:twitter_dm_article, :pending_delivery, recipient: recipient, body: 'Please ignore this message.') } let(:article) { create(:twitter_dm_article, :pending_delivery, recipient: recipient, body: 'Please ignore this message.') }
let(:recipient) { create(:twitter_authorization, uid: '2688148651', username: 'AirbnbHelp') } let(:recipient) { create(:twitter_authorization, uid: ENV.fetch('TWITTER_DM_RECIPIENT', '1234567890')) }
let(:request_body) do
{
event: {
type: 'message_create',
message_create: {
target: { recipient_id: recipient.uid },
message_data: { text: article.body }
}
}
}.to_json
end
let(:dm_attributes) do let(:dm_attributes) do
{ {
'recipient_id' => recipient.uid, 'recipient_id' => recipient.uid,
'sender_id' => '1205290247124217856', 'sender_id' => ENV.fetch('TWITTER_USER_ID', '0987654321'),
} }
end end
let(:links_array) do let(:links_array) do
[{ [{
url: "https://twitter.com/messages/#{recipient.uid}-1205290247124217856", url: "https://twitter.com/messages/#{recipient.uid}-1408314039470538752",
target: '_blank', target: '_blank',
name: 'on Twitter', name: 'on Twitter',
}] }]
@ -110,12 +98,11 @@ RSpec.describe CommunicateTwitterJob, type: :job do
expect(WebMock) expect(WebMock)
.to have_requested(:post, 'https://api.twitter.com/1.1/direct_messages/events/new.json') .to have_requested(:post, 'https://api.twitter.com/1.1/direct_messages/events/new.json')
.with(body: request_body)
end end
it 'updates the article with DM attributes' do it 'updates the article with DM attributes' do
expect { described_class.perform_now(article.id) } expect { described_class.perform_now(article.id) }
.to change { article.reload.message_id }.to('1244953398509617156') .to change { article.reload.message_id }.to('1410145389026676741')
.and change { article.reload.preferences[:twitter] }.to(hash_including(dm_attributes)) .and change { article.reload.preferences[:twitter] }.to(hash_including(dm_attributes))
.and change { article.reload.preferences[:links] }.to(links_array) .and change { article.reload.preferences[:links] }.to(links_array)
end end

View file

@ -10,13 +10,13 @@ RSpec.describe Issue2715FixBrokenTwitterUrlsJob, type: :job do
let(:tweet_preferences) do let(:tweet_preferences) do
# NOTE: Faker 2.0+ has deprecated the `#number(20)` syntax in favor of `#number(digits: 20)`. # NOTE: Faker 2.0+ has deprecated the `#number(20)` syntax in favor of `#number(digits: 20)`.
{ links: [{ url: "https://twitter.com/statuses/#{Faker::Number.number(20)}" }] } { links: [{ url: "https://twitter.com/statuses/#{Faker::Number.number(digits: 20)}" }] }
end end
let(:dm_preferences) do let(:dm_preferences) do
{ {
# NOTE: Faker 2.0+ has deprecated the `#number(20)` syntax in favor of `#number(digits: 20)`. # NOTE: Faker 2.0+ has deprecated the `#number(20)` syntax in favor of `#number(digits: 20)`.
links: [{ url: "https://twitter.com/statuses/#{Faker::Number.number(20)}" }], links: [{ url: "https://twitter.com/statuses/#{Faker::Number.number(digits: 20)}" }],
twitter: { twitter: {
recipient_id: recipient_id, recipient_id: recipient_id,
sender_id: sender_id, sender_id: sender_id,

View file

@ -2,33 +2,9 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe Facebook, use_vcr: true, current_user_id: 1, required_envs: %w[FACEBOOK_ADMIN_ACCESS_TOKEN] do RSpec.describe Facebook, use_vcr: true, current_user_id: 1, required_envs: %w[FACEBOOK_ADMIN_USER_ID FACEBOOK_ADMIN_FIRSTNAME FACEBOOK_ADMIN_LASTNAME FACEBOOK_ADMIN_ACCESS_TOKEN FACEBOOK_PAGE_1_ACCCESS_TOKEN FACEBOOK_PAGE_1_ID FACEBOOK_PAGE_1_NAME FACEBOOK_PAGE_1_POST_ID FACEBOOK_PAGE_1_POST_MESSAGE FACEBOOK_PAGE_1_POST_COMMENT_ID FACEBOOK_PAGE_2_ACCCESS_TOKEN FACEBOOK_PAGE_2_ID FACEBOOK_PAGE_2_NAME FACEBOOK_CUSTOMER_ID FACEBOOK_CUSTOMER_FIRSTNAME FACEBOOK_CUSTOMER_LASTNAME] do
before do before do
VCR.configure do |c|
%w[
FACEBOOK_ADMIN_USER_ID
FACEBOOK_ADMIN_FIRSTNAME
FACEBOOK_ADMIN_LASTNAME
FACEBOOK_ADMIN_ACCESS_TOKEN
FACEBOOK_PAGE_1_ACCCESS_TOKEN
FACEBOOK_PAGE_1_ID
FACEBOOK_PAGE_1_NAME
FACEBOOK_PAGE_1_POST_ID
FACEBOOK_PAGE_1_POST_MESSAGE
FACEBOOK_PAGE_1_POST_COMMENT_ID
FACEBOOK_PAGE_2_ACCCESS_TOKEN
FACEBOOK_PAGE_2_ID
FACEBOOK_PAGE_2_NAME
FACEBOOK_CUSTOMER_ID
FACEBOOK_CUSTOMER_FIRSTNAME
FACEBOOK_CUSTOMER_LASTNAME
].each do |env_key|
c.filter_sensitive_data("<#{env_key}>") { ENV[env_key] }
end
end
travel_to '2021-02-13 13:37 +0100' travel_to '2021-02-13 13:37 +0100'
end end

View file

@ -2,30 +2,9 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe Channel::Driver::Facebook, use_vcr: true, required_envs: %w[FACEBOOK_ADMIN_ACCESS_TOKEN] do RSpec.describe Channel::Driver::Facebook, use_vcr: true, required_envs: %w[FACEBOOK_ADMIN_USER_ID FACEBOOK_ADMIN_FIRSTNAME FACEBOOK_ADMIN_LASTNAME FACEBOOK_PAGE_1_ACCCESS_TOKEN FACEBOOK_PAGE_1_ID FACEBOOK_PAGE_1_NAME FACEBOOK_PAGE_1_POST_ID FACEBOOK_PAGE_1_POST_COMMENT_ID FACEBOOK_PAGE_2_ACCCESS_TOKEN FACEBOOK_PAGE_2_ID FACEBOOK_PAGE_2_NAME FACEBOOK_CUSTOMER_ID FACEBOOK_CUSTOMER_FIRSTNAME FACEBOOK_CUSTOMER_LASTNAME] do
before do before do
VCR.configure do |c|
%w[
FACEBOOK_ADMIN_USER_ID
FACEBOOK_ADMIN_FIRSTNAME
FACEBOOK_ADMIN_LASTNAME
FACEBOOK_PAGE_1_ACCCESS_TOKEN
FACEBOOK_PAGE_1_ID
FACEBOOK_PAGE_1_NAME
FACEBOOK_PAGE_1_POST_ID
FACEBOOK_PAGE_1_POST_COMMENT_ID
FACEBOOK_PAGE_2_ACCCESS_TOKEN
FACEBOOK_PAGE_2_ID
FACEBOOK_PAGE_2_NAME
FACEBOOK_CUSTOMER_ID
FACEBOOK_CUSTOMER_FIRSTNAME
FACEBOOK_CUSTOMER_LASTNAME
].each do |env_key|
c.filter_sensitive_data("<#{env_key}>") { ENV[env_key] }
end
end
travel_to '2021-02-13 13:37 +0100' travel_to '2021-02-13 13:37 +0100'
end end

View file

@ -2,7 +2,7 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe Channel::Driver::Twitter do RSpec.describe Channel::Driver::Twitter, required_envs: %w[TWITTER_CONSUMER_KEY TWITTER_CONSUMER_SECRET TWITTER_OAUTH_TOKEN TWITTER_OAUTH_TOKEN_SECRET TWITTER_DM_RECIPIENT TWITTER_USER_ID] do
subject(:channel) { create(:twitter_channel) } subject(:channel) { create(:twitter_channel) }
let(:external_credential) { ExternalCredential.find(channel.options[:auth][:external_credential_id]) } let(:external_credential) { ExternalCredential.find(channel.options[:auth][:external_credential_id]) }
@ -704,101 +704,41 @@ RSpec.describe Channel::Driver::Twitter do
end end
end end
describe 'Twitter API authentication' do
let(:consumer_credentials) do
{
consumer_key: external_credential.credentials[:consumer_key],
consumer_secret: external_credential.credentials[:consumer_secret],
}
end
let(:oauth_credentials) do
{
access_token: channel.options[:auth][:oauth_token],
access_token_secret: channel.options[:auth][:oauth_token_secret],
}
end
it 'uses consumer key/secret stored on ExternalCredential' do
expect(Twitter::REST::Client)
.to receive(:new).with(hash_including(consumer_credentials))
.and_call_original
channel.deliver(delivery_payload)
end
it 'uses OAuth token/secret stored on #options hash' do
expect(Twitter::REST::Client)
.to receive(:new).with(hash_including(oauth_credentials))
.and_call_original
channel.deliver(delivery_payload)
end
end
describe 'Twitter API activity' do describe 'Twitter API activity' do
it 'creates a tweet/DM via the API' do
channel.deliver(delivery_payload)
expect(WebMock)
.to have_requested(:post, "https://api.twitter.com/1.1#{endpoint}")
.with(body: request_body)
end
it 'returns the created tweet/DM' do it 'returns the created tweet/DM' do
expect(channel.deliver(delivery_payload)).to match(return_value) expect(channel.deliver(delivery_payload)).to be_a(return_value)
end end
end end
end end
context 'for tweets' do context 'for tweets' do
let!(:outgoing_tweet) { create(:twitter_article) } let!(:outgoing_tweet) { create(:twitter_article) }
let(:endpoint) { '/statuses/update.json' }
let(:request_body) { <<~BODY.chomp }
in_reply_to_status_id&status=#{URI.encode_www_form_component(outgoing_tweet.body)}
BODY
let(:return_value) { Twitter::Tweet } let(:return_value) { Twitter::Tweet }
include_examples 'for #send' include_examples 'for #send'
context 'in a thread' do context 'in a thread' do
let!(:outgoing_tweet) { create(:twitter_article, :reply) } let!(:outgoing_tweet) { create(:twitter_article, :reply) }
let(:request_body) { <<~BODY.chomp }
in_reply_to_status_id=#{outgoing_tweet.in_reply_to}&status=#{URI.encode_www_form_component(outgoing_tweet.body)}
BODY
it 'creates a tweet via the API' do it 'creates a tweet via the API' do
channel.deliver(delivery_payload) expect { channel.deliver(delivery_payload) }.to not_raise_error
expect(WebMock)
.to have_requested(:post, "https://api.twitter.com/1.1#{endpoint}")
.with(body: request_body)
end end
end end
context 'containing an asterisk (workaround for sferik/twitter #677)' do context 'containing an asterisk (workaround for sferik/twitter #677)' do
let!(:outgoing_tweet) { create(:twitter_article, body: 'foo * bar') } let!(:outgoing_tweet) { create(:twitter_article, body: 'foo * bar') }
let(:request_body) { <<~BODY.chomp }
in_reply_to_status_id&status=#{URI.encode_www_form_component('foo bar')}
BODY
it 'converts it to a full-width asterisk (U+FF0A)' do it 'converts it to a full-width asterisk (U+FF0A)' do
channel.deliver(delivery_payload) expect { channel.deliver(delivery_payload) }.to not_raise_error
expect(WebMock)
.to have_requested(:post, "https://api.twitter.com/1.1#{endpoint}")
.with(body: request_body)
end end
end end
end end
context 'for DMs' do context 'for DMs' do
let!(:outgoing_tweet) { create(:twitter_dm_article, :pending_delivery) } let(:recipient) { create(:twitter_authorization, uid: ENV.fetch('TWITTER_DM_RECIPIENT', '1234567890')) }
let(:endpoint) { '/direct_messages/events/new.json' } let!(:outgoing_tweet) { create(:twitter_dm_article, :pending_delivery, recipient: recipient) }
let(:request_body) { <<~BODY.chomp } let(:return_value) { Twitter::DirectMessage }
{"event":{"type":"message_create","message_create":{"target":{"recipient_id":"#{Authorization.last.uid}"},"message_data":{"text":"#{outgoing_tweet.body}"}}}}
BODY
let(:return_value) { { event: hash_including(type: 'message_create') } }
include_examples 'for #send' include_examples 'for #send'
end end
@ -830,38 +770,6 @@ RSpec.describe Channel::Driver::Twitter do
end end
end end
describe 'Twitter API authentication' do
let(:consumer_credentials) do
{
consumer_key: external_credential.credentials[:consumer_key],
consumer_secret: external_credential.credentials[:consumer_secret],
}
end
let(:oauth_credentials) do
{
access_token: channel.options[:auth][:oauth_token],
access_token_secret: channel.options[:auth][:oauth_token_secret],
}
end
it 'uses consumer key/secret stored on ExternalCredential' do
expect(Twitter::REST::Client)
.to receive(:new).with(hash_including(consumer_credentials))
.and_call_original
channel.fetch
end
it 'uses OAuth token/secret stored on #options hash' do
expect(Twitter::REST::Client)
.to receive(:new).with(hash_including(oauth_credentials))
.and_call_original
channel.fetch
end
end
describe 'Twitter API activity' do describe 'Twitter API activity' do
it 'sets successful status attributes' do it 'sets successful status attributes' do
expect { channel.fetch } expect { channel.fetch }
@ -921,8 +829,8 @@ RSpec.describe Channel::Driver::Twitter do
it 'creates an article for each recent tweet/retweet' do it 'creates an article for each recent tweet/retweet' do
expect { channel.fetch } expect { channel.fetch }
.to change { Ticket.where('title LIKE ?', 'RT @%').count }.by(1) .to change { Ticket.where('title LIKE ?', 'RT @%').count }.by(49)
.and change(Ticket, :count).by(3) .and change(Ticket, :count).by(73)
end end
end end
end end

View file

@ -123,12 +123,12 @@ RSpec.describe Cti::Log do
'queue' => '49123457', 'queue' => '49123457',
'from' => '49123456', 'from' => '49123456',
'from_comment' => nil, 'from_comment' => nil,
'from_pretty' => '49123456', 'from_pretty' => '+49 491 23456',
'start_at' => nil, 'start_at' => nil,
'end_at' => nil, 'end_at' => nil,
'to' => '49123457', 'to' => '49123457',
'to_comment' => 'user 1', 'to_comment' => 'user 1',
'to_pretty' => '49123457' 'to_pretty' => '+49 491 23457'
) )
end end

View file

@ -349,7 +349,7 @@ RSpec.describe Ticket::Article, type: :model do
end end
end end
describe 'Auto-setting of outgoing Twitter article attributes (via bg jobs):', use_vcr: :with_oauth_headers do describe 'Auto-setting of outgoing Twitter article attributes (via bg jobs):', use_vcr: :with_oauth_headers, required_envs: %w[TWITTER_CONSUMER_KEY TWITTER_CONSUMER_SECRET TWITTER_OAUTH_TOKEN TWITTER_OAUTH_TOKEN_SECRET] do
subject!(:twitter_article) { create(:twitter_article, sender_name: 'Agent') } subject!(:twitter_article) { create(:twitter_article, sender_name: 'Agent') }
let(:channel) { Channel.find(twitter_article.ticket.preferences[:channel_id]) } let(:channel) { Channel.find(twitter_article.ticket.preferences[:channel_id]) }
@ -358,7 +358,7 @@ RSpec.describe Ticket::Article, type: :model do
it 'sets #from to senders Twitter handle' do it 'sets #from to senders Twitter handle' do
expect(&run_bg_jobs) expect(&run_bg_jobs)
.to change { twitter_article.reload.from } .to change { twitter_article.reload.from }
.to('@example') .to('@ZammadTesting')
end end
it 'sets #to to recipients Twitter handle' do it 'sets #to to recipients Twitter handle' do
@ -370,7 +370,7 @@ RSpec.describe Ticket::Article, type: :model do
it 'sets #message_id to tweet ID (https://twitter.com/_/status/<id>)' do it 'sets #message_id to tweet ID (https://twitter.com/_/status/<id>)' do
expect(&run_bg_jobs) expect(&run_bg_jobs)
.to change { twitter_article.reload.message_id } .to change { twitter_article.reload.message_id }
.to('1069382411899817990') .to('1410130368498372609')
end end
it 'sets #preferences with tweet metadata' do it 'sets #preferences with tweet metadata' do

View file

@ -179,7 +179,7 @@ RSpec.describe 'External Credentials', type: :request do
end end
end end
context 'for Twitter', :use_vcr do context 'for Twitter', :use_vcr, required_envs: %w[TWITTER_CONSUMER_KEY TWITTER_CONSUMER_SECRET TWITTER_OAUTH_TOKEN TWITTER_OAUTH_TOKEN_SECRET TWITTER_DEV_ENVIRONMENT] do
shared_context 'for callback URL configuration' do shared_context 'for callback URL configuration' do
# NOTE: When recording a new VCR cassette for these tests, # NOTE: When recording a new VCR cassette for these tests,
# the URL below must match the callback URL # the URL below must match the callback URL
@ -227,7 +227,7 @@ RSpec.describe 'External Credentials', type: :request do
include_examples 'for failure cases' do include_examples 'for failure cases' do
let(:status) { :ok } let(:status) { :ok }
let(:error_message) { <<~ERR.chomp } let(:error_message) { <<~ERR.chomp }
401 Authorization Required (Invalid credentials may be to blame.) 401 Unauthorized (Invalid credentials may be to blame.)
ERR ERR
end end
end end
@ -262,7 +262,7 @@ RSpec.describe 'External Credentials', type: :request do
include_examples 'for failure cases' do include_examples 'for failure cases' do
let(:status) { :ok } let(:status) { :ok }
let(:error_message) { <<~ERR.chomp } let(:error_message) { <<~ERR.chomp }
Dev Environment Label invalid. Please use an existing one ["zammad"], or create a new one. Dev Environment Label invalid. Please use an existing one ["#{ENV.fetch('TWITTER_DEV_ENVIRONMENT', 'Integration')}"], or create a new one.
ERR ERR
end end
end end
@ -348,7 +348,7 @@ RSpec.describe 'External Credentials', type: :request do
include_examples 'for failure cases' do include_examples 'for failure cases' do
let(:status) { :internal_server_error } let(:status) { :internal_server_error }
let(:error_message) { <<~ERR.chomp } let(:error_message) { <<~ERR.chomp }
401 Authorization Required (Invalid credentials may be to blame.) 401 Unauthorized (Invalid credentials may be to blame.)
ERR ERR
end end
end end

View file

@ -3,3 +3,4 @@
require 'deprecation_toolkit/rspec' require 'deprecation_toolkit/rspec'
DeprecationToolkit::Configuration.test_runner = :rspec DeprecationToolkit::Configuration.test_runner = :rspec
# DeprecationToolkit::Configuration.warnings_treated_as_deprecation = [ %r{deprecat}i ]

View file

@ -91,7 +91,7 @@ module ZammadSpecSupportRequest
add_headers('Authorization' => credentials) add_headers('Authorization' => credentials)
when :browser when :browser
post '/api/v1/signin', params: { username: login, password: password, fingerprint: Faker::Number.number(9) } post '/api/v1/signin', params: { username: login, password: password, fingerprint: Faker::Number.number(digits: 9) }
end end
end end

View file

@ -5,9 +5,16 @@ RSpec.configure do |config|
config.around(:each, :required_envs) do |example| config.around(:each, :required_envs) do |example|
example.metadata[:required_envs].each do |secret| example.metadata[:required_envs].each do |secret|
if ENV[secret].blank? if ENV[secret].blank?
raise "This test requires the ENV variables [#{required_envs.join(', ')}], but #{secret} was not found." raise "This test requires the ENV variables [#{example.metadata[:required_envs].join(', ')}], but #{secret} was not found."
end end
end end
VCR.configure do |c|
example.metadata[:required_envs].each do |env_key|
c.filter_sensitive_data("<#{env_key}>") { ENV[env_key] }
end
end
example.run example.run
end end
end end

View file

@ -76,9 +76,21 @@ RSpec.configure do |config|
config.around(:each, use_vcr: true) do |example| config.around(:each, use_vcr: true) do |example|
vcr_options = Array(example.metadata[:use_vcr]) vcr_options = Array(example.metadata[:use_vcr])
spec_path = Pathname.new(example.file_path).realpath spec_path = Pathname.new(example.file_path).realpath
cassette_path = spec_path.relative_path_from(Rails.root.join('spec')).sub(%r{_spec\.rb$}, '') cassette_path = spec_path.relative_path_from(Rails.root.join('spec')).sub(%r{_spec\.rb$}, '')
cassette_name = "#{example.example_group.description} #{example.description}".gsub(%r{[^0-9A-Za-z.\-]+}, '_').downcase cassette_name = "#{example.metadata[:example_group][:full_description]}/#{example.description}".gsub(%r{[^0-9A-Za-z\-]+}, '_').downcase
# handle file name limit of 255 chars
if cassette_name.length > 253
hexdigest_cassette_name = Digest::SHA256.hexdigest(cassette_name)
shortened_casset_name = "#{cassette_name.first(30)}-#{cassette_name.last(30)}-#{hexdigest_cassette_name}"
Rails.logger.info "Detected too long VCR filename '#{cassette_name}' (#{cassette_name.length}) and therefore converted it to '#{shortened_casset_name}'"
cassette_name = shortened_casset_name
end
request_profile = [ request_profile = [
:method, :method,
:uri, :uri,

View file

@ -18,7 +18,7 @@ RSpec.describe 'Manage > Channels > Twitter', :use_vcr, type: :system do
fill_in 'Twitter Consumer Secret *', with: 'some_secret', exact: true fill_in 'Twitter Consumer Secret *', with: 'some_secret', exact: true
click_on 'Submit' click_on 'Submit'
expect(page).to have_css('.modal .alert', text: '401 Authorization Required') expect(page).to have_css('.modal .alert', text: '401 Unauthorized (Invalid credentials may be to blame.)')
end end
end end
end end
@ -36,7 +36,7 @@ RSpec.describe 'Manage > Channels > Twitter', :use_vcr, type: :system do
fill_in 'Twitter Dev environment label *', with: 'some_env', exact: true fill_in 'Twitter Dev environment label *', with: 'some_env', exact: true
click_on 'Submit' click_on 'Submit'
expect(page).to have_css('.modal .alert', text: '401 Authorization Required') expect(page).to have_css('.modal .alert', text: '401 Unauthorized (Invalid credentials may be to blame.)')
end end
end end
end end

View file

@ -30,7 +30,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 1 followers_count: 1
friends_count: 1 friends_count: 1
statuses_count: 2 statuses_count: 2
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
'2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess '2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: '2975699229' id: '2975699229'

View file

@ -30,7 +30,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 0 followers_count: 0
friends_count: 1 friends_count: 1
statuses_count: 2 statuses_count: 2
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
'2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess '2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: '2975699229' id: '2975699229'

View file

@ -77,7 +77,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 0 followers_count: 0
friends_count: 1 friends_count: 1
statuses_count: 8 statuses_count: 8
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
'2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess '2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: '2975699229' id: '2975699229'

View file

@ -37,7 +37,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 0 followers_count: 0
friends_count: 1 friends_count: 1
statuses_count: 4 statuses_count: 4
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
'2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess '2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: '2975699229' id: '2975699229'

View file

@ -51,7 +51,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 1 followers_count: 1
friends_count: 1 friends_count: 1
statuses_count: 2 statuses_count: 2
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
controller: channels_twitter controller: channels_twitter
action: webhook_incoming action: webhook_incoming

View file

@ -20,7 +20,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 1 followers_count: 1
friends_count: 1 friends_count: 1
statuses_count: 2 statuses_count: 2
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
'2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess '2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: '2975699229' id: '2975699229'

View file

@ -21,7 +21,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 1 followers_count: 1
friends_count: 1 friends_count: 1
statuses_count: 2 statuses_count: 2
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
'2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess '2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: '2975699229' id: '2975699229'

View file

@ -31,7 +31,7 @@ follow_events:
time_zone: '' time_zone: ''
geo_enabled: false geo_enabled: false
verified: false verified: false
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
following: false following: false
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
profile_background_tile: false profile_background_tile: false

View file

@ -31,7 +31,7 @@ follow_events:
time_zone: '' time_zone: ''
geo_enabled: false geo_enabled: false
verified: false verified: false
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
following: false following: false
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
profile_background_tile: false profile_background_tile: false

View file

@ -49,7 +49,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6 profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333' profile_text_color: '333333'
profile_use_background_image: true profile_use_background_image: true
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
default_profile: true default_profile: true
default_profile_image: false default_profile_image: false

View file

@ -46,7 +46,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6 profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333' profile_text_color: '333333'
profile_use_background_image: true profile_use_background_image: true
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
default_profile: true default_profile: true
default_profile_image: false default_profile_image: false

View file

@ -46,7 +46,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6 profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333' profile_text_color: '333333'
profile_use_background_image: true profile_use_background_image: true
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
default_profile: true default_profile: true
default_profile_image: false default_profile_image: false

View file

@ -48,7 +48,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6 profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333' profile_text_color: '333333'
profile_use_background_image: true profile_use_background_image: true
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
default_profile: true default_profile: true
default_profile_image: false default_profile_image: false

View file

@ -46,7 +46,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6 profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333' profile_text_color: '333333'
profile_use_background_image: true profile_use_background_image: true
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
default_profile: true default_profile: true
default_profile_image: false default_profile_image: false

View file

@ -49,7 +49,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6 profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333' profile_text_color: '333333'
profile_use_background_image: true profile_use_background_image: true
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
default_profile: true default_profile: true
default_profile_image: false default_profile_image: false

View file

@ -46,7 +46,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6 profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333' profile_text_color: '333333'
profile_use_background_image: true profile_use_background_image: true
profile_image_url: http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url: https://pbs.twimg.com/profile_images/1408343046731845632/K56uhLP2_400x400.png
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
default_profile: true default_profile: true
default_profile_image: false default_profile_image: false

View file

@ -1,84 +0,0 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=Consequatur+deserunt+sapiente+rerum.
headers:
User-Agent:
- TwitterRubyGem/6.2.0
Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="c5c00913ad671a7bc4dd721564fa1ddb",
oauth_signature="RAol4gCi%2FtCzZDvdXB%2FMzAsVIBY%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585658007", oauth_token="REDACTED",
oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
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:
- '1893'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 31 Mar 2020 12:33:27 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 12:33:27 GMT
Pragma:
- no-cache
Server:
- tsa_m
Set-Cookie:
- guest_id=v1%3A158565800758345505; Max-Age=63072000; Expires=Thu, 31 Mar 2022
12:33:27 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_JWzIkRlgfSAhdmWPMCfNQw=="; Max-Age=63072000; Expires=Thu,
31 Mar 2022 12:33:27 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Status:
- 200 OK
Strict-Transport-Security:
- max-age=631138519
X-Access-Level:
- read-write-directmessages
X-Connection-Hash:
- 7b19dfd8d697ce9c159a74d199c390d6
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-Response-Time:
- '153'
X-Transaction:
- '009b8a42003fa36c'
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
X-Xss-Protection:
- '0'
body:
encoding: UTF-8
string: '{"created_at":"Tue Mar 31 12:33:27 +0000 2020","id":1244966034336968704,"id_str":"1244966034336968704","text":"Consequatur
deserunt sapiente rerum.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\/\" rel=\"nofollow\"\u003ezammad\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":1205290247124217856,"id_str":"1205290247124217856","name":"pennbrooke","screen_name":"pennbrooke1","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":1,"listed_count":0,"created_at":"Fri
Dec 13 00:56:10 +0000 2019","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":25,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":false,"default_profile":true,"default_profile_image":true,"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,"lang":"de"}'
http_version:
recorded_at: Tue, 31 Mar 2020 12:33:27 GMT
recorded_with: VCR 4.0.0

View file

@ -0,0 +1,80 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=Et+nihil+et+vero.
headers:
User-Agent:
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="6bdd110e5fab1ce536f289468468fc2b",
oauth_signature="CnjQGa1vQ6LwdYYiwjhiTVmlTQE%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1625040246", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
Host:
- api.twitter.com
response:
status:
code: 200
message: OK
headers:
Date:
- Wed, 30 Jun 2021 08:04:06 GMT
Pragma:
- no-cache
Server:
- tsa_o
Status:
- 200 OK
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Set-Cookie:
- guest_id=v1%3A162504024660429882; Max-Age=63072000; Expires=Fri, 30 Jun 2023
08:04:06 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_tV/jpDXaW+D3DEtyLxcnYA=="; Max-Age=63072000; Expires=Fri,
30 Jun 2023 08:04:06 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type:
- application/json;charset=utf-8
Cache-Control:
- no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Last-Modified:
- Wed, 30 Jun 2021 08:04:06 GMT
X-Transaction:
- 4c148497d581205f
Content-Length:
- '1959'
X-Access-Level:
- read-write-directmessages
X-Frame-Options:
- SAMEORIGIN
X-Xss-Protection:
- '0'
Content-Disposition:
- attachment; filename=json.json
X-Content-Type-Options:
- nosniff
X-Twitter-Response-Tags:
- BouncerCompliant
Strict-Transport-Security:
- max-age=631138519
X-Connection-Hash:
- aa2e55737481229a7f9b447bb3be7d7997cea851fd9524f9173c99092529628b
Connection:
- close
body:
encoding: UTF-8
string: '{"created_at":"Wed Jun 30 08:04:06 +0000 2021","id":1410147116983410688,"id_str":"1410147116983410688","text":"Et
nihil et vero.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\" rel=\"nofollow\"\u003eZammad Integration Test\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":<TWITTER_USER_ID>,"id_str":"<TWITTER_USER_ID>","name":"Zammad
Integration Test Account","screen_name":"ZammadTesting","location":"","description":"Zammad
Integration Test Account","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":0,"listed_count":0,"created_at":"Fri
Jun 25 07:21:40 +0000 2021","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":132,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1408343046731845632\/K56uhLP2_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1408343046731845632\/K56uhLP2_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":true,"default_profile":true,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none","withheld_in_countries":[]},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":0,"favorited":false,"retweeted":false,"lang":"fr"}'
recorded_at: Wed, 30 Jun 2021 08:04:06 GMT
recorded_with: VCR 6.0.0

View file

@ -5,14 +5,14 @@ http_interactions:
uri: https://api.twitter.com/1.1/statuses/update.json uri: https://api.twitter.com/1.1/statuses/update.json
body: body:
encoding: UTF-8 encoding: UTF-8
string: in_reply_to_status_id&status=Officia+qui+quo+laudantium. string: in_reply_to_status_id&status=Dolor+rerum+illo+voluptatibus.
headers: headers:
User-Agent: User-Agent:
- TwitterRubyGem/6.2.0 - TwitterRubyGem/7.0.0
Authorization: Authorization:
- OAuth oauth_consumer_key="q7K8GEkhyCHs9jHLtkmD9Kod4", oauth_nonce="03c07d843276ea5be9e32934e277cd07", - OAuth oauth_consumer_key="q7K8GEkhyCHs9jHLtkmD9Kod4", oauth_nonce="d374bebfd96c764d209aaed0d96ba8e9",
oauth_signature="etY6LuIgozpV2JPPFCnnSRykVf4%3D", oauth_signature_method="HMAC-SHA1", oauth_signature="soiG9cT63KFZZuJvIje4ImaQlcI%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585657668", oauth_token="7783712304-H9s75r2d532diPmJYK6JrvUWxu9gTDZ6ocjfToL", oauth_timestamp="1625040247", oauth_token="7783712304-H9s75r2d532diPmJYK6JrvUWxu9gTDZ6ocjfToL",
oauth_version="1.0" oauth_version="1.0"
Connection: Connection:
- close - close
@ -25,32 +25,29 @@ http_interactions:
code: 401 code: 401
message: Unauthorized message: Unauthorized
headers: headers:
Connection: Date:
- close - Wed, 30 Jun 2021 08:04:07 GMT
Content-Length: Server:
- '62' - tsa_o
Set-Cookie:
- guest_id=v1%3A162504024752063664; Max-Age=63072000; Expires=Fri, 30 Jun 2023
08:04:07 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- personalization_id="v1_gSc3bw28qFN+ZFLU763IQA=="; Max-Age=63072000; Expires=Fri,
30 Jun 2023 08:04:07 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type: Content-Type:
- application/json; charset=utf-8 - application/json; charset=utf-8
Date: Cache-Control:
- Tue, 31 Mar 2020 12:27:49 GMT - no-cache, no-store, max-age=0
Server: Content-Length:
- tsa_m - '62'
Set-Cookie:
- guest_id=v1%3A158565766914726723; Max-Age=63072000; Expires=Thu, 31 Mar 2022
12:27:49 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- personalization_id="v1_Pk8vk94r2BPsy5pPrAyZiw=="; Max-Age=63072000; Expires=Thu,
31 Mar 2022 12:27:49 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Strict-Transport-Security: Strict-Transport-Security:
- max-age=631138519 - max-age=631138519
X-Connection-Hash: X-Connection-Hash:
- 43a5b1d7e5d707d650f1cf02cdef086c - 1f1fe60ac5f10347a4c84b938827ffe2b2b9141eff3233e40528e5c1d835ea81
X-Response-Time: Connection:
- '107' - close
X-Tsa-Request-Body-Time:
- '0'
body: body:
encoding: UTF-8 encoding: UTF-8
string: '{"errors":[{"code":89,"message":"Invalid or expired token."}]}' string: '{"errors":[{"code":89,"message":"Invalid or expired token."}]}'
http_version: recorded_at: Wed, 30 Jun 2021 08:04:07 GMT
recorded_at: Tue, 31 Mar 2020 12:27:49 GMT recorded_with: VCR 6.0.0
recorded_with: VCR 4.0.0

View file

@ -5,16 +5,15 @@ http_interactions:
uri: https://api.twitter.com/1.1/direct_messages/events/new.json uri: https://api.twitter.com/1.1/direct_messages/events/new.json
body: body:
encoding: UTF-8 encoding: UTF-8
string: '{"event":{"type":"message_create","message_create":{"target":{"recipient_id":"2688148651"},"message_data":{"text":"Please string: '{"event":{"type":"message_create","message_create":{"target":{"recipient_id":<TWITTER_DM_RECIPIENT>},"message_data":{"text":"Please
ignore this message."}}}}' ignore this message."}}}}'
headers: headers:
User-Agent: User-Agent:
- TwitterRubyGem/6.2.0 - TwitterRubyGem/7.0.0
Authorization: Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="89f9fb3a4a61083d5a43108631b561fb", - OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="53083a369b6ee30242406a76960ae2b6",
oauth_signature="9Kmi04TwHkzb1Qg1kc4UcFaAuzc%3D", oauth_signature_method="HMAC-SHA1", oauth_signature="rCryB%2Btxj%2Bvtp0P5IwTPymdd9rA%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585654994", oauth_token="REDACTED", oauth_timestamp="1625040244", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
oauth_version="1.0"
Connection: Connection:
- close - close
Content-Type: Content-Type:
@ -26,58 +25,53 @@ http_interactions:
code: 200 code: 200
message: OK message: OK
headers: 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:
- '313'
Content-Type:
- application/json;charset=utf-8
Date: Date:
- Tue, 31 Mar 2020 11:43:15 GMT - Wed, 30 Jun 2021 08:04:04 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 11:43:15 GMT
Pragma: Pragma:
- no-cache - no-cache
Server: Server:
- tsa_m - tsa_o
Set-Cookie:
- guest_id=v1%3A158565499496785911; Max-Age=63072000; Expires=Thu, 31 Mar 2022
11:43:15 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_ixvQSJNpQwDdhsQnnFjMbg=="; Max-Age=63072000; Expires=Thu,
31 Mar 2022 11:43:15 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Status: Status:
- 200 OK - 200 OK
Strict-Transport-Security: Expires:
- max-age=631138519 - Tue, 31 Mar 1981 05:00:00 GMT
Set-Cookie:
- guest_id=v1%3A162504024460802992; Max-Age=63072000; Expires=Fri, 30 Jun 2023
08:04:04 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_U7LtaaLFnMBIkC2YpoT/dQ=="; Max-Age=63072000; Expires=Fri,
30 Jun 2023 08:04:04 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type:
- application/json;charset=utf-8
Cache-Control:
- no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Last-Modified:
- Wed, 30 Jun 2021 08:04:04 GMT
X-Transaction:
- 708f49cab46ff366
Content-Length:
- '313'
X-Access-Level: X-Access-Level:
- read-write-directmessages - read-write-directmessages
X-Connection-Hash:
- 89771d0fa3e3da3329775711776b1a24
X-Content-Type-Options:
- nosniff
X-Frame-Options: X-Frame-Options:
- SAMEORIGIN - SAMEORIGIN
X-Response-Time:
- '215'
X-Transaction:
- 00e3834000e91bc3
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
X-Xss-Protection: X-Xss-Protection:
- '0' - '0'
Content-Disposition:
- attachment; filename=json.json
X-Content-Type-Options:
- nosniff
X-Twitter-Response-Tags:
- BouncerCompliant
Strict-Transport-Security:
- max-age=631138519
X-Connection-Hash:
- 1d616544d9ebcd87d8c8225b597043de2994ba32a52176afe63a7e39a4b36fd4
Connection:
- close
body: body:
encoding: UTF-8 encoding: UTF-8
string: '{"event":{"type":"message_create","id":"1244953398509617156","created_timestamp":"1585654994977","message_create":{"target":{"recipient_id":"2688148651"},"sender_id":"1205290247124217856","message_data":{"text":"Please string: '{"event":{"type":"message_create","id":"1410147108624142341","created_timestamp":"1625040244619","message_create":{"target":{"recipient_id":"<TWITTER_DM_RECIPIENT>"},"sender_id":"<TWITTER_USER_ID>","message_data":{"text":"Please
ignore this message.","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}}}}}' ignore this message.","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}}}}}'
http_version: recorded_at: Wed, 30 Jun 2021 08:04:04 GMT
recorded_at: Tue, 31 Mar 2020 11:43:15 GMT recorded_with: VCR 6.0.0
recorded_with: VCR 4.0.0

View file

@ -5,16 +5,15 @@ http_interactions:
uri: https://api.twitter.com/1.1/direct_messages/events/new.json uri: https://api.twitter.com/1.1/direct_messages/events/new.json
body: body:
encoding: UTF-8 encoding: UTF-8
string: '{"event":{"type":"message_create","message_create":{"target":{"recipient_id":"2688148651"},"message_data":{"text":"Please string: '{"event":{"type":"message_create","message_create":{"target":{"recipient_id":<TWITTER_DM_RECIPIENT>},"message_data":{"text":"Please
ignore this message."}}}}' ignore this message."}}}}'
headers: headers:
User-Agent: User-Agent:
- TwitterRubyGem/6.2.0 - TwitterRubyGem/7.0.0
Authorization: Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="89f9fb3a4a61083d5a43108631b561fb", - OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="d53ac1110b5991c6f13e46ec6c66b5b6",
oauth_signature="9Kmi04TwHkzb1Qg1kc4UcFaAuzc%3D", oauth_signature_method="HMAC-SHA1", oauth_signature="4l4w9Q00ibBHiHXAHeJqhQhgycQ%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585654994", oauth_token="REDACTED", oauth_timestamp="1625001656", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
oauth_version="1.0"
Connection: Connection:
- close - close
Content-Type: Content-Type:
@ -23,61 +22,56 @@ http_interactions:
- api.twitter.com - api.twitter.com
response: response:
status: status:
code: 200 code: 403
message: OK message: Forbidden
headers: 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:
- '313'
Content-Type:
- application/json;charset=utf-8
Date: Date:
- Tue, 31 Mar 2020 11:43:15 GMT - Tue, 29 Jun 2021 21:20:56 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 11:43:15 GMT
Pragma: Pragma:
- no-cache - no-cache
Server: Server:
- tsa_m - tsa_o
Set-Cookie:
- guest_id=v1%3A158565499496785911; Max-Age=63072000; Expires=Thu, 31 Mar 2022
11:43:15 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_ixvQSJNpQwDdhsQnnFjMbg=="; Max-Age=63072000; Expires=Thu,
31 Mar 2022 11:43:15 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Status: Status:
- 200 OK - 403 Forbidden
Strict-Transport-Security: Expires:
- max-age=631138519 - Tue, 31 Mar 1981 05:00:00 GMT
Set-Cookie:
- guest_id=v1%3A162500165664405069; Max-Age=63072000; Expires=Thu, 29 Jun 2023
21:20:56 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_/R/bBvLYe369R9bKkVtT0Q=="; Max-Age=63072000; Expires=Thu,
29 Jun 2023 21:20:56 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type:
- application/json;charset=utf-8
Cache-Control:
- no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Last-Modified:
- Tue, 29 Jun 2021 21:20:56 GMT
X-Transaction:
- e3ed294bc3b0da31
Content-Length:
- '76'
X-Access-Level: X-Access-Level:
- read-write-directmessages - read-write-directmessages
X-Connection-Hash:
- 89771d0fa3e3da3329775711776b1a24
X-Content-Type-Options:
- nosniff
X-Frame-Options: X-Frame-Options:
- SAMEORIGIN - SAMEORIGIN
X-Response-Time:
- '215'
X-Transaction:
- 00e3834000e91bc3
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
X-Xss-Protection: X-Xss-Protection:
- '0' - '0'
Content-Disposition:
- attachment; filename=json.json
X-Content-Type-Options:
- nosniff
X-Twitter-Response-Tags:
- BouncerCompliant
Strict-Transport-Security:
- max-age=631138519
X-Connection-Hash:
- b1a6e386025a844744ac567e0093bafe320dbbe4ebd7227f46a8951e0d7f4f19
Connection:
- close
body: body:
encoding: UTF-8 encoding: UTF-8
string: '{"event":{"type":"message_create","id":"1244953398509617156","created_timestamp":"1585654994977","message_create":{"target":{"recipient_id":"2688148651"},"sender_id":"1205290247124217856","message_data":{"text":"Please string: '{"errors":[{"code":349,"message":"You cannot send messages to this
ignore this message.","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}}}}}' user."}]}'
http_version: recorded_at: Tue, 29 Jun 2021 21:20:56 GMT
recorded_at: Tue, 31 Mar 2020 11:43:15 GMT recorded_with: VCR 6.0.0
recorded_with: VCR 4.0.0

View file

@ -5,16 +5,15 @@ http_interactions:
uri: https://api.twitter.com/1.1/direct_messages/events/new.json uri: https://api.twitter.com/1.1/direct_messages/events/new.json
body: body:
encoding: UTF-8 encoding: UTF-8
string: '{"event":{"type":"message_create","message_create":{"target":{"recipient_id":"2688148651"},"message_data":{"text":"Please string: '{"event":{"type":"message_create","message_create":{"target":{"recipient_id":<TWITTER_DM_RECIPIENT>},"message_data":{"text":"Please
ignore this message."}}}}' ignore this message."}}}}'
headers: headers:
User-Agent: User-Agent:
- TwitterRubyGem/6.2.0 - TwitterRubyGem/7.0.0
Authorization: Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="89f9fb3a4a61083d5a43108631b561fb", - OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="059956a1ece3b3a66c79a841a2b63373",
oauth_signature="9Kmi04TwHkzb1Qg1kc4UcFaAuzc%3D", oauth_signature_method="HMAC-SHA1", oauth_signature="ktziTsboTa%2BF8wvC%2BH1%2BSr%2FLCl4%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585654994", oauth_token="REDACTED", oauth_timestamp="1625040245", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
oauth_version="1.0"
Connection: Connection:
- close - close
Content-Type: Content-Type:
@ -26,58 +25,53 @@ http_interactions:
code: 200 code: 200
message: OK message: OK
headers: 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:
- '313'
Content-Type:
- application/json;charset=utf-8
Date: Date:
- Tue, 31 Mar 2020 11:43:15 GMT - Wed, 30 Jun 2021 08:04:05 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 11:43:15 GMT
Pragma: Pragma:
- no-cache - no-cache
Server: Server:
- tsa_m - tsa_o
Set-Cookie:
- guest_id=v1%3A158565499496785911; Max-Age=63072000; Expires=Thu, 31 Mar 2022
11:43:15 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_ixvQSJNpQwDdhsQnnFjMbg=="; Max-Age=63072000; Expires=Thu,
31 Mar 2022 11:43:15 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Status: Status:
- 200 OK - 200 OK
Strict-Transport-Security: Expires:
- max-age=631138519 - Tue, 31 Mar 1981 05:00:00 GMT
Set-Cookie:
- guest_id=v1%3A162504024541934708; Max-Age=63072000; Expires=Fri, 30 Jun 2023
08:04:05 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_Htfee3TSOnWMFrP/Xf/T/w=="; Max-Age=63072000; Expires=Fri,
30 Jun 2023 08:04:05 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type:
- application/json;charset=utf-8
Cache-Control:
- no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Last-Modified:
- Wed, 30 Jun 2021 08:04:05 GMT
X-Transaction:
- e3208fd407c4eed3
Content-Length:
- '313'
X-Access-Level: X-Access-Level:
- read-write-directmessages - read-write-directmessages
X-Connection-Hash:
- 89771d0fa3e3da3329775711776b1a24
X-Content-Type-Options:
- nosniff
X-Frame-Options: X-Frame-Options:
- SAMEORIGIN - SAMEORIGIN
X-Response-Time:
- '215'
X-Transaction:
- 00e3834000e91bc3
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
X-Xss-Protection: X-Xss-Protection:
- '0' - '0'
Content-Disposition:
- attachment; filename=json.json
X-Content-Type-Options:
- nosniff
X-Twitter-Response-Tags:
- BouncerCompliant
Strict-Transport-Security:
- max-age=631138519
X-Connection-Hash:
- 82d50f9badd633a8c1b3e0469fb921464cfdbc6a09f99332740f2b3e98b2f8d8
Connection:
- close
body: body:
encoding: UTF-8 encoding: UTF-8
string: '{"event":{"type":"message_create","id":"1244953398509617156","created_timestamp":"1585654994977","message_create":{"target":{"recipient_id":"2688148651"},"sender_id":"1205290247124217856","message_data":{"text":"Please string: '{"event":{"type":"message_create","id":"1410147112021528582","created_timestamp":"1625040245429","message_create":{"target":{"recipient_id":"<TWITTER_DM_RECIPIENT>"},"sender_id":"<TWITTER_USER_ID>","message_data":{"text":"Please
ignore this message.","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}}}}}' ignore this message.","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}}}}}'
http_version: recorded_at: Wed, 30 Jun 2021 08:04:05 GMT
recorded_at: Tue, 31 Mar 2020 11:43:15 GMT recorded_with: VCR 6.0.0
recorded_with: VCR 4.0.0

View file

@ -5,16 +5,15 @@ http_interactions:
uri: https://api.twitter.com/1.1/direct_messages/events/new.json uri: https://api.twitter.com/1.1/direct_messages/events/new.json
body: body:
encoding: UTF-8 encoding: UTF-8
string: '{"event":{"type":"message_create","message_create":{"target":{"recipient_id":"2688148651"},"message_data":{"text":"Please string: '{"event":{"type":"message_create","message_create":{"target":{"recipient_id":<TWITTER_DM_RECIPIENT>},"message_data":{"text":"Please
ignore this message."}}}}' ignore this message."}}}}'
headers: headers:
User-Agent: User-Agent:
- TwitterRubyGem/6.2.0 - TwitterRubyGem/7.0.0
Authorization: Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="89f9fb3a4a61083d5a43108631b561fb", - OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="38c9276a42d314eb2c6504a1585a56f2",
oauth_signature="9Kmi04TwHkzb1Qg1kc4UcFaAuzc%3D", oauth_signature_method="HMAC-SHA1", oauth_signature="%2Bqoynn5ly%2BM%2F8h39yYuZx6%2B1euY%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585654994", oauth_token="REDACTED", oauth_timestamp="1625039834", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
oauth_version="1.0"
Connection: Connection:
- close - close
Content-Type: Content-Type:
@ -26,58 +25,53 @@ http_interactions:
code: 200 code: 200
message: OK message: OK
headers: 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:
- '313'
Content-Type:
- application/json;charset=utf-8
Date: Date:
- Tue, 31 Mar 2020 11:43:15 GMT - Wed, 30 Jun 2021 07:57:14 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 11:43:15 GMT
Pragma: Pragma:
- no-cache - no-cache
Server: Server:
- tsa_m - tsa_o
Set-Cookie:
- guest_id=v1%3A158565499496785911; Max-Age=63072000; Expires=Thu, 31 Mar 2022
11:43:15 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_ixvQSJNpQwDdhsQnnFjMbg=="; Max-Age=63072000; Expires=Thu,
31 Mar 2022 11:43:15 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Status: Status:
- 200 OK - 200 OK
Strict-Transport-Security: Expires:
- max-age=631138519 - Tue, 31 Mar 1981 05:00:00 GMT
Set-Cookie:
- guest_id=v1%3A162503983462759570; Max-Age=63072000; Expires=Fri, 30 Jun 2023
07:57:14 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_oYMvoU13+VfVDQAVawvLiQ=="; Max-Age=63072000; Expires=Fri,
30 Jun 2023 07:57:14 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type:
- application/json;charset=utf-8
Cache-Control:
- no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Last-Modified:
- Wed, 30 Jun 2021 07:57:14 GMT
X-Transaction:
- '0979de2321a1e590'
Content-Length:
- '313'
X-Access-Level: X-Access-Level:
- read-write-directmessages - read-write-directmessages
X-Connection-Hash:
- 89771d0fa3e3da3329775711776b1a24
X-Content-Type-Options:
- nosniff
X-Frame-Options: X-Frame-Options:
- SAMEORIGIN - SAMEORIGIN
X-Response-Time:
- '215'
X-Transaction:
- 00e3834000e91bc3
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
X-Xss-Protection: X-Xss-Protection:
- '0' - '0'
Content-Disposition:
- attachment; filename=json.json
X-Content-Type-Options:
- nosniff
X-Twitter-Response-Tags:
- BouncerCompliant
Strict-Transport-Security:
- max-age=631138519
X-Connection-Hash:
- 87f1635ceda56488ee072f5693ae9d8bd50ae5381b4a4cd81f9febfda6d6314d
Connection:
- close
body: body:
encoding: UTF-8 encoding: UTF-8
string: '{"event":{"type":"message_create","id":"1244953398509617156","created_timestamp":"1585654994977","message_create":{"target":{"recipient_id":"2688148651"},"sender_id":"1205290247124217856","message_data":{"text":"Please string: '{"event":{"type":"message_create","id":"1410145389026676741","created_timestamp":"1625039834635","message_create":{"target":{"recipient_id":"<TWITTER_DM_RECIPIENT>"},"sender_id":"<TWITTER_USER_ID>","message_data":{"text":"Please
ignore this message.","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}}}}}' ignore this message.","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}}}}}'
http_version: recorded_at: Wed, 30 Jun 2021 07:57:14 GMT
recorded_at: Tue, 31 Mar 2020 11:43:15 GMT recorded_with: VCR 6.0.0
recorded_with: VCR 4.0.0

View file

@ -0,0 +1,80 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=Saepe+magni+rerum+molestiae.
headers:
User-Agent:
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="db9969602d9ead08ffd70041622b822b",
oauth_signature="XoGhQ5E3%2FyoiWIY1slQ2X9CdzXQ%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1625040242", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
Host:
- api.twitter.com
response:
status:
code: 200
message: OK
headers:
Date:
- Wed, 30 Jun 2021 08:04:02 GMT
Pragma:
- no-cache
Server:
- tsa_o
Status:
- 200 OK
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Set-Cookie:
- guest_id=v1%3A162504024210520203; Max-Age=63072000; Expires=Fri, 30 Jun 2023
08:04:02 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_chC9c2CfsotXWg1qZoZRUA=="; Max-Age=63072000; Expires=Fri,
30 Jun 2023 08:04:02 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type:
- application/json;charset=utf-8
Cache-Control:
- no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Last-Modified:
- Wed, 30 Jun 2021 08:04:02 GMT
X-Transaction:
- c05c8120cb1398eb
Content-Length:
- '1971'
X-Access-Level:
- read-write-directmessages
X-Frame-Options:
- SAMEORIGIN
X-Xss-Protection:
- '0'
Content-Disposition:
- attachment; filename=json.json
X-Content-Type-Options:
- nosniff
X-Twitter-Response-Tags:
- BouncerCompliant
Strict-Transport-Security:
- max-age=631138519
X-Connection-Hash:
- f16139b08e51a822e2938d48e72974006b576ce70a9b368617a87dad89a12a0d
Connection:
- close
body:
encoding: UTF-8
string: '{"created_at":"Wed Jun 30 08:04:02 +0000 2021","id":1410147098113282048,"id_str":"1410147098113282048","text":"Saepe
magni rerum molestiae.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\" rel=\"nofollow\"\u003eZammad Integration Test\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":<TWITTER_USER_ID>,"id_str":"<TWITTER_USER_ID>","name":"Zammad
Integration Test Account","screen_name":"ZammadTesting","location":"","description":"Zammad
Integration Test Account","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":0,"listed_count":0,"created_at":"Fri
Jun 25 07:21:40 +0000 2021","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":128,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1408343046731845632\/K56uhLP2_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1408343046731845632\/K56uhLP2_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":true,"default_profile":true,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none","withheld_in_countries":[]},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":0,"favorited":false,"retweeted":false,"lang":"und"}'
recorded_at: Wed, 30 Jun 2021 08:04:02 GMT
recorded_with: VCR 6.0.0

View file

@ -0,0 +1,80 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=Voluptas+assumenda+repellat+optio.
headers:
User-Agent:
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="6f1b0974d52c7dff4ada82cfd71d417f",
oauth_signature="eaBevjZP0KW0L19TZEOqudVUJ3A%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1625040241", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
Host:
- api.twitter.com
response:
status:
code: 200
message: OK
headers:
Date:
- Wed, 30 Jun 2021 08:04:01 GMT
Pragma:
- no-cache
Server:
- tsa_o
Status:
- 200 OK
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Set-Cookie:
- guest_id=v1%3A162504024151908399; Max-Age=63072000; Expires=Fri, 30 Jun 2023
08:04:01 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_QVUh69nRFJYUTfXAhSUs5g=="; Max-Age=63072000; Expires=Fri,
30 Jun 2023 08:04:01 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type:
- application/json;charset=utf-8
Cache-Control:
- no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Last-Modified:
- Wed, 30 Jun 2021 08:04:01 GMT
X-Transaction:
- 55a8df94767c52b2
Content-Length:
- '1976'
X-Access-Level:
- read-write-directmessages
X-Frame-Options:
- SAMEORIGIN
X-Xss-Protection:
- '0'
Content-Disposition:
- attachment; filename=json.json
X-Content-Type-Options:
- nosniff
X-Twitter-Response-Tags:
- BouncerCompliant
Strict-Transport-Security:
- max-age=631138519
X-Connection-Hash:
- 9b9ae44edcf70cf85e5c009ec36793d295653fdd01a2a05a833ce3e1ce315c6b
Connection:
- close
body:
encoding: UTF-8
string: '{"created_at":"Wed Jun 30 08:04:01 +0000 2021","id":1410147095659565058,"id_str":"1410147095659565058","text":"Voluptas
assumenda repellat optio.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\" rel=\"nofollow\"\u003eZammad Integration Test\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":<TWITTER_USER_ID>,"id_str":"<TWITTER_USER_ID>","name":"Zammad
Integration Test Account","screen_name":"ZammadTesting","location":"","description":"Zammad
Integration Test Account","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":0,"listed_count":0,"created_at":"Fri
Jun 25 07:21:40 +0000 2021","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":127,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1408343046731845632\/K56uhLP2_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1408343046731845632\/K56uhLP2_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":true,"default_profile":true,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none","withheld_in_countries":[]},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":0,"favorited":false,"retweeted":false,"lang":"ca"}'
recorded_at: Wed, 30 Jun 2021 08:04:01 GMT
recorded_with: VCR 6.0.0

View file

@ -0,0 +1,80 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=Necessitatibus+expedita+unde+laborum.
headers:
User-Agent:
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="6d2b091bec240c588320b4f98630a8e5",
oauth_signature="wfUzhPeD8b7B4NTnF1zq4WgJqQw%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1625040243", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
Host:
- api.twitter.com
response:
status:
code: 200
message: OK
headers:
Date:
- Wed, 30 Jun 2021 08:04:03 GMT
Pragma:
- no-cache
Server:
- tsa_o
Status:
- 200 OK
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Set-Cookie:
- guest_id=v1%3A162504024326511512; Max-Age=63072000; Expires=Fri, 30 Jun 2023
08:04:03 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_92BrbDMqMJKhLIdJdokrvw=="; Max-Age=63072000; Expires=Fri,
30 Jun 2023 08:04:03 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type:
- application/json;charset=utf-8
Cache-Control:
- no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Last-Modified:
- Wed, 30 Jun 2021 08:04:03 GMT
X-Transaction:
- ea868c467b3c2eaa
Content-Length:
- '1979'
X-Access-Level:
- read-write-directmessages
X-Frame-Options:
- SAMEORIGIN
X-Xss-Protection:
- '0'
Content-Disposition:
- attachment; filename=json.json
X-Content-Type-Options:
- nosniff
X-Twitter-Response-Tags:
- BouncerCompliant
Strict-Transport-Security:
- max-age=631138519
X-Connection-Hash:
- b6d9f7655334bfddbcf23ea4d0cb0d345faa94ec5db7a07ed7259cc9d6375129
Connection:
- close
body:
encoding: UTF-8
string: '{"created_at":"Wed Jun 30 08:04:03 +0000 2021","id":1410147102978682884,"id_str":"1410147102978682884","text":"Necessitatibus
expedita unde laborum.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\" rel=\"nofollow\"\u003eZammad Integration Test\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":<TWITTER_USER_ID>,"id_str":"<TWITTER_USER_ID>","name":"Zammad
Integration Test Account","screen_name":"ZammadTesting","location":"","description":"Zammad
Integration Test Account","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":0,"listed_count":0,"created_at":"Fri
Jun 25 07:21:40 +0000 2021","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":129,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1408343046731845632\/K56uhLP2_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1408343046731845632\/K56uhLP2_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":true,"default_profile":true,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none","withheld_in_countries":[]},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":0,"favorited":false,"retweeted":false,"lang":"ca"}'
recorded_at: Wed, 30 Jun 2021 08:04:03 GMT
recorded_with: VCR 6.0.0

View file

@ -0,0 +1,80 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=Magni+perspiciatis+rerum+amet.
headers:
User-Agent:
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="ac705ce838abb7ee9baae0be97a3b7cf",
oauth_signature="o%2BRO1mAQoTMxZ0SnZVjEOYPbEeI%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1625040242", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
Host:
- api.twitter.com
response:
status:
code: 200
message: OK
headers:
Date:
- Wed, 30 Jun 2021 08:04:02 GMT
Pragma:
- no-cache
Server:
- tsa_o
Status:
- 200 OK
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Set-Cookie:
- guest_id=v1%3A162504024264913288; Max-Age=63072000; Expires=Fri, 30 Jun 2023
08:04:02 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_owB1Shm4zVfVndkRFNqK5g=="; Max-Age=63072000; Expires=Fri,
30 Jun 2023 08:04:02 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type:
- application/json;charset=utf-8
Cache-Control:
- no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Last-Modified:
- Wed, 30 Jun 2021 08:04:02 GMT
X-Transaction:
- 9e41d355afd59e56
Content-Length:
- '1972'
X-Access-Level:
- read-write-directmessages
X-Frame-Options:
- SAMEORIGIN
X-Xss-Protection:
- '0'
Content-Disposition:
- attachment; filename=json.json
X-Content-Type-Options:
- nosniff
X-Twitter-Response-Tags:
- BouncerCompliant
Strict-Transport-Security:
- max-age=631138519
X-Connection-Hash:
- 04523b0e54204fa9028cce2d51f355c21adb9b466a7b83c02fe5385421690eed
Connection:
- close
body:
encoding: UTF-8
string: '{"created_at":"Wed Jun 30 08:04:02 +0000 2021","id":1410147100403417088,"id_str":"1410147100403417088","text":"Magni
perspiciatis rerum amet.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\" rel=\"nofollow\"\u003eZammad Integration Test\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":<TWITTER_USER_ID>,"id_str":"<TWITTER_USER_ID>","name":"Zammad
Integration Test Account","screen_name":"ZammadTesting","location":"","description":"Zammad
Integration Test Account","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":0,"listed_count":0,"created_at":"Fri
Jun 25 07:21:40 +0000 2021","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":129,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1408343046731845632\/K56uhLP2_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1408343046731845632\/K56uhLP2_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":true,"default_profile":true,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none","withheld_in_countries":[]},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":0,"favorited":false,"retweeted":false,"lang":"ca"}'
recorded_at: Wed, 30 Jun 2021 08:04:02 GMT
recorded_with: VCR 6.0.0

View file

@ -0,0 +1,81 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=%40zammadtesting+Don%E2%80%99t+mind+me%2C+just+testing+the+API
headers:
User-Agent:
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="f77ac505b61754bfbde7a42892d72f74",
oauth_signature="n5IyO1qHpjsXPTwt8lha%2BFgN3vM%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1625040243", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
Host:
- api.twitter.com
response:
status:
code: 200
message: OK
headers:
Date:
- Wed, 30 Jun 2021 08:04:03 GMT
Pragma:
- no-cache
Server:
- tsa_o
Status:
- 200 OK
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Set-Cookie:
- guest_id=v1%3A162504024379781362; Max-Age=63072000; Expires=Fri, 30 Jun 2023
08:04:03 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_G6r0btkeauSX2rnAtARLog=="; Max-Age=63072000; Expires=Fri,
30 Jun 2023 08:04:03 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type:
- application/json;charset=utf-8
Cache-Control:
- no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Last-Modified:
- Wed, 30 Jun 2021 08:04:03 GMT
X-Transaction:
- 7b7cb7bcda114d15
Content-Length:
- '2185'
X-Access-Level:
- read-write-directmessages
X-Frame-Options:
- SAMEORIGIN
X-Xss-Protection:
- '0'
Content-Disposition:
- attachment; filename=json.json
X-Content-Type-Options:
- nosniff
X-Twitter-Response-Tags:
- BouncerCompliant
Strict-Transport-Security:
- max-age=631138519
X-Connection-Hash:
- d439bbae23d92067b858b87ee3feba1ce08e9d4a6b2be570665475684729e051
Connection:
- close
body:
encoding: UTF-8
string: '{"created_at":"Wed Jun 30 08:04:03 +0000 2021","id":1410147105210081287,"id_str":"1410147105210081287","text":"@zammadtesting
Don\u2019t mind me, just testing the API","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"ZammadTesting","name":"Zammad
Integration Test Account","id":<TWITTER_USER_ID>,"id_str":"<TWITTER_USER_ID>","indices":[0,14]}],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\" rel=\"nofollow\"\u003eZammad Integration Test\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":<TWITTER_USER_ID>,"in_reply_to_user_id_str":"<TWITTER_USER_ID>","in_reply_to_screen_name":"ZammadTesting","user":{"id":<TWITTER_USER_ID>,"id_str":"<TWITTER_USER_ID>","name":"Zammad
Integration Test Account","screen_name":"ZammadTesting","location":"","description":"Zammad
Integration Test Account","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":0,"listed_count":0,"created_at":"Fri
Jun 25 07:21:40 +0000 2021","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":131,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1408343046731845632\/K56uhLP2_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1408343046731845632\/K56uhLP2_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":true,"default_profile":true,"default_profile_image":false,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none","withheld_in_countries":[]},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":0,"favorited":false,"retweeted":false,"lang":"en"}'
recorded_at: Wed, 30 Jun 2021 08:04:03 GMT
recorded_with: VCR 6.0.0

View file

@ -1,84 +0,0 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=Quos+nulla+asperiores+ut.
headers:
User-Agent:
- TwitterRubyGem/6.2.0
Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="00732df7fa44269cd335acf38d6abe42",
oauth_signature="Qna858PdKKMrFjGZEYdm8oU8g6k%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585651172", oauth_token="REDACTED",
oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
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:
- '1882'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 31 Mar 2020 10:39:32 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 10:39:32 GMT
Pragma:
- no-cache
Server:
- tsa_m
Set-Cookie:
- guest_id=v1%3A158565117286241661; Max-Age=63072000; Expires=Thu, 31 Mar 2022
10:39:32 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_VZPA3OsrdQH41ZancPvXAg=="; Max-Age=63072000; Expires=Thu,
31 Mar 2022 10:39:32 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Status:
- 200 OK
Strict-Transport-Security:
- max-age=631138519
X-Access-Level:
- read-write-directmessages
X-Connection-Hash:
- 2d2380f4b7cda58563ac424cc1897507
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-Response-Time:
- '175'
X-Transaction:
- 0024cb7500e82636
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
X-Xss-Protection:
- '0'
body:
encoding: UTF-8
string: '{"created_at":"Tue Mar 31 10:39:32 +0000 2020","id":1244937367435108360,"id_str":"1244937367435108360","text":"Quos
nulla asperiores ut.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\/\" rel=\"nofollow\"\u003ezammad\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":1205290247124217856,"id_str":"1205290247124217856","name":"pennbrooke","screen_name":"pennbrooke1","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":1,"listed_count":0,"created_at":"Fri
Dec 13 00:56:10 +0000 2019","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":21,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":false,"default_profile":true,"default_profile_image":true,"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,"lang":"ca"}'
http_version:
recorded_at: Tue, 31 Mar 2020 10:39:33 GMT
recorded_with: VCR 4.0.0

View file

@ -1,84 +0,0 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=Quos+nulla+asperiores+ut.
headers:
User-Agent:
- TwitterRubyGem/6.2.0
Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="00732df7fa44269cd335acf38d6abe42",
oauth_signature="Qna858PdKKMrFjGZEYdm8oU8g6k%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585651172", oauth_token="REDACTED",
oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
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:
- '1882'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 31 Mar 2020 10:39:32 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 10:39:32 GMT
Pragma:
- no-cache
Server:
- tsa_m
Set-Cookie:
- guest_id=v1%3A158565117286241661; Max-Age=63072000; Expires=Thu, 31 Mar 2022
10:39:32 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_VZPA3OsrdQH41ZancPvXAg=="; Max-Age=63072000; Expires=Thu,
31 Mar 2022 10:39:32 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Status:
- 200 OK
Strict-Transport-Security:
- max-age=631138519
X-Access-Level:
- read-write-directmessages
X-Connection-Hash:
- 2d2380f4b7cda58563ac424cc1897507
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-Response-Time:
- '175'
X-Transaction:
- 0024cb7500e82636
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
X-Xss-Protection:
- '0'
body:
encoding: UTF-8
string: '{"created_at":"Tue Mar 31 10:39:32 +0000 2020","id":1244937367435108360,"id_str":"1244937367435108360","text":"Quos
nulla asperiores ut.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\/\" rel=\"nofollow\"\u003ezammad\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":1205290247124217856,"id_str":"1205290247124217856","name":"pennbrooke","screen_name":"pennbrooke1","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":1,"listed_count":0,"created_at":"Fri
Dec 13 00:56:10 +0000 2019","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":21,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":false,"default_profile":true,"default_profile_image":true,"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,"lang":"ca"}'
http_version:
recorded_at: Tue, 31 Mar 2020 10:39:33 GMT
recorded_with: VCR 4.0.0

View file

@ -1,84 +0,0 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=Nobis+consequatur+et+deleniti.
headers:
User-Agent:
- TwitterRubyGem/6.2.0
Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="ca8e21d95937e7af2b7e1e758342bd3d",
oauth_signature="gGxlgbtogX4cd4VS5Dlso8XPNpg%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585653843", oauth_token="REDACTED",
oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
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:
- '1887'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 31 Mar 2020 11:24:04 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 11:24:04 GMT
Pragma:
- no-cache
Server:
- tsa_m
Set-Cookie:
- guest_id=v1%3A158565384450024079; Max-Age=63072000; Expires=Thu, 31 Mar 2022
11:24:04 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_aMVHuwyntSCutxT7HYN0tg=="; Max-Age=63072000; Expires=Thu,
31 Mar 2022 11:24:04 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Status:
- 200 OK
Strict-Transport-Security:
- max-age=631138519
X-Access-Level:
- read-write-directmessages
X-Connection-Hash:
- 457eca514c649e33a27f1274228e3968
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-Response-Time:
- '151'
X-Transaction:
- '00843cce00439a0a'
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
X-Xss-Protection:
- '0'
body:
encoding: UTF-8
string: '{"created_at":"Tue Mar 31 11:24:04 +0000 2020","id":1244948573092896770,"id_str":"1244948573092896770","text":"Nobis
consequatur et deleniti.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\/\" rel=\"nofollow\"\u003ezammad\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":1205290247124217856,"id_str":"1205290247124217856","name":"pennbrooke","screen_name":"pennbrooke1","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":1,"listed_count":0,"created_at":"Fri
Dec 13 00:56:10 +0000 2019","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":23,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":false,"default_profile":true,"default_profile_image":true,"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,"lang":"ca"}'
http_version:
recorded_at: Tue, 31 Mar 2020 11:24:04 GMT
recorded_with: VCR 4.0.0

View file

@ -1,84 +0,0 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=Quos+nulla+asperiores+ut.
headers:
User-Agent:
- TwitterRubyGem/6.2.0
Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="00732df7fa44269cd335acf38d6abe42",
oauth_signature="Qna858PdKKMrFjGZEYdm8oU8g6k%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585651172", oauth_token="REDACTED",
oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
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:
- '1882'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 31 Mar 2020 10:39:32 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 10:39:32 GMT
Pragma:
- no-cache
Server:
- tsa_m
Set-Cookie:
- guest_id=v1%3A158565117286241661; Max-Age=63072000; Expires=Thu, 31 Mar 2022
10:39:32 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_VZPA3OsrdQH41ZancPvXAg=="; Max-Age=63072000; Expires=Thu,
31 Mar 2022 10:39:32 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Status:
- 200 OK
Strict-Transport-Security:
- max-age=631138519
X-Access-Level:
- read-write-directmessages
X-Connection-Hash:
- 2d2380f4b7cda58563ac424cc1897507
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-Response-Time:
- '175'
X-Transaction:
- 0024cb7500e82636
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
X-Xss-Protection:
- '0'
body:
encoding: UTF-8
string: '{"created_at":"Tue Mar 31 10:39:32 +0000 2020","id":1244937367435108360,"id_str":"1244937367435108360","text":"Quos
nulla asperiores ut.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\/\" rel=\"nofollow\"\u003ezammad\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":1205290247124217856,"id_str":"1205290247124217856","name":"pennbrooke","screen_name":"pennbrooke1","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":1,"listed_count":0,"created_at":"Fri
Dec 13 00:56:10 +0000 2019","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":21,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":false,"default_profile":true,"default_profile_image":true,"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,"lang":"ca"}'
http_version:
recorded_at: Tue, 31 Mar 2020 10:39:33 GMT
recorded_with: VCR 4.0.0

View file

@ -1,84 +0,0 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=Quos+nulla+asperiores+ut.
headers:
User-Agent:
- TwitterRubyGem/6.2.0
Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="00732df7fa44269cd335acf38d6abe42",
oauth_signature="Qna858PdKKMrFjGZEYdm8oU8g6k%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585651172", oauth_token="REDACTED",
oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
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:
- '1882'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 31 Mar 2020 10:39:32 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 10:39:32 GMT
Pragma:
- no-cache
Server:
- tsa_m
Set-Cookie:
- guest_id=v1%3A158565117286241661; Max-Age=63072000; Expires=Thu, 31 Mar 2022
10:39:32 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_VZPA3OsrdQH41ZancPvXAg=="; Max-Age=63072000; Expires=Thu,
31 Mar 2022 10:39:32 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Status:
- 200 OK
Strict-Transport-Security:
- max-age=631138519
X-Access-Level:
- read-write-directmessages
X-Connection-Hash:
- 2d2380f4b7cda58563ac424cc1897507
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-Response-Time:
- '175'
X-Transaction:
- 0024cb7500e82636
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
X-Xss-Protection:
- '0'
body:
encoding: UTF-8
string: '{"created_at":"Tue Mar 31 10:39:32 +0000 2020","id":1244937367435108360,"id_str":"1244937367435108360","text":"Quos
nulla asperiores ut.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\/\" rel=\"nofollow\"\u003ezammad\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":1205290247124217856,"id_str":"1205290247124217856","name":"pennbrooke","screen_name":"pennbrooke1","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":1,"listed_count":0,"created_at":"Fri
Dec 13 00:56:10 +0000 2019","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":21,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":false,"default_profile":true,"default_profile_image":true,"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,"lang":"ca"}'
http_version:
recorded_at: Tue, 31 Mar 2020 10:39:33 GMT
recorded_with: VCR 4.0.0

View file

@ -1,85 +0,0 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=%40twitter+%40twitterlive+Don%E2%80%99t+mind+me%2C+just+testing+the+API
headers:
User-Agent:
- TwitterRubyGem/6.2.0
Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="c2b2e0a690db19f551b76a53addd61dc",
oauth_signature="%2BldEo0cWQxcCIfGQcVATbUTcKiY%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585652887", oauth_token="REDACTED",
oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
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:
- '2123'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 31 Mar 2020 11:08:08 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 11:08:08 GMT
Pragma:
- no-cache
Server:
- tsa_m
Set-Cookie:
- guest_id=v1%3A158565288818297882; Max-Age=63072000; Expires=Thu, 31 Mar 2022
11:08:08 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_gHl+MuEHs7qIWs/N81Nw5g=="; Max-Age=63072000; Expires=Thu,
31 Mar 2022 11:08:08 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Status:
- 200 OK
Strict-Transport-Security:
- max-age=631138519
X-Access-Level:
- read-write-directmessages
X-Connection-Hash:
- b9ab8422ca7a75076ed48a672f8bd60f
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-Response-Time:
- '165'
X-Transaction:
- 0044032300c7ecc7
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
X-Xss-Protection:
- '0'
body:
encoding: UTF-8
string: '{"created_at":"Tue Mar 31 11:08:08 +0000 2020","id":1244944562004447232,"id_str":"1244944562004447232","text":"@twitter
@twitterlive Don\u2019t mind me, just testing the API","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[{"screen_name":"Twitter","name":"Twitter","id":783214,"id_str":"783214","indices":[0,8]},{"screen_name":"TwitterLive","name":"Twitter
Live","id":130649891,"id_str":"130649891","indices":[9,21]}],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\/\" rel=\"nofollow\"\u003ezammad\u003c\/a\u003e","in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":783214,"in_reply_to_user_id_str":"783214","in_reply_to_screen_name":"Twitter","user":{"id":1205290247124217856,"id_str":"1205290247124217856","name":"pennbrooke","screen_name":"pennbrooke1","location":"","description":"","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":1,"listed_count":0,"created_at":"Fri
Dec 13 00:56:10 +0000 2019","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":22,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":false,"default_profile":true,"default_profile_image":true,"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,"lang":"en"}'
http_version:
recorded_at: Tue, 31 Mar 2020 11:08:08 GMT
recorded_with: VCR 4.0.0

View file

@ -0,0 +1,77 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/direct_messages/events/new.json
body:
encoding: UTF-8
string: '{"event":{"type":"message_create","message_create":{"target":{"recipient_id":<TWITTER_DM_RECIPIENT>},"message_data":{"text":"In
adipisci exercitationem perspiciatis."}}}}'
headers:
User-Agent:
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="73af861d66e768fe2d655cb7e72e367c",
oauth_signature="O%2BrhVsfqU8qaDv8oCI1%2Bc43O5IE%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1624984534", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
Connection:
- close
Content-Type:
- application/json; charset=UTF-8
Host:
- api.twitter.com
response:
status:
code: 200
message: OK
headers:
Date:
- Tue, 29 Jun 2021 16:35:34 GMT
Pragma:
- no-cache
Server:
- tsa_o
Status:
- 200 OK
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Set-Cookie:
- guest_id=v1%3A162498453485287313; Max-Age=63072000; Expires=Thu, 29 Jun 2023
16:35:34 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_zGYIbSeAuN9IcZF4F9ge5w=="; Max-Age=63072000; Expires=Thu,
29 Jun 2023 16:35:34 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type:
- application/json;charset=utf-8
Cache-Control:
- no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Last-Modified:
- Tue, 29 Jun 2021 16:35:34 GMT
X-Transaction:
- 3ba048998becb8da
Content-Length:
- '326'
X-Access-Level:
- read-write-directmessages
X-Frame-Options:
- SAMEORIGIN
X-Xss-Protection:
- '0'
Content-Disposition:
- attachment; filename=json.json
X-Content-Type-Options:
- nosniff
X-Twitter-Response-Tags:
- BouncerCompliant
Strict-Transport-Security:
- max-age=631138519
X-Connection-Hash:
- 18817f96513cf3b4958953156d36ce82745079a88415a3609d8e70be27f3e89c
Connection:
- close
body:
encoding: UTF-8
string: '{"event":{"type":"message_create","id":"1409913444971782150","created_timestamp":"1624984534863","message_create":{"target":{"recipient_id":"<TWITTER_DM_RECIPIENT>"},"sender_id":"<TWITTER_USER_ID>","message_data":{"text":"In
adipisci exercitationem perspiciatis.","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}}}}}'
recorded_at: Tue, 29 Jun 2021 16:35:35 GMT
recorded_with: VCR 6.0.0

View file

@ -0,0 +1,161 @@
---
http_interactions:
- request:
method: post
uri: https://api.twitter.com/1.1/statuses/update.json
body:
encoding: UTF-8
string: in_reply_to_status_id&status=foo+%EF%BC%8A+bar
headers:
User-Agent:
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="6747389a248f680a7631a27227ed2b59",
oauth_signature="4qex9kNATP0zpmYZ%2FII9zK5y7qI%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1624609540", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
Connection:
- close
Content-Type:
- application/x-www-form-urlencoded
Host:
- api.twitter.com
response:
status:
code: 403
message: Forbidden
headers:
Date:
- Fri, 25 Jun 2021 08:25:40 GMT
Pragma:
- no-cache
Server:
- tsa_o
Status:
- 403 Forbidden
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Set-Cookie:
- guest_id=v1%3A162460954028999985; Max-Age=63072000; Expires=Sun, 25 Jun 2023
08:25:40 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_oeJ/LzvDFYl770c2yd5/2Q=="; Max-Age=63072000; Expires=Sun,
25 Jun 2023 08:25:40 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type:
- application/json;charset=utf-8
Cache-Control:
- no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Last-Modified:
- Fri, 25 Jun 2021 08:25:40 GMT
X-Transaction:
- 3d3b3cb53cc1d2c6
Content-Length:
- '60'
X-Access-Level:
- read-write-directmessages
X-Frame-Options:
- SAMEORIGIN
X-Xss-Protection:
- '0'
Content-Disposition:
- attachment; filename=json.json
X-Content-Type-Options:
- nosniff
X-Twitter-Response-Tags:
- BouncerCompliant
Strict-Transport-Security:
- max-age=631138519
X-Connection-Hash:
- bc552ee394dd8af2a62fb08c68c30cb4353e05a857443b017d1a769991bad7d8
Connection:
- close
body:
encoding: UTF-8
string: '{"errors":[{"code":187,"message":"Status is a duplicate."}]}'
recorded_at: Fri, 25 Jun 2021 08:25:40 GMT
- request:
method: get
uri: https://api.twitter.com/1.1/statuses/user_timeline.json?count=1
body:
encoding: UTF-8
string: ''
headers:
User-Agent:
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="958bd506f769b865b166a3e829c9a4da",
oauth_signature="r8LCO8HHujDiOIc1ogb3YAhD34M%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1624609540", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
Connection:
- close
Host:
- api.twitter.com
response:
status:
code: 200
message: OK
headers:
Date:
- Fri, 25 Jun 2021 08:25:40 GMT
Pragma:
- no-cache
Server:
- tsa_o
Status:
- 200 OK
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Set-Cookie:
- guest_id=v1%3A162460954049230142; Max-Age=63072000; Expires=Sun, 25 Jun 2023
08:25:40 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
- lang=en; Path=/
- personalization_id="v1_9g6No5EunMQ6o37MZ7NtqQ=="; Max-Age=63072000; Expires=Sun,
25 Jun 2023 08:25:40 GMT; Path=/; Domain=.twitter.com; Secure; SameSite=None
Content-Type:
- application/json;charset=utf-8
Cache-Control:
- no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Last-Modified:
- Fri, 25 Jun 2021 08:25:40 GMT
X-Transaction:
- 72ea9ef95267a1fb
Content-Length:
- '1945'
X-Access-Level:
- read-write-directmessages
X-Frame-Options:
- SAMEORIGIN
X-Xss-Protection:
- '0'
X-Rate-Limit-Limit:
- '900'
X-Rate-Limit-Reset:
- '1624609878'
Content-Disposition:
- attachment; filename=json.json
X-App-Rate-Limit-Limit:
- '100000'
X-App-Rate-Limit-Reset:
- '1624695378'
X-Content-Type-Options:
- nosniff
X-Rate-Limit-Remaining:
- '897'
X-Twitter-Response-Tags:
- BouncerCompliant
Strict-Transport-Security:
- max-age=631138519
X-App-Rate-Limit-Remaining:
- '99997'
X-Connection-Hash:
- 53dd0153d68cb91522e2aadf22caf12a9e6e2c914d61f748e05b75c147266d9f
Connection:
- close
body:
encoding: UTF-8
string: '[{"created_at":"Fri Jun 25 08:25:39 +0000 2021","id":1408340600848629760,"id_str":"1408340600848629760","text":"Est
non rem consequatur.","truncated":false,"entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]},"source":"\u003ca
href=\"https:\/\/zammad.com\" rel=\"nofollow\"\u003eZammad Integration Test\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":1408314039470538752,"id_str":"1408314039470538752","name":"Zammad","screen_name":"ZammadTesting","location":"","description":"Zammad
Integration Test Account","url":null,"entities":{"description":{"urls":[]}},"protected":false,"followers_count":0,"friends_count":0,"listed_count":0,"created_at":"Fri
Jun 25 07:21:40 +0000 2021","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":35,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"F5F8FA","profile_background_image_url":null,"profile_background_image_url_https":null,"profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_normal.png","profile_link_color":"1DA1F2","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":true,"default_profile":true,"default_profile_image":true,"following":false,"follow_request_sent":false,"notifications":false,"translator_type":"none","withheld_in_countries":[]},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":0,"favorited":false,"retweeted":false,"lang":"en"}]'
recorded_at: Fri, 25 Jun 2021 08:25:40 GMT
recorded_with: VCR 6.0.0

Some files were not shown because too many files have changed in this diff Show more