summary refs log tree commit diff stats
path: root/main.go
diff options
context:
space:
mode:
authorAndinus <andinus@inventati.org>2020-03-14 12:14:27 +0530
committerAndinus <andinus@inventati.org>2020-03-14 12:14:27 +0530
commit666c04dc05231c171937a2e84a2f2668b5e351a3 (patch)
treed59182a817b8aee7279368232c547ed2baeb0c20 /main.go
parent3b71ae4119a00c8c1351a845c54fa643764f4324 (diff)
downloadcetus-666c04dc05231c171937a2e84a2f2668b5e351a3.tar.gz
Restructure project
Diffstat (limited to 'main.go')
-rw-r--r--main.go159
1 files changed, 0 insertions, 159 deletions
diff --git a/main.go b/main.go
deleted file mode 100644
index 731a4ae..0000000
--- a/main.go
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright (c) 2020, Andinus <andinus@inventati.org>
-
-// Permission to use, copy, modify, and/or distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-
-// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-package main
-
-import (
-	"flag"
-	"fmt"
-	"log"
-	"math/rand"
-	"net/http"
-	"os/exec"
-	"strconv"
-	"time"
-)
-
-var (
-	timeout time.Duration
-
-	unsplashAPI string
-
-	width  int
-	height int
-)
-
-func main() {
-	rand.Seed(time.Now().Unix())
-
-	var (
-		err error
-
-		imgPath string
-		wall    string
-		src     string
-		srcArr  []string = []string{
-			"unsplash",
-		}
-	)
-
-	// Parse flags passed to program
-	flag.StringVar(&src, "src", "random", "Source for the image")
-	flag.StringVar(&wall, "wall", "random", "Daily, Weekly or Random wallpaper")
-
-	flag.IntVar(&width, "width", 1920, "Width of the image")
-	flag.IntVar(&height, "height", 1080, "Height of the image")
-
-	flag.StringVar(&unsplashAPI, "unsplash-api", "https://source.unsplash.com", "Unsplash Source API URL")
-	flag.DurationVar(&timeout, "timeout", 16, "Timeout for http client")
-	flag.Parse()
-
-	if src == "random" {
-		src = srcArr[rand.Intn(len(srcArr))]
-	}
-
-	// Check if the source is known
-	if !contains(srcArr, src) {
-		log.Fatal("Error: Unknown Source")
-	}
-
-	imgPath, err = parseSrcAndGetPath(src, wall)
-	errChk(err)
-
-	err = setWall(imgPath)
-	errChk(err)
-}
-
-func contains(arr []string, str string) bool {
-	for _, i := range arr {
-		if i == str {
-			return true
-		}
-	}
-	return false
-}
-
-// Gets image path from src
-func parseSrcAndGetPath(src string, wall string) (string, error) {
-	var err error
-	var imgPath string
-
-	switch src {
-	case "unsplash":
-		fmt.Println("Unsplash Source")
-		imgPath, err = getPathUnsplash(wall)
-	}
-
-	return imgPath, err
-}
-
-func getPathUnsplash(wall string) (string, error) {
-	var err error
-	var imgPath string
-
-	switch wall {
-	case "daily", "weekly":
-		unsplashAPI = fmt.Sprintf("%s/%s",
-			unsplashAPI, wall)
-	case "random":
-		unsplashAPI = fmt.Sprintf("%s/%sx%s",
-			unsplashAPI, strconv.Itoa(width), strconv.Itoa(height))
-	default:
-		return "", fmt.Errorf("Error: Unknown wall")
-	}
-
-	req, err := http.NewRequest(http.MethodGet, unsplashAPI, nil)
-	if err != nil {
-		return "", err
-	}
-
-	res, err := getRes(req)
-	if err != nil {
-		return "", err
-	}
-	defer res.Body.Close()
-
-	// Unsplash Source API will redirect to the image
-	imgPath = res.Request.URL.String()
-	return imgPath, err
-}
-
-// Calls feh to set the wallpaper
-func setWall(imgPath string) error {
-	feh, err := exec.LookPath("feh")
-	if err != nil {
-		fmt.Println("Error: feh is not in $PATH")
-		return err
-	}
-
-	fmt.Printf("Path to set as Wallpaper: %s\n", imgPath)
-
-	err = exec.Command(feh, "--bg-fill", imgPath).Run()
-	return err
-}
-
-func getRes(req *http.Request) (*http.Response, error) {
-	client := http.Client{
-		Timeout: time.Second * timeout,
-	}
-	res, err := client.Do(req)
-
-	return res, err
-}
-
-func errChk(err error) {
-	if err != nil {
-		log.Fatal(err)
-	}
-}