insta 0.2.9 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/Rakefile +30 -3
  4. data/exe/insta +6 -0
  5. data/lib/insta/ansi.rb +30 -0
  6. data/lib/insta/ci.rb +21 -0
  7. data/lib/insta/cli.rb +714 -0
  8. data/lib/insta/config_manifest.rb +56 -0
  9. data/lib/insta/configuration.rb +86 -2
  10. data/lib/insta/diff.rb +134 -0
  11. data/lib/insta/inline/call_finder.rb +37 -0
  12. data/lib/insta/inline/edit.rb +21 -0
  13. data/lib/insta/inline/file_patcher.rb +269 -0
  14. data/lib/insta/inline/pending_registry.rb +57 -0
  15. data/lib/insta/inline/pending_store.rb +145 -0
  16. data/lib/insta/minitest/assertions.rb +254 -0
  17. data/lib/insta/minitest/lifecycle.rb +12 -0
  18. data/lib/insta/minitest.rb +8 -0
  19. data/lib/insta/pending_locations.rb +64 -0
  20. data/lib/insta/pending_reporter.rb +47 -0
  21. data/lib/insta/redaction/applicator.rb +89 -0
  22. data/lib/insta/redaction/selector.rb +193 -0
  23. data/lib/insta/rspec/hooks.rb +18 -0
  24. data/lib/insta/rspec/matchers.rb +248 -0
  25. data/lib/insta/rspec.rb +7 -0
  26. data/lib/insta/serializers/base.rb +31 -0
  27. data/lib/insta/serializers/inspect.rb +14 -0
  28. data/lib/insta/serializers/json.rb +16 -0
  29. data/lib/insta/serializers/string.rb +14 -0
  30. data/lib/insta/serializers/yaml.rb +16 -0
  31. data/lib/insta/snapshot.rb +74 -0
  32. data/lib/insta/snapshot_content.rb +44 -0
  33. data/lib/insta/snapshot_file.rb +64 -0
  34. data/lib/insta/snapshot_mismatch_handler.rb +34 -0
  35. data/lib/insta/snapshot_name.rb +51 -0
  36. data/lib/insta/syntax_highlight.rb +20 -0
  37. data/lib/insta/update_coordinator.rb +22 -0
  38. data/lib/insta/version.rb +3 -1
  39. data/lib/insta.rb +42 -8
  40. data/lib/minitest/insta_plugin.rb +17 -0
  41. data/sig/insta/ansi.rbs +28 -0
  42. data/sig/insta/ci.rbs +10 -0
  43. data/sig/insta/cli.rbs +150 -0
  44. data/sig/insta/config_manifest.rbs +27 -0
  45. data/sig/insta/configuration.rbs +48 -0
  46. data/sig/insta/diff.rbs +38 -0
  47. data/sig/insta/inline/call_finder.rbs +22 -0
  48. data/sig/insta/inline/edit.rbs +18 -0
  49. data/sig/insta/inline/file_patcher.rbs +55 -0
  50. data/sig/insta/inline/pending_registry.rbs +22 -0
  51. data/sig/insta/inline/pending_store.rbs +41 -0
  52. data/sig/insta/minitest/assertions.rbs +52 -0
  53. data/sig/insta/minitest/lifecycle.rbs +10 -0
  54. data/sig/insta/minitest.rbs +2 -0
  55. data/sig/insta/pending_locations.rbs +22 -0
  56. data/sig/insta/pending_reporter.rbs +14 -0
  57. data/sig/insta/redaction/applicator.rbs +22 -0
  58. data/sig/insta/redaction/selector.rbs +58 -0
  59. data/sig/insta/rspec/hooks.rbs +10 -0
  60. data/sig/insta/rspec/matchers.rbs +71 -0
  61. data/sig/insta/rspec.rbs +2 -0
  62. data/sig/insta/serializers/base.rbs +21 -0
  63. data/sig/insta/serializers/inspect.rbs +10 -0
  64. data/sig/insta/serializers/json.rbs +10 -0
  65. data/sig/insta/serializers/string.rbs +10 -0
  66. data/sig/insta/serializers/yaml.rbs +10 -0
  67. data/sig/insta/snapshot.rbs +37 -0
  68. data/sig/insta/snapshot_content.rbs +14 -0
  69. data/sig/insta/snapshot_file.rbs +27 -0
  70. data/sig/insta/snapshot_mismatch_handler.rbs +12 -0
  71. data/sig/insta/snapshot_name.rbs +17 -0
  72. data/sig/insta/syntax_highlight.rbs +8 -0
  73. data/sig/insta/update_coordinator.rbs +11 -0
  74. data/sig/insta/version.rbs +5 -0
  75. data/sig/insta.rbs +12 -0
  76. data/sig/minitest/insta_plugin.rbs +6 -0
  77. data/sig/vendor/difftastic.rbs +19 -0
  78. data/sig/vendor/irb.rbs +5 -0
  79. data/sig/vendor/psych.rbs +7 -0
  80. data/sig/vendor/rspec.rbs +9 -0
  81. data/sig/vendor/rubygems.rbs +3 -0
  82. metadata +109 -54
  83. data/.DS_Store +0 -0
  84. data/.gitignore +0 -11
  85. data/.rspec +0 -3
  86. data/.travis.yml +0 -5
  87. data/CODE_OF_CONDUCT.md +0 -74
  88. data/Gemfile +0 -6
  89. data/Gemfile.lock +0 -35
  90. data/README.md +0 -41
  91. data/bin/console +0 -14
  92. data/bin/setup +0 -8
  93. data/insta.gemspec +0 -36
  94. data/lib/.DS_Store +0 -0
  95. data/lib/insta/account.rb +0 -127
  96. data/lib/insta/api.rb +0 -88
  97. data/lib/insta/constants.rb +0 -21
  98. data/lib/insta/device.rb +0 -11852
  99. data/lib/insta/feed.rb +0 -89
  100. data/lib/insta/location.rb +0 -18
  101. data/lib/insta/proxy_manager.rb +0 -23
  102. data/lib/insta/tag.rb +0 -18
  103. data/lib/insta/user.rb +0 -103
data/lib/insta/api.rb DELETED
@@ -1,88 +0,0 @@
1
- require 'openssl'
2
- require 'base64'
3
- require 'digest/md5'
4
- require 'net/http'
5
- require 'json'
6
- require 'insta/user'
7
- require 'insta/account'
8
- require 'insta/feed'
9
- require 'insta/configuration'
10
- require 'insta/location'
11
- require 'insta/tag'
12
-
13
- module Insta
14
- module API
15
- def self.compute_hash(data)
16
- OpenSSL::HMAC.hexdigest OpenSSL::Digest.new('sha256'), CONSTANTS::PRIVATE_KEY[:SIG_KEY], data
17
- end
18
-
19
- def self.generate_uuid
20
- 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.gsub(/[xy]/) do |c|
21
- r = (Random.rand * 16).round | 0
22
- v = c == 'x' ? r : (r & 0x3 | 0x8)
23
- c.gsub(c, v.to_s(16))
24
- end.downcase
25
- end
26
-
27
- def self.create_md5(data)
28
- Digest::MD5.hexdigest(data).to_s
29
- end
30
-
31
- def self.generate_device_id
32
- timestamp = Time.now.to_i.to_s
33
- 'android-' + create_md5(timestamp)[0..16]
34
- end
35
-
36
- def self.generate_signature(data)
37
- data = data.to_json
38
- compute_hash(data) + '.' + data
39
- end
40
-
41
- def self.http(args)
42
- args[:url] = URI.parse(args[:url])
43
- proxy = args[:proxy]
44
- if proxy
45
- http = Net::HTTP::Proxy(proxy.dig(:host), proxy.dig(:port), proxy.dig(:username), proxy.dig(:password)).new(args[:url].host, args[:url].port)
46
- else
47
- http = Net::HTTP.new(args[:url].host, args[:url].port)
48
- end
49
-
50
- http.use_ssl = true
51
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
52
- request = nil
53
- if args[:method] == 'POST'
54
- request = Net::HTTP::Post.new(args[:url].path)
55
- elsif args[:method] == 'GET'
56
- request = Net::HTTP::Get.new(args[:url].path + (!args[:url].nil? ? '?' + args[:url].query : ''))
57
- end
58
-
59
- request.initialize_http_header(self.http_header(args))
60
- request.body = args.key?(:body) ? args[:body] : nil
61
- http.request(request)
62
- end
63
-
64
- def self.http_header(args)
65
- if args[:desktop]
66
- {
67
- :'User-Agent' => Insta::CONSTANTS::HEADER[:user_agent_desktop],
68
- :Accept => Insta::CONSTANTS::HEADER[:accept],
69
- :Cookie => (args.dig(:user)&.session.nil? ? '' : args.dig(:user)&.session)
70
- }
71
- else
72
- {
73
- :'User-Agent' => args.dig(:user)&.useragent,
74
- :Accept => Insta::CONSTANTS::HEADER[:accept],
75
- :'Accept-Encoding' => Insta::CONSTANTS::HEADER[:encoding],
76
- :'Accept-Language' => args.dig(:user)&.language,
77
- :'X-IG-Capabilities' => Insta::CONSTANTS::HEADER[:capabilities],
78
- :'X-IG-Connection-Type' => Insta::CONSTANTS::HEADER[:type],
79
- :Cookie => (args.dig(:user)&.session.nil? ? '' : args.dig(:user)&.session)
80
- }
81
- end
82
- end
83
-
84
- def self.generate_rank_token(pk)
85
- format('%s_%s', pk, Insta::API.generate_uuid)
86
- end
87
- end
88
- end
@@ -1,21 +0,0 @@
1
- module Insta
2
- module CONSTANTS
3
- PRIVATE_KEY = {
4
- SIG_KEY: '0443b39a54b05f064a4917a3d1da4d6524a3fb0878eacabf1424515051674daa'.freeze,
5
- SIG_VERSION: '4'.freeze,
6
- APP_VERSION: '10.33.0'.freeze
7
- }.freeze
8
-
9
- HEADER = {
10
- user_agent_desktop: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'.freeze,
11
- capabilities: '3QI='.freeze,
12
- type: 'WIFI'.freeze,
13
- host: 'i.instagram.com'.freeze,
14
- connection: 'Close'.freeze,
15
- encoding: 'gzip, deflate, sdch'.freeze,
16
- accept: '*/*'.freeze
17
- }
18
-
19
- URL = 'https://i.instagram.com/api/v1/'.freeze
20
- end
21
- end