Sha256: f4d01184cf9e4ec49a55bf1d5e75b3e0975d2b8a1a8e08c51885b42085153f6f

Contents?: true

Size: 1.38 KB

Versions: 6

Compression:

Stored size: 1.38 KB

Contents

#!/usr/bin/env ruby

require 'dotenv/load'
require 'strava-ruby-client'
require 'webrick'

logger = ::Logger.new(STDOUT)
logger.level = Logger::INFO

client = Strava::Webhooks::Client.new(
  client_id: ENV['STRAVA_CLIENT_ID'],
  client_secret: ENV['STRAVA_CLIENT_SECRET'],
  logger: logger
)

case ARGV[0]
when 'create' then
  callback_url = ARGV[1]
  raise 'Missing callback_url.' unless callback_url

  client.logger.info "Subscribing to #{callback_url} ..."
  subscription = client.create_push_subscription(callback_url: callback_url, verify_token: 'token')
  puts subscription
when 'delete'
  id = ARGV[1]
  raise 'Missing id.' unless id

  client.logger.info "Unsubscribing #{id} ..."
  client.delete_push_subscription(id: id)
  client.logger.info 'Done.'
when 'handle'
  server = WEBrick::HTTPServer.new(Port: 4242)

  trap 'INT' do
    server.shutdown
  end

  server.mount_proc '/' do |req, res|
    case req.request_method
    when 'GET' then
      challenge = Strava::Webhooks::Models::Challenge.new(req.query)
      res.content_type = 'application/json'
      res.body = challenge.response.to_json
    when 'POST' then
      event = Strava::Webhooks::Models::Event.new(JSON.parse(req.body))
      server.logger.info event
      res.content_type = 'application/json'
      res.body = { ok: true }.to_json
    end
  end
  server.start
else
  client.push_subscriptions.each do |s|
    puts s
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
strava-ruby-client-0.4.2 bin/strava-webhooks
strava-ruby-client-0.4.1 bin/strava-webhooks
strava-ruby-client-0.4.0 bin/strava-webhooks
strava-ruby-client-0.3.2 bin/strava-webhooks
strava-ruby-client-0.3.1 bin/strava-webhooks
strava-ruby-client-0.3.0 bin/strava-webhooks.rb