Skip to content

Instantly share code, notes, and snippets.

View flanker's full-sized avatar
💥
jinshuju.net

Feng Zhichao flanker

💥
jinshuju.net
View GitHub Profile
# decode rails session
def verify_and_decrypt_session_cookie(session_value, secret_key_base = Rails.application.secret_key_base)
serializer = ActiveSupport::MessageEncryptor::NullSerializer
key_generator = ActiveSupport::KeyGenerator.new(secret_key_base, iterations: 1000)
secret = key_generator.generate_key('encrypted cookie', 32)
sign_secret = key_generator.generate_key("signed encrypted cookie")
encryptor = ActiveSupport::MessageEncryptor.new(secret, sign_secret, cipher: "aes-256-cbc", serializer: serializer)
encryptor.decrypt_and_verify(CGI::unescape session_value)
end
@flanker
flanker / http_request_with_invalid_encoding.rb
Created November 24, 2018 07:42
Send http request with invalid encoding in ruby
system "curl -I https://jinshuju.net/f/EphY22\x81"
@flanker
flanker / tencent_cloud_invoice_ocr.rb
Created August 23, 2018 02:52
tencent cloud service - invoice ocr api
require 'net/http'
require 'openssl'
require 'base64'
require 'json'
appid = 'APP_ID'
secret_id = 'SECRET_ID'
secret_key = 'SECRET_KEY'
current_time = Time.now.to_i
expired_time = current_time + 24 * 60 * 60
@flanker
flanker / mongoid_active_record_log_in_console.rb
Last active July 24, 2018 07:27
Show Mongoid and Active Record logs in Rails console
Mongoid.logger.level = Logger::DEBUG
Mongo::Logger.logger.level = Logger::DEBUG
ActiveRecord::Base.logger = Logger.new(STDOUT)
Mongoid.logger = Logger.new(STDOUT)
Mongo::Logger.logger = Logger.new(STDOUT)
# limit of mongoid log truncated
Mongo::Monitoring::CommandLogSubscriber::LOG_STRING_LIMIT = 3000
@flanker
flanker / app.rb
Created March 15, 2018 03:55
tiny example of ruby module usage
module Sayable
def self.included(host_class)
host_class.extend ClassMethods
end
module ClassMethods
def sound sound
@the_sound = sound
end
# example ruby code to create entry with table field using jinshuju.com v1 api
# help document for the api: https://help.jinshuju.net/articles/entry-api
require 'net/http'
require 'openssl'
subdomain = 'im' # your jinshuju.com subdomain
form_token = 'ZsKUgS' # fake token. put your form token here
key = 'A9f5kBbFRf71wpJvcaiwkC' # fake key. put your API Key here
secret = 'Ch6_XmbaaBr-ResDh0Ga9w' # fake secret. put your API Secret here
@flanker
flanker / v1_create_entry.rb
Created November 30, 2017 06:49
Create entry using jinshuju.com v1 API
# example ruby code to create entry using jinshuju.com v1 api
# help document for the api: https://help.jinshuju.net/articles/entry-api
require 'net/http'
require 'openssl'
subdomain = 'im' # your jinshuju.com subdomain
form_token = 'A1B2C3' # your form token
key = 'A9f5kBbFRf71wpJvcaiwkC' # your API Key
secret = 'Ch6_XmbaaBr-ResDh0Ga9w' # your API Secret
@flanker
flanker / gist:705fdbc11a94abf7c62c027e3946a933
Created July 25, 2017 10:30
search and replace to add `params` in controller tests when upgrading rails to 5.1
# TEXT TO FIND: ^(\s+)(get|post|put|patch|destroy) :(index|show|edit|update|new|create|destroy), ([^params].+[^,])$
# REPLACE WITH: $1$2 :$3, params: {$4}
@flanker
flanker / youtube-video-source-file-parser.rb
Created May 17, 2017 00:23
Parse YouTube video source file urls from URL id
# Download Videos from Youtube in Ruby
# By: Sheharyar Naseer
require 'open-uri'
require 'cgi'
def tube(id)
'http://youtube.com/get_video_info?video_id=' + id
end
@flanker
flanker / api_test.html
Created May 9, 2017 08:35
API Test example
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>API Test</title>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
</head>
<body>
<script>