Giter Site home page Giter Site logo

unfurl's Introduction

main CI Dependencies
dev CI Dependencies

Latest Version Open Issues License

unfurl

This library implements "URL unfurling" approximately according to how Slack does it. See this blog post for more info.

Installation

unfurl is available as a Maven artifact from Clojars. The latest version is:

Trying it Out

Clojure CLI

$ clj -Sdeps '{:deps {com.github.pmonks/unfurl {:mvn/version "#.#.#"}}}'  # Where #.#.# is replaced with an actual version number >= 0.10.0

Leiningen

$ lein try com.github.pmonks/unfurl

Usage

The functionality is provided by the unfurl.api namespace.

Require it in the REPL:

(require '[unfurl.api :as uf] :reload-all)

Require it in your application:

(ns my-app.core
  (:require [unfurl.api :as uf]))

The library provides a single function - unfurl. The API documentation has full details, and the unit tests provide some example usages.

Contributor Information

Contributing Guidelines

Bug Tracker

Code of Conduct

Developer Workflow

The repository has two permanent branches: main and dev. All development must occur either in branch dev, or (preferably) in feature branches off of dev. All PRs must also be submitted against dev; the main branch is only updated from dev via PRs created by the core development team. All other changes submitted to main will be rejected.

This model allows otherwise unrelated changes to be batched up in the dev branch, integration tested there, and then released en masse to the main branch, which will trigger automated generation and deployment of the release (Codox docs to GitHub Pages, JARs to Clojars, etc.).

Why are there so many different groupIds on Clojars for this project?

The project was originally developed under my personal GitHub account. In early 2018 it was transferred to the clj-commons GitHub organisation, but then, as that group refined their scope and mission, it was determined that it no longer belonged there, and the project were transferred back in late 2021. During this time the build tooling for the project also changed from Leiningen to tools.build, which created further groupId churn (tools.build introduced special, useful semantics for com.github.username groupIds that don't exist with Leiningen or Clojars).

License

Copyright © 2016 Peter Monks

Distributed under the Apache License, Version 2.0.

SPDX-License-Identifier: Apache-2.0

unfurl's People

Contributors

finos-admin avatar pmonks avatar slipset avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

unfurl's Issues

Handle 416 HTTP response codes properly

Currently unfurl blindly issues an HTTP range request without checking if the server supports them or not. Although servers are supposed to return the full content with a 200 status code if they do not support HTTP range requests, some return a 416 status code instead, and in these cases unfurl should retry the request without the Range header.

(see also the discussion in issue #6)

Make this library compatible with ClojureScript

Feature Request

Description of Problem:

I'm working on a new feature for status-react. This feature is about adding URL unfurling to its chat. The problem is that it's a ClojureScript project, so it's currently not possible to import this library and use it there.

Potential Solutions:

I've researched about this .cljc extension, which is compatible between Clojure and ClojureScript. I'd like to clone this repo and transform your .clj into a .cljc, and then create a Pull Request if you're interested in this.

@pmonks How hard do you think it would be to do it? Do you think it's worth it, or should I better find another solution for my need? I'm fairly new to Clojure and ClojureScript, so I would really appreciate your input here. Thanks!

Port from midje to clojure.test

Description of Problem:

It's probably past time to port from midje to clojure.test. Despite offering a more pleasant developer experience than clojure.test, midje doesn't seem to be very actively maintained any longer.

Migrate from TravisCI to GitHub Actions

When I push changes to GitHub, I want to see well-integrated results, so I can simplify the systems I need to look at for status updates.

Proposed Solution:

Migrate from TravisCI based CI to GitHub Actions based CI.

Note: we will (hopefully temporarily) lose the ability to test across a matrix of JVM versions

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.