summaryrefslogtreecommitdiff
path: root/client.rb
blob: 0ef28963adcc3991d335ea843a6fd50794bf6788 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env ruby
# TODO
# run as service
# client post md
# direct from client (key)
# via server (auth)
require 'json'
require 'net/http'
require 'uri'
require 'base64'
require 'securerandom'
require 'fileutils'
require 'digest/sha2'

USER = "pdp8"
WWW_DOMAIN = "pdp8.info"
WWW_URL = "https://#{WWW_DOMAIN}"
SOCIAL_DOMAIN = "social.#{WWW_DOMAIN}"

ACCOUNT = "#{USER}@#{SOCIAL_DOMAIN}"
SOCIAL_URL = "https://#{SOCIAL_DOMAIN}"
ACTOR = File.join(SOCIAL_URL, USER)

=begin
MATRIX = "@#{USER}:matrix.#{WWW_DOMAIN}"

post = {
  "@context" => "https://www.w3.org/ns/activitystreams",
  "type" => "Note",
  "content" => ""
}

def webfinger account
  account = account.sub(/^@/, '').chomp
  user, server = account.split("@")
  header = { 'Accept' => "application/jrd+json" }
  uri = URI("https://" + server + "/.well-known/webfinger?resource=acct:#{account}")
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  request = Net::HTTP::Get.new(uri.request_uri, header)
  response = http.request(request)
  JSON.parse(response.body)["links"].select { |l| l["rel"] == "self" }[0]["href"]
end

ARGF.each do |line|
  if /^(To|Cc|Bcc):/.match line
    dest, addresses = line.split(/: */)
    dest = dest.downcase
    post[dest] ||= []
    addresses.split(/, */).each do |add|
      post[dest] << webfinger(add.chomp)
    end
  else
    post["content"] << line
  end
end
=end

uri = URI.parse(File.join SOCIAL_URL, "outbox")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
header = { 'Content-Type' => 'text/plain' }
# header = { 'Content-Type' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' }
request = Net::HTTP::Post.new(uri.request_uri, header)
usr = File.read(".usr").chomp
pwd = File.read(".pwd").chomp
request.basic_auth(usr, pwd)
request.body = File.read ARGV[0]

response = http.request(request)
# TODO return error if response.code > 400
puts(response.body, response.code)