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
require:
- rubocop-faker
- rubocop-performance
- rubocop-rails
- rubocop-rspec

View file

@ -70,7 +70,7 @@ gem 'execjs'
# Instead, use an external node.js binary.
group :mini_racer, optional: true do
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
# authentication - provider
@ -95,7 +95,8 @@ gem 'omniauth-weibo-oauth2'
gem 'gmail_xoauth'
gem 'koala'
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
gem 'htmlentities'
@ -190,6 +191,7 @@ group :development, :test do
gem 'coffeelint'
gem 'pre-commit'
gem 'rubocop'
gem 'rubocop-faker'
gem 'rubocop-performance'
gem 'rubocop-rails'
gem 'rubocop-rspec'

View file

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

View file

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

View file

@ -81,11 +81,11 @@ store new device for user if device not already known
end
# generate device name
if browser[:name] == 'Generic Browser'
if browser[:name] == 'Unknown Browser'
browser[:name] = user_agent
end
name = ''
if browser[:plattform].present? && browser[:plattform] != 'Other'
if browser[:plattform].present? && browser[:plattform] != 'UnknownPlatform'
name = browser[:plattform]
end
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'))
rescue => e
case e.message
when '401 Authorization Required'
when '401 Unauthorized'
raise "#{e.message} (Invalid credentials may be to blame.)"
when '403 Forbidden'
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)
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'
message = {
type: 'direct_message',
@ -478,38 +486,17 @@ create a tweet or direct message from an article
=end
def from_article(article)
tweet = nil
case article[:type]
when 'twitter direct-message'
Rails.logger.debug { "Create twitter direct message from article to '#{article[:to]}'..." }
# tweet = @client.create_direct_message(
# article[:to],
# article[:body],
# {}
# )
article[:to].delete!('@')
authorization = Authorization.find_by(provider: 'twitter', username: article[:to])
raise "Unable to lookup user_id for @#{article[:to]}" if !authorization
data = {
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
tweet = @client.create_direct_message(authorization.uid.to_i, article[:body])
when 'twitter status'
Rails.logger.debug { 'Create tweet from article...' }

View file

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

View file

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

View file

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

View file

@ -2,7 +2,7 @@
FactoryBot.define 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 }
content { Faker::Lorem.sentence }
updated_by_id { 1 }

View file

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

View file

@ -7,7 +7,7 @@ require 'rails_helper'
# 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
@ -24,20 +24,8 @@ RSpec.describe 'Freshdesk import', type: :integration, use_vcr: true, db_strateg
Setting.set('system_init_done', false)
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.
%w[
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
c.filter_sensitive_data('<IMPORT_FRESHDESK_ENDPOINT_BASIC_AUTH>') { Base64.encode64( "#{ENV['IMPORT_FRESHDESK_ENDPOINT_KEY']}:X" ).chomp }
end
VCR.use_cassette 'freshdesk_import' do

View file

@ -2,7 +2,7 @@
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) || {})) }
@ -18,7 +18,7 @@ RSpec.describe CommunicateTwitterJob, type: :job do
'in_reply_to_user_id' => nil,
'place' => {},
'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,
'truncated' => false,
}
@ -26,7 +26,7 @@ RSpec.describe CommunicateTwitterJob, type: :job do
let(:links_array) do
[{
url: 'https://twitter.com/_/status/1244937367435108360',
url: 'https://twitter.com/_/status/1410147100403417088',
target: '_blank',
name: 'on Twitter',
}]
@ -47,7 +47,7 @@ RSpec.describe CommunicateTwitterJob, type: :job do
it 'updates the article with tweet attributes' do
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[:links] }.to(links_array)
end
@ -60,41 +60,29 @@ RSpec.describe CommunicateTwitterJob, type: :job do
end
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
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
context 'for DMs' do
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(:request_body) do
{
event: {
type: 'message_create',
message_create: {
target: { recipient_id: recipient.uid },
message_data: { text: article.body }
}
}
}.to_json
end
let(:recipient) { create(:twitter_authorization, uid: ENV.fetch('TWITTER_DM_RECIPIENT', '1234567890')) }
let(:dm_attributes) do
{
'recipient_id' => recipient.uid,
'sender_id' => '1205290247124217856',
'sender_id' => ENV.fetch('TWITTER_USER_ID', '0987654321'),
}
end
let(:links_array) do
[{
url: "https://twitter.com/messages/#{recipient.uid}-1205290247124217856",
url: "https://twitter.com/messages/#{recipient.uid}-1408314039470538752",
target: '_blank',
name: 'on Twitter',
}]
@ -110,12 +98,11 @@ RSpec.describe CommunicateTwitterJob, type: :job do
expect(WebMock)
.to have_requested(:post, 'https://api.twitter.com/1.1/direct_messages/events/new.json')
.with(body: request_body)
end
it 'updates the article with DM attributes' do
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[:links] }.to(links_array)
end

View file

@ -10,13 +10,13 @@ RSpec.describe Issue2715FixBrokenTwitterUrlsJob, type: :job do
let(:tweet_preferences) do
# 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
let(:dm_preferences) do
{
# 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: {
recipient_id: recipient_id,
sender_id: sender_id,

View file

@ -2,33 +2,9 @@
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
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'
end

View file

@ -2,30 +2,9 @@
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
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'
end

View file

@ -2,7 +2,7 @@
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) }
let(:external_credential) { ExternalCredential.find(channel.options[:auth][:external_credential_id]) }
@ -704,101 +704,41 @@ RSpec.describe Channel::Driver::Twitter do
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
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
expect(channel.deliver(delivery_payload)).to match(return_value)
expect(channel.deliver(delivery_payload)).to be_a(return_value)
end
end
end
context 'for tweets' do
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 }
include_examples 'for #send'
context 'in a thread' do
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
channel.deliver(delivery_payload)
expect(WebMock)
.to have_requested(:post, "https://api.twitter.com/1.1#{endpoint}")
.with(body: request_body)
expect { channel.deliver(delivery_payload) }.to not_raise_error
end
end
context 'containing an asterisk (workaround for sferik/twitter #677)' do
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
channel.deliver(delivery_payload)
expect(WebMock)
.to have_requested(:post, "https://api.twitter.com/1.1#{endpoint}")
.with(body: request_body)
expect { channel.deliver(delivery_payload) }.to not_raise_error
end
end
end
context 'for DMs' do
let!(:outgoing_tweet) { create(:twitter_dm_article, :pending_delivery) }
let(:endpoint) { '/direct_messages/events/new.json' }
let(:request_body) { <<~BODY.chomp }
{"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') } }
let(:recipient) { create(:twitter_authorization, uid: ENV.fetch('TWITTER_DM_RECIPIENT', '1234567890')) }
let!(:outgoing_tweet) { create(:twitter_dm_article, :pending_delivery, recipient: recipient) }
let(:return_value) { Twitter::DirectMessage }
include_examples 'for #send'
end
@ -830,38 +770,6 @@ RSpec.describe Channel::Driver::Twitter do
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
it 'sets successful status attributes' do
expect { channel.fetch }
@ -921,8 +829,8 @@ RSpec.describe Channel::Driver::Twitter do
it 'creates an article for each recent tweet/retweet' do
expect { channel.fetch }
.to change { Ticket.where('title LIKE ?', 'RT @%').count }.by(1)
.and change(Ticket, :count).by(3)
.to change { Ticket.where('title LIKE ?', 'RT @%').count }.by(49)
.and change(Ticket, :count).by(73)
end
end
end

View file

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

View file

@ -349,7 +349,7 @@ RSpec.describe Ticket::Article, type: :model do
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') }
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
expect(&run_bg_jobs)
.to change { twitter_article.reload.from }
.to('@example')
.to('@ZammadTesting')
end
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
expect(&run_bg_jobs)
.to change { twitter_article.reload.message_id }
.to('1069382411899817990')
.to('1410130368498372609')
end
it 'sets #preferences with tweet metadata' do

View file

@ -179,7 +179,7 @@ RSpec.describe 'External Credentials', type: :request do
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
# NOTE: When recording a new VCR cassette for these tests,
# 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
let(:status) { :ok }
let(:error_message) { <<~ERR.chomp }
401 Authorization Required (Invalid credentials may be to blame.)
401 Unauthorized (Invalid credentials may be to blame.)
ERR
end
end
@ -262,7 +262,7 @@ RSpec.describe 'External Credentials', type: :request do
include_examples 'for failure cases' do
let(:status) { :ok }
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
end
end
@ -348,7 +348,7 @@ RSpec.describe 'External Credentials', type: :request do
include_examples 'for failure cases' do
let(:status) { :internal_server_error }
let(:error_message) { <<~ERR.chomp }
401 Authorization Required (Invalid credentials may be to blame.)
401 Unauthorized (Invalid credentials may be to blame.)
ERR
end
end

View file

@ -3,3 +3,4 @@
require 'deprecation_toolkit/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)
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

View file

@ -5,9 +5,16 @@ RSpec.configure do |config|
config.around(:each, :required_envs) do |example|
example.metadata[:required_envs].each do |secret|
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
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
end
end

View file

@ -76,9 +76,21 @@ RSpec.configure do |config|
config.around(:each, use_vcr: true) do |example|
vcr_options = Array(example.metadata[:use_vcr])
spec_path = Pathname.new(example.file_path).realpath
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
spec_path = Pathname.new(example.file_path).realpath
cassette_path = spec_path.relative_path_from(Rails.root.join('spec')).sub(%r{_spec\.rb$}, '')
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 = [
:method,
: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
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
@ -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
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

View file

@ -30,7 +30,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 1
friends_count: 1
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
'2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: '2975699229'

View file

@ -30,7 +30,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 0
friends_count: 1
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
'2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: '2975699229'

View file

@ -77,7 +77,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 0
friends_count: 1
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
'2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: '2975699229'

View file

@ -37,7 +37,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 0
friends_count: 1
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
'2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: '2975699229'

View file

@ -51,7 +51,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 1
friends_count: 1
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
controller: channels_twitter
action: webhook_incoming

View file

@ -20,7 +20,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 1
friends_count: 1
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
'2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: '2975699229'

View file

@ -21,7 +21,7 @@ users: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
followers_count: 1
friends_count: 1
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
'2975699229': !ruby/hash:ActiveSupport::HashWithIndifferentAccess
id: '2975699229'

View file

@ -31,7 +31,7 @@ follow_events:
time_zone: ''
geo_enabled: 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
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
profile_background_tile: false

View file

@ -31,7 +31,7 @@ follow_events:
time_zone: ''
geo_enabled: 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
profile_image_url_https: https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
profile_background_tile: false

View file

@ -49,7 +49,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333'
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
default_profile: true
default_profile_image: false

View file

@ -46,7 +46,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333'
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
default_profile: true
default_profile_image: false

View file

@ -46,7 +46,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333'
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
default_profile: true
default_profile_image: false

View file

@ -48,7 +48,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333'
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
default_profile: true
default_profile_image: false

View file

@ -46,7 +46,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333'
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
default_profile: true
default_profile_image: false

View file

@ -49,7 +49,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333'
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
default_profile: true
default_profile_image: false

View file

@ -46,7 +46,7 @@ tweet_create_events:
profile_sidebar_fill_color: DDEEF6
profile_text_color: '333333'
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
default_profile: true
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
body:
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:
User-Agent:
- TwitterRubyGem/6.2.0
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="q7K8GEkhyCHs9jHLtkmD9Kod4", oauth_nonce="03c07d843276ea5be9e32934e277cd07",
oauth_signature="etY6LuIgozpV2JPPFCnnSRykVf4%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585657668", oauth_token="7783712304-H9s75r2d532diPmJYK6JrvUWxu9gTDZ6ocjfToL",
- OAuth oauth_consumer_key="q7K8GEkhyCHs9jHLtkmD9Kod4", oauth_nonce="d374bebfd96c764d209aaed0d96ba8e9",
oauth_signature="soiG9cT63KFZZuJvIje4ImaQlcI%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1625040247", oauth_token="7783712304-H9s75r2d532diPmJYK6JrvUWxu9gTDZ6ocjfToL",
oauth_version="1.0"
Connection:
- close
@ -25,32 +25,29 @@ http_interactions:
code: 401
message: Unauthorized
headers:
Connection:
- close
Content-Length:
- '62'
Date:
- Wed, 30 Jun 2021 08:04:07 GMT
Server:
- 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:
- application/json; charset=utf-8
Date:
- Tue, 31 Mar 2020 12:27:49 GMT
Server:
- tsa_m
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
Cache-Control:
- no-cache, no-store, max-age=0
Content-Length:
- '62'
Strict-Transport-Security:
- max-age=631138519
X-Connection-Hash:
- 43a5b1d7e5d707d650f1cf02cdef086c
X-Response-Time:
- '107'
X-Tsa-Request-Body-Time:
- '0'
- 1f1fe60ac5f10347a4c84b938827ffe2b2b9141eff3233e40528e5c1d835ea81
Connection:
- close
body:
encoding: UTF-8
string: '{"errors":[{"code":89,"message":"Invalid or expired token."}]}'
http_version:
recorded_at: Tue, 31 Mar 2020 12:27:49 GMT
recorded_with: VCR 4.0.0
recorded_at: Wed, 30 Jun 2021 08:04:07 GMT
recorded_with: VCR 6.0.0

View file

@ -5,16 +5,15 @@ http_interactions:
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":"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."}}}}'
headers:
User-Agent:
- TwitterRubyGem/6.2.0
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="89f9fb3a4a61083d5a43108631b561fb",
oauth_signature="9Kmi04TwHkzb1Qg1kc4UcFaAuzc%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585654994", oauth_token="REDACTED",
oauth_version="1.0"
- OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="53083a369b6ee30242406a76960ae2b6",
oauth_signature="rCryB%2Btxj%2Bvtp0P5IwTPymdd9rA%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1625040244", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
Connection:
- close
Content-Type:
@ -26,58 +25,53 @@ http_interactions:
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:
- '313'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 31 Mar 2020 11:43:15 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 11:43:15 GMT
- Wed, 30 Jun 2021 08:04:04 GMT
Pragma:
- no-cache
Server:
- tsa_m
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
- tsa_o
Status:
- 200 OK
Strict-Transport-Security:
- max-age=631138519
Expires:
- 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:
- read-write-directmessages
X-Connection-Hash:
- 89771d0fa3e3da3329775711776b1a24
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-Response-Time:
- '215'
X-Transaction:
- 00e3834000e91bc3
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
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:
- 1d616544d9ebcd87d8c8225b597043de2994ba32a52176afe63a7e39a4b36fd4
Connection:
- close
body:
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":[]}}}}}'
http_version:
recorded_at: Tue, 31 Mar 2020 11:43:15 GMT
recorded_with: VCR 4.0.0
recorded_at: Wed, 30 Jun 2021 08:04:04 GMT
recorded_with: VCR 6.0.0

View file

@ -5,16 +5,15 @@ http_interactions:
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":"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."}}}}'
headers:
User-Agent:
- TwitterRubyGem/6.2.0
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="89f9fb3a4a61083d5a43108631b561fb",
oauth_signature="9Kmi04TwHkzb1Qg1kc4UcFaAuzc%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585654994", oauth_token="REDACTED",
oauth_version="1.0"
- OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="d53ac1110b5991c6f13e46ec6c66b5b6",
oauth_signature="4l4w9Q00ibBHiHXAHeJqhQhgycQ%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1625001656", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
Connection:
- close
Content-Type:
@ -23,61 +22,56 @@ http_interactions:
- api.twitter.com
response:
status:
code: 200
message: OK
code: 403
message: Forbidden
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:
- Tue, 31 Mar 2020 11:43:15 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 11:43:15 GMT
- Tue, 29 Jun 2021 21:20:56 GMT
Pragma:
- no-cache
Server:
- tsa_m
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
- tsa_o
Status:
- 200 OK
Strict-Transport-Security:
- max-age=631138519
- 403 Forbidden
Expires:
- 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:
- read-write-directmessages
X-Connection-Hash:
- 89771d0fa3e3da3329775711776b1a24
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-Response-Time:
- '215'
X-Transaction:
- 00e3834000e91bc3
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
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:
- b1a6e386025a844744ac567e0093bafe320dbbe4ebd7227f46a8951e0d7f4f19
Connection:
- close
body:
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
ignore this message.","entities":{"hashtags":[],"symbols":[],"user_mentions":[],"urls":[]}}}}}'
http_version:
recorded_at: Tue, 31 Mar 2020 11:43:15 GMT
recorded_with: VCR 4.0.0
string: '{"errors":[{"code":349,"message":"You cannot send messages to this
user."}]}'
recorded_at: Tue, 29 Jun 2021 21:20:56 GMT
recorded_with: VCR 6.0.0

View file

@ -5,16 +5,15 @@ http_interactions:
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":"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."}}}}'
headers:
User-Agent:
- TwitterRubyGem/6.2.0
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="89f9fb3a4a61083d5a43108631b561fb",
oauth_signature="9Kmi04TwHkzb1Qg1kc4UcFaAuzc%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585654994", oauth_token="REDACTED",
oauth_version="1.0"
- OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="059956a1ece3b3a66c79a841a2b63373",
oauth_signature="ktziTsboTa%2BF8wvC%2BH1%2BSr%2FLCl4%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1625040245", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
Connection:
- close
Content-Type:
@ -26,58 +25,53 @@ http_interactions:
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:
- '313'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 31 Mar 2020 11:43:15 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 11:43:15 GMT
- Wed, 30 Jun 2021 08:04:05 GMT
Pragma:
- no-cache
Server:
- tsa_m
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
- tsa_o
Status:
- 200 OK
Strict-Transport-Security:
- max-age=631138519
Expires:
- 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:
- read-write-directmessages
X-Connection-Hash:
- 89771d0fa3e3da3329775711776b1a24
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-Response-Time:
- '215'
X-Transaction:
- 00e3834000e91bc3
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
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:
- 82d50f9badd633a8c1b3e0469fb921464cfdbc6a09f99332740f2b3e98b2f8d8
Connection:
- close
body:
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":[]}}}}}'
http_version:
recorded_at: Tue, 31 Mar 2020 11:43:15 GMT
recorded_with: VCR 4.0.0
recorded_at: Wed, 30 Jun 2021 08:04:05 GMT
recorded_with: VCR 6.0.0

View file

@ -5,16 +5,15 @@ http_interactions:
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":"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."}}}}'
headers:
User-Agent:
- TwitterRubyGem/6.2.0
- TwitterRubyGem/7.0.0
Authorization:
- OAuth oauth_consumer_key="REDACTED", oauth_nonce="89f9fb3a4a61083d5a43108631b561fb",
oauth_signature="9Kmi04TwHkzb1Qg1kc4UcFaAuzc%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1585654994", oauth_token="REDACTED",
oauth_version="1.0"
- OAuth oauth_consumer_key="<TWITTER_CONSUMER_KEY>", oauth_nonce="38c9276a42d314eb2c6504a1585a56f2",
oauth_signature="%2Bqoynn5ly%2BM%2F8h39yYuZx6%2B1euY%3D", oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1625039834", oauth_token="<TWITTER_OAUTH_TOKEN>", oauth_version="1.0"
Connection:
- close
Content-Type:
@ -26,58 +25,53 @@ http_interactions:
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:
- '313'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 31 Mar 2020 11:43:15 GMT
Expires:
- Tue, 31 Mar 1981 05:00:00 GMT
Last-Modified:
- Tue, 31 Mar 2020 11:43:15 GMT
- Wed, 30 Jun 2021 07:57:14 GMT
Pragma:
- no-cache
Server:
- tsa_m
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
- tsa_o
Status:
- 200 OK
Strict-Transport-Security:
- max-age=631138519
Expires:
- 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:
- read-write-directmessages
X-Connection-Hash:
- 89771d0fa3e3da3329775711776b1a24
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-Response-Time:
- '215'
X-Transaction:
- 00e3834000e91bc3
X-Tsa-Request-Body-Time:
- '0'
X-Twitter-Response-Tags:
- BouncerCompliant
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:
- 87f1635ceda56488ee072f5693ae9d8bd50ae5381b4a4cd81f9febfda6d6314d
Connection:
- close
body:
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":[]}}}}}'
http_version:
recorded_at: Tue, 31 Mar 2020 11:43:15 GMT
recorded_with: VCR 4.0.0
recorded_at: Wed, 30 Jun 2021 07:57:14 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=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