Giter Club home page Giter Club logo

openflagsapi's Introduction

Flag API

this is a flag API currently in αlpha

Use Case

The main usage intention for this flag API is to simply have an endpoint for a html. or any other information helpful to users in JSON object form related to flags.

The API endpoint can be use by any program that can work with images, SVGs, URLs, or JSONs

Contribution

Until I have more than myself working on this, I will need you to please contact me directly at a https://ianss.dev/contact or [email protected] To contribute to the Open Flags API project.

You can find the Open Flags API github page here.

I look forward to working with you ( ͡° ͜ʖ ͡°)

Why are the documents the way they are?

People don't want to explained to death line by line...
They just want big chunks of example code that gets the job done with minimal changing.
                                                                                 -Shyaboi

Use

Currently the Open Flags API returns JSON flagInfo data, and direct links to flag .svg images.

Routes

There are several enpoints that you can get flag data from The basic breakdown of routes is as follows;

//will return a random direct link to a flag .svg
GET https://openflags.net/rando     

//will return JSON of availible flagInfo based on country/region search
GET https://openflags.net/api/json/flagInfo/:country/:region   

//will return JSON of availible flagInfo based on ISO 3166 region code
GET https://openflags.net/api/json/ISO3166/:regionCode    

//will return a direct link to the .svg flag at that country/region
https://openflags.net/:country/:region/:region.svg

cURL Usage

You can use this api with simple cURL requests.

To get the full code of a .svg file your cURL request should look like the example below;

curl https://openflags.net/api/usa/colorado

The output of the request will look something similar to the example below;

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1800" height="1200">
<!-- Created per specification at http://www.50states.com/flag/coflag.htm by Robert Fleming -->
 <rect width="1800" height="1200" fill="#002868"/>
 <rect width="1800" height="400" y="400" fill="white"/>
 <!-- 76 + 180*sqrt(55)/36 ~= 113.1 -->
 <path d="M1130.81,750A400,400 0 1,1 1130.81,450L760,600Z" fill="#bf0a30"/>
 <circle cx="760" cy="600" r="200" fill="gold"/>
</svg>

Download via cURL

If you want to download the file locally via cURL, your cURL request should look like the example below;

curl https://openflags.net/usa/region/colorado.svg -o coloradoflag.svg

The cURL will download the file in the current working directory, and give it the name following the "-o"

cURL JSON

If you want to generate a JSON response to your cURL, cURL request should look like the example below;

curl https://openflags.net/api/usa/colorado

This will generate a JSON response similar to the example below;

flagInfo":
[{
            "_id":"5f51ca2c7cf1026aa0a50f95",
            "directLink":"https://openflags.net/usa/region/colorado.svg",
            "quickLink":"colorado.svg",
            "region":"colorado",
            "country":"usa"
            "regionCode":'US-CO'
}]

Javascript Fetch Usage

To use a Javascript fetch request to get information into your JS code. you can make a similar request as the example below;

fetch('https://openflags.net/api/usa/colorado')
  .then(response => response.json())
  .then(data => console.log(data));

The data variable alone will return many objects from the server. The response will be similat to the example below;

{flagInfo: Array(1)}
flagInfo: Array(1)
0:
country: "usa"
directLink: "https://openflags.net/usa/region/colorado.svg"
quickLink: "colorado.svg"
region: "colorado"
regionCode:'US-CO'
_id: "5f51ca2c7cf1026aa0a50f95"
__proto__: Object
length: 1
__proto__: Array(0)
__proto__: Object

Currently most flag responses will only return 1 position in the array, so it is safe to simply use data.flagInfo[0] with 0 in the array index. you can make a similar request as the example below;

  fetch('https://openflags.net/api/usa/colorado')
  .then(response => response.json())
  .then(data => console.log(data.flagInfo[0]));
  The data.flagInfo[0] will return a JSON object from the input and desired region, and country.

The response will be a JSON obeject similar to the example below;

{
_id: "5f51ca2c7cf1026aa0a50f95", directLink: "https://openflags.net/usa/region/colorado.svg", 
quickLink: "colorado.svg", 
region: "colorado", 
country: "usa"
regionCode:'US-CO'
}
country: "usa"
directLink: "https://openflags.net/usa/region/colorado.svg"
quickLink: "colorado.svg"
region: "colorado"
_id: "5f51ca2c7cf1026aa0a50f95"
__proto__: Object

Objects in the JSON object

You can call the parameters inside the object with dot notation, similar to the example below;

fetch('https://openflags.net/api/usa/colorado')
  .then(response => response.json())
  .then(data => {
      const flagPicLink =  data.flagInfo[0].directLink
      console.log(flagPicLink)
    });

Setting a variable to after the flagInfo[0] obeject inside the flagInfo object will allow you to use any of the values in the object. In the above example, the response will simply be a string with a direct link to a SVG image; see below;

"https://openflags.net/usa/region/colorado.svg"

Node.JS Usage

http module Usage

To use Flag API with the standard Node library and not download any dependencies, or extra packages, follow the example bellow.

const https = require('https');

https.get('https://openflags.net/api/usa/colorado', (response) => {
  let data = '';

  // called when a data chunk is received.
  response.on('data', (chunk) => {
   data = JSON.parse(chunk)
    console.log(data)
  });

  // called when the complete response is received.
  response.on('end', () => {
    console.log(data);
  });

}).on("error", (error) => {
  console.log("Error: " + error.message);
});

The data variable mutates into an object with an array of objects from the server. The response will be similar to the example below;

{
flagInfo: [
  {
    _id: '5f51ca2c7cf1026aa0a50f95',
    directLink: 'https://openflags.net/usa/region/colorado.svg',
    quickLink: 'colorado.svg',
    region: 'colorado',
    country: 'usa',
    regionCode:'US-CO'
  }
]
}

Currently most flag responses will only return 1 position in the array, so it is safe to simply use data.flagInfo[0] with 0 in the array index to get the data from the main flagInfo object. you can make a similar request as the example below;

const https = require('https');

https.get('https://openflags.net/api/usa/colorado', (response) => {
  let data = '';

  // called when a data chunk is received.
  response.on('data', (chunk) => {
   data = JSON.parse(chunk)
    console.log(data.flagInfo[0])
  });

  // called when the complete response is received.
  response.on('end', () => {
    console.log(data.flagInfo[0]);
  });

}).on("error", (error) => {
  console.log("Error: " + error.message);
});

Running this code will return only a single flag JSON object, such as the example below;

{
  flagInfo: [
    {
      _id: '5f51ca2c7cf1026aa0a50f95',
      directLink: 'https://openflags.net/usa/region/colorado.svg',
      quickLink: 'colorado.svg',
      region: 'colorado',
      country: 'usa'
      regionCode:'US-CO'
    }
  ]
}

With dot notation on the JSON object of flagInfo[0] you can request specific items in the object, such as the example below;

const https = require('https');

https.get('https://openflags.net/api/usa/colorado', (response) => {
  let data = '';

  // called when a data chunk is received.
  response.on('data', (chunk) => {
   data = JSON.parse(chunk)
    console.log(data.flagInfo[0].directLink)
  });

  // called when the complete response is received.
  response.on('end', () => {
    console.log(data.flagInfo[0].directLink);
  });

}).on("error", (error) => {
  console.log("Error: " + error.message);
});

With 'directLink' after the data.flagInfo[0].directLink, the response from the API server will be the contects of dirctLink object, which is a String, such as the example below;

"https://openflags.net/usa/region/colorado.svg"

JQuery Usage

to use the api with JQuery, you can make a simple GET request, such as the example below;

$.get( "https://openflags.net/rando", function( data ) {
 console.log(data)
 })

The 'data' will be an object or a string depending on which endpoints you hit. In the example aboves case, the result would be a string containing a direct link of a random flag .svg file.

Python Usage

The simplest way to use Open Flags API with Python is with the requests module. First install it with;

pip install requests

Then in your python app, setup your GET request such as the code below;

import requests

response = requests.get("https://openflags.net/api/usa/california")

data = response.json()

print(data)

The result will be a python list such as below;

{
'flagInfo': 
    [{
        '_id': '5f7e5591a46a711d00667b40', 
        'directLink': 'https://openflags.net/usa/region/california.svg', 
        'quickLink': 'california.svg', 
        'region': 'california', 
        'country': 'usa', 
        'regionCode':'US-CA'
    }]
}

openflagsapi's People

Contributors

shyaboi avatar

Stargazers

 avatar

Watchers

 avatar  avatar

openflagsapi's Issues

Enlaland Enleland Englalnd

England is complicated

more than simple states by region code, even london itself is split into many different regions.

I would like to add every region code that is appropriate to the flags region, but the research and work is complicated, and time

consuming,

This is a reminder for myself, or if any England experts would like to contribute!

Indonesia missing some regions

Indonesia is missing some .svg files for their regional flags.

I would like to only server .svg currently.

This is a reminder, or if somone knows where to find them, I wil make a list here later.

screen responsivness

when the screen on desktop is squoze to the side of the screen the nav and buttons get a bit wonky.

Might need to through in some @media breaks for super low width

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.